let ipc = null let logMessages = new Set() try { ipc = require('electron').ipcRenderer } 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 { /** Static log function. * @param {*} message */ static log(message) { if (ipc) { ipc.send('log', message) } else { console.log(message) } } /** * Static warn function. * Emits each warning only once per session. * @param {*} message */ static warn(message) { if (!logMessages.has(message)) { logMessages.add(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 (!logMessages.has(message)) { logMessages.add(message) if (ipc) { ipc.send('error', message) } else { console.error(message) } } } }