From 646d98588a3c4bcfc2e80fc61e2814bb69001b16 Mon Sep 17 00:00:00 2001 From: Tamius Han Date: Thu, 30 Jan 2020 23:17:43 +0100 Subject: [PATCH] logging fixes --- src/ext/lib/Logger.js | 13 +++++++-- src/ext/lib/comms/CommsClient.js | 9 +++++- src/ext/lib/comms/CommsServer.js | 49 ++++++++++++++++++-------------- src/ext/uw-bg.js | 8 ++++++ src/ext/uw.js | 1 + 5 files changed, 54 insertions(+), 26 deletions(-) diff --git a/src/ext/lib/Logger.js b/src/ext/lib/Logger.js index 5472599..ac03c03 100644 --- a/src/ext/lib/Logger.js +++ b/src/ext/lib/Logger.js @@ -416,19 +416,25 @@ class Logger { if (!this.conf.fileOptions?.enabled) { return; } - const exportObject = {'pageLogs': JSON.parse(JSON.stringify({...this.globalHistory}))}; + console.info("\n\n\n\n---------- Starting export of log to file ----------------"); exportObject['logger-settings'] = this.conf.fileOptions; exportObject['backgroundLog'] = JSON.parse(JSON.stringify(this.history)); exportObject['popupLog'] = 'NOT IMPLEMENTED'; - const blob = new Blob([JSON.stringify(exportObject)], {type: 'application/json'}); + console.info("[ ok ] ExportObject created"); + console.info("[info] json string for exportObject:", jsonString.length); + console.info("[ ok ] Blob created"); const fileUrl = URL.createObjectURL(blob); + console.info("[ ok ] fileUrl created"); try { - if (BrowserDetect.firefox) { + console.log("[info] inside try/catch block. BrowserDetect:", currentBrowser); + console.info("[info] we are using firefox"); await browser.permissions.request({permissions: ['downloads']}); + console.info("[ ok ] download permissions ok"); browser.downloads.download({saveAs: true, filename: 'extension-log.json', url: fileUrl}); } else if (BrowserDetect.chrome) { + console.info("[info] we are using chrome"); const ths = this; chrome.permissions.request( @@ -445,6 +451,7 @@ class Logger { this.globalHistory = {}; this.history = []; } catch (e) { + console.error("[fail] error while saving file.", e); this.downloadPermissionError = true; } } diff --git a/src/ext/lib/comms/CommsClient.js b/src/ext/lib/comms/CommsClient.js index 13965bf..25545ff 100644 --- a/src/ext/lib/comms/CommsClient.js +++ b/src/ext/lib/comms/CommsClient.js @@ -14,7 +14,14 @@ class CommsClient { } this.logger.onLogEnd( - (history) => this.port.postMessage({cmd: 'logging-stop-and-save', host: window.location.host, history}) + (history) => { + this.logger.log('info', 'comms', 'Sending logging-stop-and-save to background script ...'); + try { + this.port.postMessage({cmd: 'logging-stop-and-save', host: window.location.host, history}) + } catch (e) { + this.logger.log('error', 'comms', 'Failed to send message to background script. Error:', e); + } + } ); var ths = this; diff --git a/src/ext/lib/comms/CommsServer.js b/src/ext/lib/comms/CommsServer.js index 7687131..03d221b 100644 --- a/src/ext/lib/comms/CommsServer.js +++ b/src/ext/lib/comms/CommsServer.js @@ -55,7 +55,7 @@ class CommsServer { ], 'get-config': [ (message, port) => { - this.logger.log('info', 'CommsServer', "CommsServer: received get-config. Active settings?", this.settings.active, "\n(settings:", this.settings, ")"); + this.logger.log('info', 'comms', "CommsServer: received get-config. Active settings?", this.settings.active, "\n(settings:", this.settings, ")"); port.postMessage( {cmd: "set-config", conf: this.settings.active, site: this.server.currentSite} ); @@ -80,7 +80,7 @@ class CommsServer { (message, sender, sendResponse) => { if (BrowserDetect.firefox) { var ret = {extensionConf: JSON.stringify(this.settings.active)}; - this.logger.log('info', 'CommsServer', "%c[CommsServer.js::processMessage_nonpersistent] Returning this:", "background-color: #11D; color: #aad", ret); + this.logger.log('info', 'comms', "%c[CommsServer.js::processMessage_nonpersistent] Returning this:", "background-color: #11D; color: #aad", ret); Promise.resolve(ret); } else { sendResponse({extensionConf: JSON.stringify(this.settings.active)}); @@ -93,7 +93,7 @@ class CommsServer { this.settings.active.sites['@global'].autoar = "blacklist"; this.settings.save(); this.sendToAll({cmd: "reload-settings", sender: "uwbg"}) - this.logger.log('info', 'CommsServer', "[uw-bg] autoar set to enabled (blacklist). evidenz:", this.settings.active); + this.logger.log('info', 'comms', "[uw-bg] autoar set to enabled (blacklist). evidenz:", this.settings.active); } ], 'autoar-disable': [ @@ -106,12 +106,12 @@ class CommsServer { } this.settings.save(); this.sendToAll({cmd: 'reload-settings', newConf: this.settings.active}); - this.logger.log('info', 'CommsServer', "[uw-bg] autoar set to disabled. evidenz:", this.settings.active); + this.logger.log('info', 'comms', "[uw-bg] autoar set to disabled. evidenz:", this.settings.active); } ], 'autoar-set-interval': [ (message) => { - this.logger.log('info', 'CommsServer', `[uw-bg] trying to set new interval for autoAr. New interval is, ${message.timeout} ms`); + this.logger.log('info', 'comms', `[uw-bg] trying to set new interval for autoAr. New interval is, ${message.timeout} ms`); // set fairly liberal limit var timeout = message.timeout < 4 ? 4 : message.timeout; @@ -122,15 +122,15 @@ class CommsServer { ], 'logging-stop-and-save': [ // TODO: possibly never used/superseded — check (message, sender) => { - this.logger.log('info', 'CommsServer', "Received command to stop logging and export the received input"); - this.logger.addToGlobalHistory(`${message.host}::${sender.tab.id}-${sender.frameId}`, JSON.parse(message.history)); + this.logger.log('info', 'comms', "Received command to stop logging and export the received input"); + this.logger.addToGlobalHistory(`${message.host}::${sender?.tab?.id ?? '×'}-${sender.frameId ?? '×'}`, JSON.parse(message.history)); this.logger.finish(); } ], 'logging-save': [ (message, sender) => { - this.logger.log('info', 'CommsServer', `Received command to save log for site ${message.host} (tabId ${sender.tab.id}, frameId ${sender.frameId}`); - this.logger.addToGlobalHistory(`${message?.host}::${sender?.tab?.id}-${sender?.frameId}`, JSON.parse(message.history)); + this.logger.log('info', 'comms', `Received command to save log for site ${message.host} (tabId ${sender.tab.id}, frameId ${sender.frameId}`); + this.logger.addToGlobalHistory(`${message?.host}::${sender?.tab?.id ?? '×'}-${sender?.frameId ?? '×'}`, JSON.parse(message.history)); } ] } @@ -177,7 +177,7 @@ class CommsServer { } async sendToFrame(message, tab, frame) { - this.logger.log('info', 'CommsServer', `%c[CommsServer::sendToFrame] attempting to send message to tab ${tab}, frame ${frame}`, "background: #dda; color: #11D", message); + this.logger.log('info', 'comms', `%c[CommsServer::sendToFrame] attempting to send message to tab ${tab}, frame ${frame}`, "background: #dda; color: #11D", message); if (isNaN(tab)) { if (tab === '__playing') { @@ -191,23 +191,23 @@ class CommsServer { [tab, frame] = tab.split('-') } - this.logger.log('info', 'CommsServer', `%c[CommsServer::sendToFrame] attempting to send message to tab ${tab}, frame ${frame}`, "background: #dda; color: #11D", message); + this.logger.log('info', 'comms', `%c[CommsServer::sendToFrame] attempting to send message to tab ${tab}, frame ${frame}`, "background: #dda; color: #11D", message); try { this.ports[tab][frame].postMessage(message); } catch (e) { - this.logger.log('error', 'CommsServer', `%c[CommsServer::sendToFrame] Sending message failed. Reason:`, "background: #dda; color: #11D", e); + this.logger.log('error', 'comms', `%c[CommsServer::sendToFrame] Sending message failed. Reason:`, "background: #dda; color: #11D", e); } } async sendToActive(message) { - this.logger.log('info', 'CommsServer', "%c[CommsServer::sendToActive] trying to send a message to active tab. Message:", "background: #dda; color: #11D", message); + this.logger.log('info', 'comms', "%c[CommsServer::sendToActive] trying to send a message to active tab. Message:", "background: #dda; color: #11D", message); var tabs = await this._getActiveTab(); - this.logger.log('info', 'CommsServer', "[CommsServer::_sendToActive] currently active tab(s)?", tabs); + this.logger.log('info', 'comms', "[CommsServer::_sendToActive] currently active tab(s)?", tabs); for (var key in this.ports[tabs[0].id]) { - this.logger.log('info', 'CommsServer', "key?", key, this.ports[tabs[0].id]); + this.logger.log('info', 'comms', "key?", key, this.ports[tabs[0].id]); } for (var key in this.ports[tabs[0].id]) { @@ -242,26 +242,31 @@ class CommsServer { execCmd(message, portOrSender, sendResponse) { + this.logger.log( + 'info', 'comms', '[CommsServer.js::execCmd] Received message', message, + ". Port/sender:", portOrSender, "sendResponse:", sendResponse, "\nThere is ", this.commands[message.cmd].length, + " command(s) for action", message.cmd + ); for (const c of this.commands[message.cmd]) { c(message, portOrSender, sendResponse); } } async processReceivedMessage(message, port){ - this.logger.log('info', 'CommsServer', "[CommsServer.js::processReceivedMessage] Received message from popup/content script!", message, "port", port, "\nsettings and server:", this.settings,this.server); + this.logger.log('info', 'comms', "[CommsServer.js::processReceivedMessage] Received message from popup/content script!", message, "port", port, "\nsettings and server:", this.settings,this.server); if (message.forwardToContentScript) { - this.logger.log('info', 'CommsServer', "[CommsServer.js::processReceivedMessage] Message has 'forward to content script' flag set. Forwarding message as is. Message:", message); + this.logger.log('info', 'comms', "[CommsServer.js::processReceivedMessage] Message has 'forward to content script' flag set. Forwarding message as is. Message:", message); this.sendToFrame(message, message.targetTab, message.targetFrame); return; } if (message.forwardToAll) { - this.logger.log('info', 'CommsServer', "[CommsServer.js::processReceivedMessage] Message has 'forward to all' flag set. Forwarding message as is. Message:", message); + this.logger.log('info', 'comms', "[CommsServer.js::processReceivedMessage] Message has 'forward to all' flag set. Forwarding message as is. Message:", message); this.sendToAll(message); return; } if (message.forwardToActive) { - this.logger.log('info', 'CommsServer', "[CommsServer.js::processReceivedMessage] Message has 'forward to active' flag set. Forwarding message as is. Message:", message); + this.logger.log('info', 'comms', "[CommsServer.js::processReceivedMessage] Message has 'forward to active' flag set. Forwarding message as is. Message:", message); this.sendToActive(message); return; } @@ -270,11 +275,11 @@ class CommsServer { } processReceivedMessage_nonpersistent(message, sender, sendResponse){ - this.logger.log('info', 'CommsServer', "%c[CommsServer.js::processMessage_nonpersistent] Received message from background script!", "background-color: #11D; color: #aad", message, sender); + this.logger.log('info', 'comms', "%c[CommsServer.js::processMessage_nonpersistent] Received message from background script!", "background-color: #11D; color: #aad", message, sender); if (message.forwardToContentScript) { - this.logger.log('info', 'CommsServer', "[CommsServer.js::processMessage_nonpersistent] Message has 'forward to content script' flag set. Forwarding message as is. Message:", message); - this.logger.log('info', 'CommsServer', "[CommsServer.js::processMessage_nonpersistent] (btw we probably shouldn't be seeing this. This should prolly happen in persistent connection?"); + this.logger.log('info', 'comms', "[CommsServer.js::processMessage_nonpersistent] Message has 'forward to content script' flag set. Forwarding message as is. Message:", message); + this.logger.log('info', 'comms', "[CommsServer.js::processMessage_nonpersistent] (btw we probably shouldn't be seeing this. This should prolly happen in persistent connection?"); this.sendToFrame(message, message.targetFrame); return; diff --git a/src/ext/uw-bg.js b/src/ext/uw-bg.js index 7cf0d62..550e5ee 100644 --- a/src/ext/uw-bg.js +++ b/src/ext/uw-bg.js @@ -32,8 +32,16 @@ class UWServer { async setup() { // logger is the first thing that goes up const loggingOptions = { + isBackgroundScript: true, allowLogging: true, + useConfFromStorage: true, logAll: true, + fileOptions: { + enabled: true, + }, + consoleOptions: { + enabled: true + } }; this.logger = new Logger(); await this.logger.init(loggingOptions); diff --git a/src/ext/uw.js b/src/ext/uw.js index df3f1d4..bc476c3 100644 --- a/src/ext/uw.js +++ b/src/ext/uw.js @@ -43,6 +43,7 @@ class UW { try { if (!this.logger) { const loggingOptions = { + isContentScript: true, allowLogging: true, useConfFromStorage: true, fileOptions: {