Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | //import pino, { Logger } from 'pino' interface LoggerOptions { debug: boolean; logFilePath?: string; } // Stub for external logger module not provided. class LoggerStub { trace(...args: any[]): void { console.trace(...args) } debug(...args: any[]): void { console.debug(...args) } info(...args: any[]): void { console.info(...args) } error(...args: any[]): void { console.error(...args) } } export class LoggerService { private logger: any // for switching pino.Logger or LoggerStub private debug: boolean constructor(options: LoggerOptions) { this.debug = options.debug const transports = [] if (options.debug) { transports.push({ target: 'pino-pretty', options: { colorize: true, }, level: 'debug', }) } if (!!options.logFilePath) { transports.push({ target: 'pino/file', options: { destination: `@/../logs/${options.logFilePath}`, mkdir: true, }, level: this.debug ? 'trace' : 'info', }) } try { const pino = require('pino') this.logger = pino({ level: this.debug ? 'trace' : 'info', transport: { targets: transports, }, }) } catch (error) { //console.error('Failed to load pino:', error) this.logger = new LoggerStub() } } log(...message: unknown[]): void { if (this.debug) { this.logger.trace(...message as [unknown[]]) } else { this.logger.debug(...message as [unknown[]]) } } info(...message: unknown[]): void { this.logger.info(...message as [unknown[]]) } error(...message: unknown[]): void { this.logger.error(...message as [unknown[]]) } } export const devLogger = (): LoggerService => { return new LoggerService({ debug: process.env.NODE_ENV === 'development', logFilePath: 'dev-log.log', }) } |