94a5ff8a4a
We'll use it as cache in the future. /!\ You'll loose your old jobs (pending jobs too) so upgrade only when you don't have pending job anymore.
63 lines
1.6 KiB
TypeScript
Executable file
63 lines
1.6 KiB
TypeScript
Executable file
import { createReadStream } from 'fs'
|
|
import { join } from 'path'
|
|
import { createInterface } from 'readline'
|
|
import * as winston from 'winston'
|
|
import { labelFormatter } from '../server/helpers/logger'
|
|
import { CONFIG } from '../server/initializers/constants'
|
|
|
|
const excludedKeys = {
|
|
level: true,
|
|
message: true,
|
|
splat: true,
|
|
timestamp: true,
|
|
label: true
|
|
}
|
|
function keysExcluder (key, value) {
|
|
return excludedKeys[key] === true ? undefined : value
|
|
}
|
|
|
|
const loggerFormat = winston.format.printf((info) => {
|
|
let additionalInfos = JSON.stringify(info, keysExcluder, 2)
|
|
if (additionalInfos === '{}') additionalInfos = ''
|
|
else additionalInfos = ' ' + additionalInfos
|
|
|
|
return `[${info.label}] ${new Date(info.timestamp).toISOString()} ${info.level}: ${info.message}${additionalInfos}`
|
|
})
|
|
|
|
const logger = new winston.createLogger({
|
|
transports: [
|
|
new winston.transports.Console({
|
|
level: 'debug',
|
|
stderrLevels: [],
|
|
format: winston.format.combine(
|
|
winston.format.splat(),
|
|
labelFormatter,
|
|
winston.format.colorize(),
|
|
loggerFormat
|
|
)
|
|
})
|
|
],
|
|
exitOnError: true
|
|
})
|
|
|
|
const logLevels = {
|
|
error: logger.error.bind(logger),
|
|
warn: logger.warn.bind(logger),
|
|
info: logger.info.bind(logger),
|
|
debug: logger.debug.bind(logger)
|
|
}
|
|
|
|
const path = join(CONFIG.STORAGE.LOG_DIR, 'peertube.log')
|
|
console.log('Opening %s.', path)
|
|
|
|
const rl = createInterface({
|
|
input: createReadStream(path)
|
|
})
|
|
|
|
rl.on('line', line => {
|
|
const log = JSON.parse(line)
|
|
// Don't know why but loggerFormat does not remove splat key
|
|
Object.assign(log, { splat: undefined })
|
|
|
|
logLevels[log.level](log)
|
|
})
|