summaryrefslogtreecommitdiff
path: root/shared/logger/src/console.ts
blob: 408002b69b77aa99d58c0b611a190336ac8628ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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 '';
    }
}