diff options
Diffstat (limited to 'logging/logger.ts')
| -rw-r--r-- | logging/logger.ts | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/logging/logger.ts b/logging/logger.ts new file mode 100644 index 000000000..733b1fd09 --- /dev/null +++ b/logging/logger.ts @@ -0,0 +1,44 @@ +import { LogLevel, getLevelByName, getLevelName } from "./levels.ts"; + +export class Logger { + level: number; + levelName: string; + handlers: any[]; + + constructor(levelName, handlers) { + this.level = getLevelByName(levelName); + this.levelName = levelName; + this.handlers = handlers; + } + + _log(level, ...args) { + this.handlers.forEach(handler => { + handler.handle(level, ...args); + }); + } + + log(level, ...args) { + if (this.level > level) return; + return this._log(level, ...args); + } + + debug(...args) { + return this.log(LogLevel.DEBUG, ...args); + } + + info(...args) { + return this.log(LogLevel.INFO, ...args); + } + + warning(...args) { + return this.log(LogLevel.WARNING, ...args); + } + + error(...args) { + return this.log(LogLevel.ERROR, ...args); + } + + critical(...args) { + return this.log(LogLevel.CRITICAL, ...args); + } +} |
