summaryrefslogtreecommitdiff
path: root/logging/logger.ts
diff options
context:
space:
mode:
Diffstat (limited to 'logging/logger.ts')
-rw-r--r--logging/logger.ts44
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);
+ }
+}