From d0f5b70b1dfb74b432cf294ed2d5c180845c65c3 Mon Sep 17 00:00:00 2001 From: aje Date: Tue, 7 Mar 2023 13:40:21 +0800 Subject: [PATCH] Idempotent logging on browser Certain modules do not exist in a browser environment. In that environment, file-based appenders are effectively disabled by this commit, without modifying the source directly. --- lib/appenders/ignoreBrowser.js | 0 lib/clusteringBrowser.js | 19 +++++++++++++++++++ package.json | 8 +++++++- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 lib/appenders/ignoreBrowser.js create mode 100644 lib/clusteringBrowser.js diff --git a/lib/appenders/ignoreBrowser.js b/lib/appenders/ignoreBrowser.js new file mode 100644 index 0000000..e69de29 diff --git a/lib/clusteringBrowser.js b/lib/clusteringBrowser.js new file mode 100644 index 0000000..fcae301 --- /dev/null +++ b/lib/clusteringBrowser.js @@ -0,0 +1,19 @@ +/* istanbul ignore file */ +// This is used in browsers only and is designed to allow the rest of +// log4js to continue as if `clustering.js` is in use. +const isMaster = () => true; + +const listeners = []; + +const sendToListeners = (logEvent) => { + listeners.forEach((l) => l(logEvent)); +}; + +module.exports = { + onlyOnMaster: (fn, notMaster) => (isMaster() ? fn() : notMaster), + isMaster, + send: sendToListeners, + onMessage: (listener) => { + listeners.push(listener); + }, +}; diff --git a/package.json b/package.json index abe28e8..14a861c 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,13 @@ "typescript": "^4.9.5" }, "browser": { - "os": false + "os": false, + "streamroller": false, + "./lib/clustering.js": "./lib/clusteringBrowser.js", + "./lib/appenders/dateFile.js": "./lib/appenders/ignoreBrowser.js", + "./lib/appenders/file.js": "./lib/appenders/ignoreBrowser.js", + "./lib/appenders/fileSync.js": "./lib/appenders/ignoreBrowser.js", + "./lib/appenders/multiFile.js": "./lib/appenders/ignoreBrowser.js" }, "prettier": { "trailingComma": "es5",