Logging handlers can now be adapted to special needs
This commit is contained in:
Vendored
+50
-5
@@ -1545,14 +1545,34 @@
|
||||
|
||||
}
|
||||
|
||||
/* eslint-disable no-undef */
|
||||
/* eslint-disable no-console */
|
||||
/* eslint-disable no-unused-vars */
|
||||
let ipc = null;
|
||||
let logMessages = new Set();
|
||||
let logHandlers = {
|
||||
log: console.log,
|
||||
warn: console.warn,
|
||||
error: console.error
|
||||
};
|
||||
|
||||
try {
|
||||
ipc = require('electron').ipcRenderer;
|
||||
} catch (e) {}
|
||||
logHandlers.log = message => ipc.send('log', message);
|
||||
logHandlers.warn = message => ipc.send('warn', message);
|
||||
logHandlers.error = message => ipc.send('error', message);
|
||||
} 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, ...).
|
||||
*
|
||||
* The logging handlers can be overwritten by calling the static
|
||||
* setup method.
|
||||
*/
|
||||
class Logging {
|
||||
|
||||
@@ -1560,13 +1580,38 @@
|
||||
* @param {*} message
|
||||
*/
|
||||
static log(message) {
|
||||
logHandlers.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);
|
||||
logHandlers.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);
|
||||
logHandlers.error(message);
|
||||
}
|
||||
}
|
||||
|
||||
static setup({log=console.log, warn=console.warn, error=console.error} = {}) {
|
||||
logHandlers.log = log;
|
||||
logHandlers.warn = warn;
|
||||
logHandlers.error = error;
|
||||
}
|
||||
}
|
||||
|
||||
/* globals Hammer, propagating */
|
||||
|
||||
Reference in New Issue
Block a user