Parse log script can take files as args

pull/3467/head
Chocobozzz 2020-12-10 15:43:01 +01:00 committed by Chocobozzz
parent 0d9c2cc0a2
commit e078371807
3 changed files with 29 additions and 18 deletions

View File

@ -12,6 +12,7 @@ import { mtimeSortFilesDesc } from '../shared/core-utils/logs/logs'
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)')
.parse(process.argv)
const excludedKeys = {
@ -62,27 +63,27 @@ run()
function run () {
return new Promise(async res => {
const logFiles = await readdir(CONFIG.STORAGE.LOG_DIR)
const lastLogFile = await getNewestFile(logFiles, CONFIG.STORAGE.LOG_DIR)
const files = await getFiles()
const path = join(CONFIG.STORAGE.LOG_DIR, lastLogFile)
console.log('Opening %s.', path)
for (const file of files) {
console.log('Opening %s.', file)
const stream = createReadStream(path)
const stream = createReadStream(file)
const rl = createInterface({
input: stream
})
const rl = createInterface({
input: stream
})
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 })
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)
})
logLevels[log.level](log)
})
stream.once('close', () => res())
stream.once('close', () => res())
}
})
}
@ -93,6 +94,15 @@ async function getNewestFile (files: string[], basePath: string) {
return (sorted.length > 0) ? sorted[0].file : ''
}
async function getFiles () {
if (program['files']) return program['files']
const logFiles = await readdir(CONFIG.STORAGE.LOG_DIR)
const filename = await getNewestFile(logFiles, CONFIG.STORAGE.LOG_DIR)
return [ join(CONFIG.STORAGE.LOG_DIR, filename) ]
}
function toTimeFormat (time: string) {
const timestamp = Date.parse(time)

View File

@ -413,10 +413,10 @@ describe('Test live', function () {
await testVideoResolutions(liveVideoId, resolutions)
await stopFfmpeg(command)
await waitUntilLivePublished(servers[0].url, servers[0].accessToken, liveVideoId)
await waitJobs(servers)
await waitUntilLivePublished(servers[0].url, servers[0].accessToken, liveVideoId)
const bitrateLimits = {
720: 5000 * 1000, // 60FPS
360: 1100 * 1000,
@ -427,6 +427,7 @@ describe('Test live', function () {
const resVideo = await getVideo(server.url, liveVideoId)
const video: VideoDetails = resVideo.body
expect(video.state.id).to.equal(VideoState.PUBLISHED)
expect(video.duration).to.be.greaterThan(1)
expect(video.files).to.have.lengthOf(0)

View File

@ -302,7 +302,7 @@ describe('Test follows', function () {
})
it('Should upload a video on server 2 and 3 and propagate only the video of server 2', async function () {
this.timeout(35000)
this.timeout(60000)
await uploadVideo(servers[1].url, servers[1].accessToken, { name: 'server2' })
await uploadVideo(servers[2].url, servers[2].accessToken, { name: 'server3' })