diff --git a/packages/api/src/index.js b/packages/api/src/index.js index ed3529a42..8cdcde23f 100644 --- a/packages/api/src/index.js +++ b/packages/api/src/index.js @@ -31,7 +31,7 @@ function configureLogger() { setLoggerName('main'); const logger = createPinoLikeLogger({ - pid: process.pid, + base: { pid: process.pid }, targets: [ { type: 'console', diff --git a/packages/tools/src/getLogger.ts b/packages/tools/src/getLogger.ts index d18eefb8c..c834abcc4 100644 --- a/packages/tools/src/getLogger.ts +++ b/packages/tools/src/getLogger.ts @@ -3,7 +3,7 @@ import { createPinoLikeLogger, ILogger } from './pinomin'; let _logger: ILogger; let _name: string = null; const defaultLogger: ILogger = createPinoLikeLogger({ - pid: global?.process?.pid, + base: { pid: global?.process?.pid }, targets: [{ type: 'console', level: 'info' }], }); diff --git a/packages/tools/src/pinomin.ts b/packages/tools/src/pinomin.ts index df1e406f7..aa4544a75 100644 --- a/packages/tools/src/pinomin.ts +++ b/packages/tools/src/pinomin.ts @@ -1,141 +1,138 @@ export interface ILogger { - trace(msg: string); - trace(data: {} | Error, msg: string); - - debug(msg: string); - debug(data: {} | Error, msg: string); - - info(msg: string); - info(data: {} | Error, msg: string); - - warn(msg: string); - warn(data: {} | Error, msg: string); - - error(msg: string); - error(data: {} | Error, msg: string); - - fatal(msg: string); - fatal(data: {} | Error, msg: string); - - child(childProps: {}): ILogger; - log(record: ILogRecord); + trace(msg: string); + trace(data: {} | Error, msg: string); + + debug(msg: string); + debug(data: {} | Error, msg: string); + + info(msg: string); + info(data: {} | Error, msg: string); + + warn(msg: string); + warn(data: {} | Error, msg: string); + + error(msg: string); + error(data: {} | Error, msg: string); + + fatal(msg: string); + fatal(data: {} | Error, msg: string); + + child(childProps: {}): ILogger; + log(record: ILogRecord); +} + +export interface ILogRecord { + time: number; + level: number; + msg: string; + pid?: number; +} + +class PinoLikeLogger implements ILogger { + constructor(public config: ILogConfig) {} + + trace(msg: string); + trace(data: {} | Error, msg: string); + trace(data, msg?) { + this.log(this.packRecord(logLevelNumbers.trace, data, msg)); } - - export interface ILogRecord { - level: number; - msg: string; - pid: number; - time: number; + debug(msg: string); + debug(data: {} | Error, msg: string); + debug(data, msg?) { + this.log(this.packRecord(logLevelNumbers.debug, data, msg)); } - - class PinoLikeLogger implements ILogger { - constructor(public config: ILogConfig, public baseProps: {} = {}) {} - - trace(msg: string); - trace(data: {} | Error, msg: string); - trace(data, msg?) { - this.log(this.packRecord(logLevelNumbers.trace, data, msg)); - } - debug(msg: string); - debug(data: {} | Error, msg: string); - debug(data, msg?) { - this.log(this.packRecord(logLevelNumbers.debug, data, msg)); - } - info(msg: string); - info(data: {} | Error, msg: string); - info(data, msg?) { - this.log(this.packRecord(logLevelNumbers.info, data, msg)); - } - warn(msg: string); - warn(data: {} | Error, msg: string); - warn(data, msg?) { - this.log(this.packRecord(logLevelNumbers.warn, data, msg)); - } - error(msg: string); - error(data: {} | Error, msg: string); - error(data, msg?) { - this.log(this.packRecord(logLevelNumbers.error, data, msg)); - } - fatal(msg: string); - fatal(data: {} | Error, msg: string); - fatal(data, msg?) { - this.log(this.packRecord(logLevelNumbers.fatal, data, msg)); - } - - packRecord(level: number, data, msg?): ILogRecord { - if (msg) { - return { - ...this.baseProps, - ...data, - level, - msg, - pid: this.config.pid, - time: new Date().getTime(), - }; - } + info(msg: string); + info(data: {} | Error, msg: string); + info(data, msg?) { + this.log(this.packRecord(logLevelNumbers.info, data, msg)); + } + warn(msg: string); + warn(data: {} | Error, msg: string); + warn(data, msg?) { + this.log(this.packRecord(logLevelNumbers.warn, data, msg)); + } + error(msg: string); + error(data: {} | Error, msg: string); + error(data, msg?) { + this.log(this.packRecord(logLevelNumbers.error, data, msg)); + } + fatal(msg: string); + fatal(data: {} | Error, msg: string); + fatal(data, msg?) { + this.log(this.packRecord(logLevelNumbers.fatal, data, msg)); + } + + packRecord(level: number, data, msg?): ILogRecord { + if (msg) { return { - ...this.baseProps, + ...this.config.base, + ...data, level, - msg: data, - pid: this.config.pid, + msg, time: new Date().getTime(), - }; + }; } - - log(record: ILogRecord) { - for (const target of this.config.targets) { - if (record.level < logLevelNames[target.level]) { - continue; - } - switch (target.type) { - case 'console': - console.log(JSON.stringify(record)); - break; - case 'stream': - target.stream.write(JSON.stringify(record) + '\n'); - break; - } + return { + ...this.config.base, + level, + msg: data, + time: new Date().getTime(), + }; + } + + log(record: ILogRecord) { + for (const target of this.config.targets) { + if (record.level < logLevelNames[target.level]) { + continue; + } + switch (target.type) { + case 'console': + console.log(JSON.stringify(record)); + break; + case 'stream': + target.stream.write(JSON.stringify(record) + '\n'); + break; } } - - child(childProps: {}): ILogger { - return new PinoLikeLogger(this.config, { - ...this.baseProps, - ...childProps, - }); - } } - - export const logLevelNames = { - 10: 'trace', - 20: 'debug', - 30: 'info', - 40: 'warn', - 50: 'error', - 60: 'fatal', - }; - - export const logLevelNumbers = { - trace: 10, - debug: 20, - info: 30, - warn: 40, - error: 50, - fatal: 60, - }; - - interface ILogTargetConfig { - level: keyof typeof logLevelNumbers; - type: 'console' | 'stream'; - stream?: any; + + child(childProps: {}): ILogger { + return new PinoLikeLogger({ + ...this.config, + base: { ...this.config.base, ...childProps }, + }); } - - interface ILogConfig { - pid?: number; - targets: ILogTargetConfig[]; - } - - export function createPinoLikeLogger(config: ILogConfig): ILogger { - return new PinoLikeLogger(config); - } - \ No newline at end of file +} + +export const logLevelNames = { + 10: 'trace', + 20: 'debug', + 30: 'info', + 40: 'warn', + 50: 'error', + 60: 'fatal', +}; + +export const logLevelNumbers = { + trace: 10, + debug: 20, + info: 30, + warn: 40, + error: 50, + fatal: 60, +}; + +interface ILogTargetConfig { + level: keyof typeof logLevelNumbers; + type: 'console' | 'stream'; + stream?: any; +} + +interface ILogConfig { + base: {}; + targets: ILogTargetConfig[]; +} + +export function createPinoLikeLogger(config: ILogConfig): ILogger { + return new PinoLikeLogger(config); +}