logs: Limit the number of lines in log files.

Limits the numbers of lines in log files to 500.

Fixes a part of #727.
This commit is contained in:
ViPuL
2019-05-03 14:57:00 +05:30
committed by Akash Nimare
parent 7fa9c291cb
commit 1d713f1df2

View File

@@ -1,5 +1,6 @@
const NodeConsole = require('console').Console;
const fs = require('fs');
const os = require('os');
const isDev = require('electron-is-dev');
const { initSetUp } = require('./default-util');
const { sentryInit, captureException } = require('./sentry-util');
@@ -30,6 +31,13 @@ class Logger {
timestamp = this.getTimestamp;
}
// Trim log according to type of process
if (process.type === 'renderer') {
requestIdleCallback(() => this.trimLog(file));
} else {
process.nextTick(() => this.trimLog(file));
}
const fileStream = fs.createWriteStream(file, { flags: 'a' });
const nodeConsole = new NodeConsole(fileStream);
@@ -88,6 +96,24 @@ class Logger {
reportSentry(err) {
captureException(err);
}
trimLog(file) {
fs.readFile(file, 'utf8', (err, data) => {
if (err) {
throw err;
}
const MAX_LOG_FILE_LINES = 500;
const logs = data.split(os.EOL);
const logLength = logs.length - 1;
// Keep bottom MAX_LOG_FILE_LINES of each log instance
if (logLength > MAX_LOG_FILE_LINES) {
const trimmedLogs = logs.slice(logLength - MAX_LOG_FILE_LINES);
const toWrite = trimmedLogs.join(os.EOL);
fs.writeFileSync(file, toWrite);
}
});
}
}
module.exports = Logger;