Logging handlers can now be adapted to special needs
This commit is contained in:
+13
-2
@@ -8,15 +8,26 @@
|
||||
<link rel="stylesheet" href="../css/doctest.css">
|
||||
<script src="./3rdparty/highlight/highlight.pack.js"></script>
|
||||
<script src="../dist/iwmlib.3rdparty.js"></script>
|
||||
<script src="../dist/iwmlib.js"></script>
|
||||
<script src="../dist/iwmlib.js"></script>
|
||||
</head>
|
||||
|
||||
<body id="page" onload="Doctest.run()">
|
||||
<h1>
|
||||
Logging
|
||||
</h1>
|
||||
<p>Store informations of your app permanently.</p>
|
||||
<p>Store informations of your app permanently or use app specific logging functions.</p>
|
||||
<script class="doctest">
|
||||
Logging.log('app started')
|
||||
Logging.warn("shouldn't happen")
|
||||
Logging.error('restart')
|
||||
|
||||
Logging.setup({ log: message => console.log("app specific" + message) })
|
||||
Logging.log("now app related")
|
||||
</script>
|
||||
<p>You can overwrite the log, warn, and error handler by using Logging.setup with
|
||||
app specific functions.</p>
|
||||
<script class="doctest">
|
||||
Logging.setup({ log: message => console.log("app specific" + message) })
|
||||
Logging.log("now app related")
|
||||
</script>
|
||||
</body>
|
||||
+24
-17
@@ -1,10 +1,21 @@
|
||||
/* 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
|
||||
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.")
|
||||
console.log('Cannot use electron logging.')
|
||||
}
|
||||
|
||||
/** Basic class for app specific logging requirements.
|
||||
@@ -12,6 +23,9 @@ try {
|
||||
* 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.
|
||||
*/
|
||||
export default class Logging {
|
||||
|
||||
@@ -19,12 +33,7 @@ export default class Logging {
|
||||
* @param {*} message
|
||||
*/
|
||||
static log(message) {
|
||||
|
||||
if (ipc) {
|
||||
ipc.send('log', message)
|
||||
} else {
|
||||
console.log(message)
|
||||
}
|
||||
logHandlers.log(message)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -35,11 +44,7 @@ export default class Logging {
|
||||
static warn(message) {
|
||||
if (!logMessages.has(message)) {
|
||||
logMessages.add(message)
|
||||
if (ipc) {
|
||||
ipc.send('warn', message)
|
||||
} else {
|
||||
console.warn(message)
|
||||
}
|
||||
logHandlers.warn(message)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,11 +56,13 @@ export default class Logging {
|
||||
static error(message) {
|
||||
if (!logMessages.has(message)) {
|
||||
logMessages.add(message)
|
||||
if (ipc) {
|
||||
ipc.send('error', message)
|
||||
} else {
|
||||
console.error(message)
|
||||
}
|
||||
logHandlers.error(message)
|
||||
}
|
||||
}
|
||||
|
||||
static setup({log=console.log, warn=console.warn, error=console.error} = {}) {
|
||||
logHandlers.log = log
|
||||
logHandlers.warn = warn
|
||||
logHandlers.error = error
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user