/ shared / logger / src / console.ts
console.ts
 1  import { BaseLogger } from './base';
 2  import type { Level, LoggerFactory, Logger } from './types';
 3  import { shouldLog } from './local-storage-filter';
 4  
 5  export class ConsoleLoggerFactory implements LoggerFactory {
 6      loggerFor(name: string): Logger {
 7          return new ConsoleLogger(name);
 8      }
 9  }
10  
11  export class ConsoleLogger extends BaseLogger {
12      protected log(method: Level, ...args: unknown[]): string {
13          if (!shouldLog(this.name, method)) {
14              return '';
15          }
16  
17          const log = console[method];
18          const prefix = `[${this.name}]`;
19          const [firstArg, ...rest] = args;
20  
21          if (typeof firstArg === 'string') {
22              log(`${prefix} ${firstArg}`, ...rest);
23          } else {
24              log(prefix, ...args);
25          }
26  
27          return '';
28      }
29  }