diff --git a/pino/pino.d.ts b/pino/pino.d.ts index 3816ce0f17..73a8175afd 100644 --- a/pino/pino.d.ts +++ b/pino/pino.d.ts @@ -9,50 +9,114 @@ declare module 'pino' { import stream = require('stream') - interface Serializers { - req(req: Object): Object - res(res: Object): Object + type Level = 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' | 'silent' + type Headers = {[header: string]: string} + type LevelLabelsToValues = {[level: string]: number} + type LevelValuesToLabels = {[level: number]: string} + + interface RequestSummary { + pid: number + hostname: string + level: number + msg: string + time: string + v: number + req: { + method: string + url: string + headers: Headers + remoteAddress: string + remotePort: number + } } + interface ResponseSummary { + pid: number + hostname: string + level: number + msg: string + time: string + v: number + res: { + statusCode: number + header: string + } + } + + interface ErrorSummary { + pid: number + hostname: string + level: number + msg: string + time: number + v: number + type: string + stack: string + } + + interface Serializers { + req?: (req: any) => RequestSummary + res?: (res: any) => ResponseSummary + err?: (error: Error) => ErrorSummary + } interface LoggerOptions { - name?: string - enabled?: boolean + // avoid error causes by circular references in the object tree, default true safe?: boolean + // the name of the logger, default undefined + name?: string + // an object containing functions for custom serialization of objects. + // These functions should return an JSONifiable object and they should never throw serializers?: Serializers + // Outputs ISO time stamps ('2016-03-09T15:18:53.889Z') instead of Epoch time stamps (1457536759176). + // WARNING: This option carries a 25% performance drop, we recommend using default Epoch timestamps and transforming logs after if required. + // The pino -t command will do this for you (see CLI). default false. + slowtime?: boolean + // Enables extreme mode, yields an additional 60% performance (from 250ms down to 100ms per 10000 ops). + // There are trade-off's should be understood before usage. See Extreme mode explained. default false + extreme?: boolean + // enables logging, defaults to true. + enabled?: boolean + level?: Level } - interface Pino { - (): Logger - (options: LoggerOptions): Logger - (stream: stream.Writable): Logger + (optionsOrStream?: LoggerOptions | stream.Writable): Logger (options: LoggerOptions, stream: stream.Writable): Logger + levels: { + values: LevelLabelsToValues + labels: LevelValuesToLabels + } + LOG_VERSION: number + pretty(opts?: {timeTransOnly?: boolean}): stream.Readable + } - + type LevelChangeEventListener = (lvl: string, val: number, prevLvl: string, prevVal: number) => void + type LevelChangeEvent = 'level-change' interface Logger { - child(bindings: Object): this - level: string // 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' - fatal(msg: string, ...args : any[]): void - fatal(obj: Object, msg: string, ...args : any[]): void - fatal(obj: Object): void - error(msg: string, ...args : any[]): void - error(obj: Object, msg: string, ...args : any[]): void - error(obj: Object): void - warn(msg: string, ...args : any[]): void - warn(obj: Object, msg: string, ...args : any[]): void - warn(obj: Object): void + child(bindings: {}): Logger + level: Level + levelVal: number + on(event: LevelChangeEvent, listener: LevelChangeEventListener): void + fatal(obj: {}): void + fatal(obj: {}, msg?: string, ...args : any[]): void + error(obj: {}): void + error(obj: {}, msg?: string, ...args : any[]): void + warn(obj: {}): void + warn(obj: {}, msg?: string, ...args : any[]): void info(msg: string, ...args : any[]): void - info(obj: Object, msg: string, ...args : any[]): void - info(obj: Object): void - debug(msg: string, ...args : any[]): void - debug(obj: Object, msg: string, ...args : any[]): void - debug(obj: Object): void - trace(msg: string, ...args : any[]): void - trace(obj: Object, msg: string, ...args : any[]): void - trace(obj: Object): void + info(obj: {}, msg?: string, ...args : any[]): void + debug(obj: {}): void + debug(obj: {}, msg?: string, ...args : any[]): void + trace(obj: {}): void + trace(obj: {}, msg?: string, ...args : any[]): void + levels: { + values: LevelLabelsToValues + labels: LevelValuesToLabels + } + LOG_VERSION: number stdSerializers: Serializers }