import { Format, LoggerTransport, LogType } from '../logger'; import { LEVEL } from '../constants'; export const SPEC_CONSOLE_ARGS = 'specConsoleArgs'; export interface ConsoleTransportOptions { level?: LogType; format?: Format; } export class ConsoleTransport extends LoggerTransport { constructor(opts: ConsoleTransportOptions = {}) { super({ ...opts, name: 'ConsoleTransport', batchConsume: false, }); } protected log(log, cb) { let fn = console.log; if (typeof console[log[LEVEL]] === 'function') { fn = console[log[LEVEL]]; } const specLogArgs = log[SPEC_CONSOLE_ARGS]; /** * @notice 调用方可通过format函数定制打印的内容,给健"SPEC_CONSOLE_ARGS"设置值为数组 * */ if (Array.isArray(specLogArgs) && specLogArgs.length) { fn.apply(console, specLogArgs); } else { fn.call(console, log.message); } cb(); } }