aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2020-12-10 15:43:01 +0100
committerChocobozzz <chocobozzz@cpy.re>2020-12-14 09:11:27 +0100
commite0783718079c1fcb6554ea20e762cfb0592de5b0 (patch)
tree8a13865dde332bd0e5dbe4fa6c5b1ac395237d32 /scripts
parent0d9c2cc0a2983b678bc839fe95b90cb7781b8149 (diff)
downloadPeerTube-e0783718079c1fcb6554ea20e762cfb0592de5b0.tar.gz
PeerTube-e0783718079c1fcb6554ea20e762cfb0592de5b0.tar.zst
PeerTube-e0783718079c1fcb6554ea20e762cfb0592de5b0.zip
Parse log script can take files as args
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/parse-log.ts40
1 files changed, 25 insertions, 15 deletions
diff --git a/scripts/parse-log.ts b/scripts/parse-log.ts
index 58e052b9f..410da3c61 100755
--- a/scripts/parse-log.ts
+++ b/scripts/parse-log.ts
@@ -12,6 +12,7 @@ import { mtimeSortFilesDesc } from '../shared/core-utils/logs/logs'
12 12
13program 13program
14 .option('-l, --level [level]', 'Level log (debug/info/warn/error)') 14 .option('-l, --level [level]', 'Level log (debug/info/warn/error)')
15 .option('-f, --files [file...]', 'Files to parse. If not provided, the script will parse the latest log file from config)')
15 .parse(process.argv) 16 .parse(process.argv)
16 17
17const excludedKeys = { 18const excludedKeys = {
@@ -62,27 +63,27 @@ run()
62 63
63function run () { 64function run () {
64 return new Promise(async res => { 65 return new Promise(async res => {
65 const logFiles = await readdir(CONFIG.STORAGE.LOG_DIR) 66 const files = await getFiles()
66 const lastLogFile = await getNewestFile(logFiles, CONFIG.STORAGE.LOG_DIR)
67 67
68 const path = join(CONFIG.STORAGE.LOG_DIR, lastLogFile) 68 for (const file of files) {
69 console.log('Opening %s.', path) 69 console.log('Opening %s.', file)
70 70
71 const stream = createReadStream(path) 71 const stream = createReadStream(file)
72 72
73 const rl = createInterface({ 73 const rl = createInterface({
74 input: stream 74 input: stream
75 }) 75 })
76 76
77 rl.on('line', line => { 77 rl.on('line', line => {
78 const log = JSON.parse(line) 78 const log = JSON.parse(line)
79 // Don't know why but loggerFormat does not remove splat key 79 // Don't know why but loggerFormat does not remove splat key
80 Object.assign(log, { splat: undefined }) 80 Object.assign(log, { splat: undefined })
81 81
82 logLevels[log.level](log) 82 logLevels[log.level](log)
83 }) 83 })
84 84
85 stream.once('close', () => res()) 85 stream.once('close', () => res())
86 }
86 }) 87 })
87} 88}
88 89
@@ -93,6 +94,15 @@ async function getNewestFile (files: string[], basePath: string) {
93 return (sorted.length > 0) ? sorted[0].file : '' 94 return (sorted.length > 0) ? sorted[0].file : ''
94} 95}
95 96
97async function getFiles () {
98 if (program['files']) return program['files']
99
100 const logFiles = await readdir(CONFIG.STORAGE.LOG_DIR)
101
102 const filename = await getNewestFile(logFiles, CONFIG.STORAGE.LOG_DIR)
103 return [ join(CONFIG.STORAGE.LOG_DIR, filename) ]
104}
105
96function toTimeFormat (time: string) { 106function toTimeFormat (time: string) {
97 const timestamp = Date.parse(time) 107 const timestamp = Date.parse(time)
98 108