49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import LogLevel from './typings/LogLevel';
|
|
import Transport from './typings/Transport';
|
|
|
|
export class Logger {
|
|
private transports: Transport[];
|
|
|
|
constructor(transports: Transport[] = []) {
|
|
this.transports = transports;
|
|
}
|
|
|
|
attach(transport: Transport) {
|
|
this.transports.push(transport);
|
|
}
|
|
|
|
async log(level: LogLevel, module: string, content: string): Promise<void> {
|
|
const tasks: Promise<void>[] = [];
|
|
|
|
for (const transport of this.transports) {
|
|
if (!transport.minLevel || level >= transport.minLevel) {
|
|
tasks.push(transport.log(level, module, content));
|
|
}
|
|
}
|
|
|
|
await Promise.all(tasks);
|
|
}
|
|
|
|
debug(module: string, content: string) {
|
|
this.log(LogLevel.Debug, module, content);
|
|
}
|
|
|
|
info(module: string, content: string) {
|
|
return this.log(LogLevel.Information, module, content);
|
|
}
|
|
|
|
warn(module: string, content: string) {
|
|
return this.log(LogLevel.Warning, module, content);
|
|
}
|
|
|
|
error(module: string, content: string) {
|
|
return this.log(LogLevel.Error, module, content);
|
|
}
|
|
|
|
fatal(module: string, content: string) {
|
|
return this.log(LogLevel.Fatal, module, content);
|
|
}
|
|
}
|
|
|
|
export default Logger;
|