summaryrefslogtreecommitdiff
path: root/shared/logger/src/console.ts
diff options
context:
space:
mode:
Diffstat (limited to 'shared/logger/src/console.ts')
-rw-r--r--shared/logger/src/console.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/shared/logger/src/console.ts b/shared/logger/src/console.ts
new file mode 100644
index 0000000..408002b
--- /dev/null
+++ b/shared/logger/src/console.ts
@@ -0,0 +1,29 @@
+import { BaseLogger } from './base';
+import type { Level, LoggerFactory, Logger } from './types';
+import { shouldLog } from './local-storage-filter';
+
+export class ConsoleLoggerFactory implements LoggerFactory {
+ loggerFor(name: string): Logger {
+ return new ConsoleLogger(name);
+ }
+}
+
+export class ConsoleLogger extends BaseLogger {
+ protected log(method: Level, ...args: unknown[]): string {
+ if (!shouldLog(this.name, method)) {
+ return '';
+ }
+
+ const log = console[method];
+ const prefix = `[${this.name}]`;
+ const [firstArg, ...rest] = args;
+
+ if (typeof firstArg === 'string') {
+ log(`${prefix} ${firstArg}`, ...rest);
+ } else {
+ log(prefix, ...args);
+ }
+
+ return '';
+ }
+}