1
0
Fork 0
mirror of https://github.com/Chocobozzz/PeerTube.git synced 2025-10-03 17:59:37 +02:00

Introduce tags to the logger

That could help to filter unneeded logs and/or select particular
components
This commit is contained in:
Chocobozzz 2021-03-05 13:26:02 +01:00
parent d007175238
commit 452b3bea08
No known key found for this signature in database
GPG key ID: 583A612D890159BE
8 changed files with 66 additions and 23 deletions

View file

@ -15,6 +15,8 @@ import { format as sqlFormat } from 'sql-formatter'
program
.option('-l, --level [level]', 'Level log (debug/info/warn/error)')
.option('-f, --files [file...]', 'Files to parse. If not provided, the script will parse the latest log file from config)')
.option('-t, --tags [tags...]', 'Display only lines with these tags')
.option('-nt, --not-tags [tags...]', 'Donrt display lines containing these tags')
.parse(process.argv)
const options = program.opts()
@ -24,6 +26,7 @@ const excludedKeys = {
message: true,
splat: true,
timestamp: true,
tags: true,
label: true,
sql: true
}
@ -93,6 +96,14 @@ function run () {
rl.on('line', line => {
try {
const log = JSON.parse(line)
if (options.tags && !containsTags(log.tags, options.tags)) {
return
}
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 })
@ -131,3 +142,15 @@ function toTimeFormat (time: string) {
return new Date(timestamp).toISOString()
}
function containsTags (loggerTags: string[], optionsTags: string[]) {
if (!loggerTags) return false
for (const lt of loggerTags) {
for (const ot of optionsTags) {
if (lt === ot) return true
}
}
return false
}