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 | import type { TransformableInfo } from '../format' import type { LogEntry } from '../type' import type { TransportBaseOptions, TransportErrorCallback } from './type' import os from 'node:os' import { ColorStringRE } from '@https-enable/utils' import { levels } from '../format' import { configs } from '../triple-beam' export abstract class Transport<T extends TransportBaseOptions> { public level?: LogEntry['level'] protected eol?: string protected name?: string protected levels: Record<string, number> protected options: T constructor(options: T) { this.options = options this.name = options.name this.level = options.level this.levels = options.levels || levels(configs.npm).levels this.eol = typeof options.eol === 'string' ? options.eol : os.EOL } // 判断是否满足日志级别要求 protected shouldLog(level: string, force = false) { level = level.replace(ColorStringRE, '') const levels = Object.keys(this.levels).reverse() return force || levels.indexOf(level) >= levels.indexOf(this.level || 'INFO') } // 使用局部format protected selfFormat(options?: { level: LogEntry['level'], message: string }) { if (this.options.format && options) { return this.options.format.transform(options) } } // 日志输出抽象定义 public abstract log(info: TransformableInfo, callback?: TransportErrorCallback, options?: { level: LogEntry['level'], message: string }, force?: boolean): void } |