From 54a1e74e2762dff48cf169bd25c5bcc977f31df0 Mon Sep 17 00:00:00 2001 From: Uwe Oestermeier Date: Tue, 18 Jun 2019 09:00:05 +0200 Subject: [PATCH] Added message cache to prevent error overflows. --- lib/logging.js | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/lib/logging.js b/lib/logging.js index 63f3846..eed4b14 100644 --- a/lib/logging.js +++ b/lib/logging.js @@ -1,11 +1,17 @@ let ipc = null +let logMessages = new Set() try { ipc = require('electron').ipcRenderer -} catch (e) {} +} catch (e) { + console.log("Cannot use electron logging.") +} /** Basic class for app specific logging requirements. * Can be used to implement persistent logging in electron apps. + * Uses a logMessage cache to prevent error overflows. This is + * needed since errors may occur very frequently + * (e.g. display update loops at 60fps, programmatic loops, ...). */ export default class Logging { @@ -21,19 +27,33 @@ export default class Logging { } } + /** + * Static warn function. + * Emits each warning only once per session. + * @param {*} message + */ static warn(message) { - if (ipc) { - ipc.send('warn', message) - } else { - console.warn(message) + if (!logMessages.has(message)) { + if (ipc) { + ipc.send('warn', message) + } else { + console.warn(message) + } } } + /** + * Static error function. + * Emits each error message only once per session. + * @param {*} message + */ static error(message) { - if (ipc) { - ipc.send('error', message) - } else { - console.error(message) + if (!logMessages.has(message)) { + if (ipc) { + ipc.send('error', message) + } else { + console.error(message) + } } } }