You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.2 KiB
95 lines
2.2 KiB
'use strict' |
|
|
|
module.exports = pino |
|
|
|
var _console = global.console || {} |
|
function Pino () {} |
|
Pino.prototype = _console |
|
|
|
function pino (opts) { |
|
opts = opts || {} |
|
var level = opts.level || 'info' |
|
var val = pino.levels.values[level] |
|
var logger = new Pino() |
|
if (!logger.log) logger.log = noop |
|
|
|
set(logger, val, 'error', 'log') // <-- must stay first |
|
set(logger, val, 'fatal', 'error') |
|
set(logger, val, 'warn', 'error') |
|
set(logger, val, 'info', 'log') |
|
set(logger, val, 'debug', 'log') |
|
set(logger, val, 'trace', 'log') |
|
|
|
logger.setMaxListeners = logger.getMaxListeners = |
|
logger.emit = logger.addListener = logger.on = |
|
logger.prependListener = logger.once = |
|
logger.prependOnceListener = logger.removeListener = |
|
logger.removeAllListeners = logger.listeners = |
|
logger.listenerCount = logger.eventNames = |
|
logger.write = logger.flush = noop |
|
|
|
logger.child = function child (bindings) { |
|
if (!bindings) { |
|
throw new Error('missing bindings for child Pino') |
|
} |
|
function Child (parent) { |
|
this.error = bind(parent, bindings, 'error') |
|
this.fatal = bind(parent, bindings, 'fatal') |
|
this.warn = bind(parent, bindings, 'warn') |
|
this.info = bind(parent, bindings, 'info') |
|
this.debug = bind(parent, bindings, 'debug') |
|
this.trace = bind(parent, bindings, 'trace') |
|
} |
|
Child.prototype = this |
|
return new Child(this) |
|
} |
|
logger.levels = pino.levels |
|
return logger |
|
} |
|
|
|
pino._Pino = Pino |
|
pino.LOG_VERSION = 1 |
|
|
|
pino.levels = { |
|
values: { |
|
fatal: 60, |
|
error: 50, |
|
warn: 40, |
|
info: 30, |
|
debug: 20, |
|
trace: 10 |
|
}, |
|
labels: { |
|
'10': 'trace', |
|
'20': 'debug', |
|
'30': 'info', |
|
'40': 'warn', |
|
'50': 'error', |
|
'60': 'fatal' |
|
} |
|
} |
|
|
|
pino.stdSerializers = { |
|
req: mock, |
|
res: mock, |
|
err: mock |
|
} |
|
|
|
function bind (parent, bindings, level) { |
|
return function () { |
|
var args = new Array(1 + arguments.length) |
|
args[0] = bindings |
|
for (var i = 1; i < args.length; i++) { |
|
args[i] = arguments[i - 1] |
|
} |
|
return parent[level].apply(null, args) |
|
} |
|
} |
|
|
|
function set (logger, val, level, fallback) { |
|
logger[level] = val > pino.levels.values[level] ? noop |
|
: (logger[level] ? logger[level] : (_console[fallback] || noop)) |
|
} |
|
|
|
function mock () { return {} } |
|
function noop () {}
|
|
|