mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-08-02 01:05:25 +02:00
Fix: Daily log file not adding newlines to logs, Add: Config log page loads last 5000 logs for the current day #72
This commit is contained in:
parent
6ccde8f66f
commit
8ca6c62a03
8 changed files with 87 additions and 54 deletions
|
@ -4,7 +4,6 @@ const fs = require('fs-extra')
|
|||
const DailyLog = require('./objects/DailyLog')
|
||||
|
||||
const Logger = require('./Logger')
|
||||
const { getFileSize } = require('./utils/fileUtils')
|
||||
|
||||
const TAG = '[LogManager]'
|
||||
|
||||
|
@ -50,14 +49,16 @@ class LogManager {
|
|||
|
||||
if (this.dailyLogFiles.includes(currentDailyLogFilename)) {
|
||||
Logger.debug(TAG, `Daily log file already exists - set in Logger`)
|
||||
this.currentDailyLog.loadLogs()
|
||||
await this.currentDailyLog.loadLogs()
|
||||
} else {
|
||||
this.dailyLogFiles.push(this.currentDailyLog.filename)
|
||||
}
|
||||
|
||||
// Log buffered Logs
|
||||
if (this.dailyLogBuffer.length) {
|
||||
this.dailyLogBuffer.forEach((logObj) => this.currentDailyLog.appendLog(logObj))
|
||||
this.dailyLogBuffer.forEach((logObj) => {
|
||||
this.currentDailyLog.appendLog(logObj)
|
||||
})
|
||||
this.dailyLogBuffer = []
|
||||
}
|
||||
}
|
||||
|
@ -68,7 +69,7 @@ class LogManager {
|
|||
if (dailyFiles && dailyFiles.length) {
|
||||
dailyFiles.forEach((logFile) => {
|
||||
if (Path.extname(logFile) === '.txt') {
|
||||
Logger.info('Daily Log file found', logFile)
|
||||
Logger.debug('Daily Log file found', logFile)
|
||||
this.dailyLogFiles.push(logFile)
|
||||
} else {
|
||||
Logger.debug(TAG, 'Unknown File in Daily log files dir', logFile)
|
||||
|
@ -120,5 +121,14 @@ class LogManager {
|
|||
// Append log line to log file
|
||||
this.currentDailyLog.appendLog(logObj)
|
||||
}
|
||||
|
||||
socketRequestDailyLogs(socket) {
|
||||
if (!this.currentDailyLog) {
|
||||
return
|
||||
}
|
||||
|
||||
var lastLogs = this.currentDailyLog.logs.slice(-5000)
|
||||
socket.emit('daily_logs', lastLogs)
|
||||
}
|
||||
}
|
||||
module.exports = LogManager
|
|
@ -3,7 +3,7 @@ const { LogLevel } = require('./utils/constants')
|
|||
class Logger {
|
||||
constructor() {
|
||||
this.logLevel = process.env.NODE_ENV === 'production' ? LogLevel.INFO : LogLevel.TRACE
|
||||
this.logFileLevel = LogLevel.INFO
|
||||
// this.logFileLevel = LogLevel.INFO
|
||||
this.socketListeners = []
|
||||
|
||||
this.logManager = null
|
||||
|
@ -60,7 +60,7 @@ class Logger {
|
|||
level
|
||||
}
|
||||
|
||||
if (level >= this.logFileLevel && this.logManager) {
|
||||
if (level >= this.logLevel && this.logManager) {
|
||||
this.logManager.logToFile(logObj)
|
||||
}
|
||||
|
||||
|
|
|
@ -260,6 +260,7 @@ class Server {
|
|||
|
||||
// Logs
|
||||
socket.on('set_log_listener', (level) => Logger.addSocketListener(socket, level))
|
||||
socket.on('fetch_daily_logs', () => this.logManager.socketRequestDailyLogs(socket))
|
||||
|
||||
// Backups
|
||||
socket.on('create_backup', () => this.backupManager.requestCreateBackup(socket))
|
||||
|
|
|
@ -60,15 +60,14 @@ class DailyLog {
|
|||
|
||||
var oneBigLog = ''
|
||||
buffered.forEach((logLine) => {
|
||||
oneBigLog += logLine + '\n'
|
||||
oneBigLog += logLine
|
||||
})
|
||||
|
||||
this.appendLogLine(oneBigLog)
|
||||
}
|
||||
|
||||
async appendLog(logObj) {
|
||||
this.logs.push(logObj)
|
||||
var line = JSON.stringify(logObj)
|
||||
var line = JSON.stringify(logObj) + '\n'
|
||||
this.appendLogLine(line)
|
||||
}
|
||||
|
||||
|
@ -97,16 +96,31 @@ class DailyLog {
|
|||
}
|
||||
|
||||
var text = await readTextFile(this.fullPath)
|
||||
|
||||
var hasFailures = false
|
||||
|
||||
this.logs = text.split(/\r?\n/).map(t => {
|
||||
if (!t) {
|
||||
hasFailures = true
|
||||
return null
|
||||
}
|
||||
try {
|
||||
return JSON.parse(t)
|
||||
} catch (err) {
|
||||
console.error('Failed to parse log line', t, err)
|
||||
hasFailures = true
|
||||
return null
|
||||
}
|
||||
}).filter(l => !!l)
|
||||
|
||||
Logger.info(`[DailyLog] ${this.id}: Loaded ${this.logs.length} Logs`)
|
||||
// Rewrite log file to remove errors
|
||||
if (hasFailures) {
|
||||
var newLogLines = this.logs.map(l => JSON.stringify(l)).join('\n') + '\n'
|
||||
await fs.writeFile(this.fullPath, newLogLines)
|
||||
console.log('Re-Saved log file to remove bad lines')
|
||||
}
|
||||
|
||||
Logger.debug(`[DailyLog] ${this.id}: Loaded ${this.logs.length} Logs`)
|
||||
}
|
||||
}
|
||||
module.exports = DailyLog
|
Loading…
Add table
Add a link
Reference in a new issue