Fiw winston meta log

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