summaryrefslogtreecommitdiff
path: root/logging/logger.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2018-12-19 19:16:45 +0100
committerRyan Dahl <ry@tinyclouds.org>2018-12-19 13:16:45 -0500
commit6624584dd476f0f261376e7c625a318049d2bd83 (patch)
treeea59dade4e002f69e28df6ec696a86a37fc95821 /logging/logger.ts
parent700b4ce0d99dca02fe192c8722ab1bb7a33dc709 (diff)
Add logging module (denoland/deno_std#33)
Original: https://github.com/denoland/deno_std/commit/25b88bcf8c260865d2b6b68f539c4772bac095ee
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);
+ }
+}