Fix log parser with multiple files

pull/5138/head
Chocobozzz 2022-07-12 16:21:13 +02:00
parent f686f5ed0a
commit 5220859984
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 34 additions and 30 deletions

View File

@ -76,44 +76,48 @@ run()
.then(() => process.exit(0)) .then(() => process.exit(0))
.catch(err => console.error(err)) .catch(err => console.error(err))
function run () { async function run () {
return new Promise<void>(async res => { const files = await getFiles()
const files = await getFiles()
for (const file of files) { for (const file of files) {
if (file === 'peertube-audit.log') continue if (file === 'peertube-audit.log') continue
console.log('Opening %s.', file) await readFile(file)
}
}
const stream = createReadStream(file) function readFile (file: string) {
console.log('Opening %s.', file)
const rl = createInterface({ const stream = createReadStream(file)
input: stream
})
rl.on('line', line => { const rl = createInterface({
try { input: stream
const log = JSON.parse(line) })
if (options.tags && !containsTags(log.tags, options.tags)) {
return
}
if (options.notTags && containsTags(log.tags, options.notTags)) { return new Promise<void>(res => {
return rl.on('line', line => {
} try {
const log = JSON.parse(line)
// Don't know why but loggerFormat does not remove splat key if (options.tags && !containsTags(log.tags, options.tags)) {
Object.assign(log, { splat: undefined }) return
logLevels[log.level](log)
} catch (err) {
console.error('Cannot parse line.', inspect(line))
throw err
} }
})
stream.once('close', () => res()) if (options.notTags && containsTags(log.tags, options.notTags)) {
} return
}
// Don't know why but loggerFormat does not remove splat key
Object.assign(log, { splat: undefined })
logLevels[log.level](log)
} catch (err) {
console.error('Cannot parse line.', inspect(line))
throw err
}
})
stream.once('close', () => res())
}) })
} }