Fiw winston meta log

This commit is contained in:
Chocobozzz 2018-07-30 10:59:31 +02:00
parent 655b549048
commit e20015d744
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 17 additions and 25 deletions

View File

@ -90,4 +90,4 @@ function getNewestFile (files: string[], basePath: string) {
out.sort((a, b) => b.mtime - a.mtime) out.sort((a, b) => b.mtime - a.mtime)
return (out.length > 0) ? out[ 0 ].file : '' return (out.length > 0) ? out[ 0 ].file : ''
} }

View File

@ -9,36 +9,28 @@ const label = CONFIG.WEBSERVER.HOSTNAME + ':' + CONFIG.WEBSERVER.PORT
// Create the directory if it does not exist // Create the directory if it does not exist
mkdirp.sync(CONFIG.STORAGE.LOG_DIR) mkdirp.sync(CONFIG.STORAGE.LOG_DIR)
// Use object for better performances (~ O(1)) function loggerReplacer (key: string, value: any) {
const excludedKeys = { if (value instanceof Error) {
level: true, const error = {}
message: true,
splat: true,
timestamp: true,
label: true
}
function keysExcluder (key, value) {
if (excludedKeys[key] === true) return undefined
if (key === 'err') return value.stack Object.getOwnPropertyNames(value).forEach(key => error[ key ] = value[ key ])
return error
}
return value return value
} }
const consoleLoggerFormat = winston.format.printf(info => { const consoleLoggerFormat = winston.format.printf(info => {
let additionalInfos = JSON.stringify(info, keysExcluder, 2) let additionalInfos = JSON.stringify(info.meta, loggerReplacer, 2)
if (additionalInfos === '{}') additionalInfos = '' if (additionalInfos === undefined || additionalInfos === '{}') additionalInfos = ''
else additionalInfos = ' ' + additionalInfos else additionalInfos = ' ' + additionalInfos
return `[${info.label}] ${info.timestamp} ${info.level}: ${info.message}${additionalInfos}` return `[${info.label}] ${info.timestamp} ${info.level}: ${info.message}${additionalInfos}`
}) })
const jsonLoggerFormat = winston.format.printf(infoArg => { const jsonLoggerFormat = winston.format.printf(info => {
let info = infoArg.err return JSON.stringify(info, loggerReplacer)
? Object.assign({}, infoArg, { err: infoArg.err.stack })
: infoArg
return JSON.stringify(info)
}) })
const timestampFormatter = winston.format.timestamp({ const timestampFormatter = winston.format.timestamp({
@ -50,16 +42,18 @@ const labelFormatter = winston.format.label({
const logger = winston.createLogger({ const logger = winston.createLogger({
level: CONFIG.LOG.LEVEL, level: CONFIG.LOG.LEVEL,
format: winston.format.combine(
labelFormatter,
winston.format.splat()
),
transports: [ transports: [
new winston.transports.File({ new winston.transports.File({
filename: path.join(CONFIG.STORAGE.LOG_DIR, 'peertube.log'), filename: path.join(CONFIG.STORAGE.LOG_DIR, 'peertube.log'),
handleExceptions: true, handleExceptions: true,
maxsize: 5242880, maxsize: 1024 * 1024 * 30,
maxFiles: 5, maxFiles: 5,
format: winston.format.combine( format: winston.format.combine(
winston.format.timestamp(), winston.format.timestamp(),
labelFormatter,
winston.format.splat(),
jsonLoggerFormat jsonLoggerFormat
) )
}), }),
@ -67,8 +61,6 @@ const logger = winston.createLogger({
handleExceptions: true, handleExceptions: true,
format: winston.format.combine( format: winston.format.combine(
timestampFormatter, timestampFormatter,
winston.format.splat(),
labelFormatter,
winston.format.colorize(), winston.format.colorize(),
consoleLoggerFormat consoleLoggerFormat
) )