logging fixes

This commit is contained in:
Tamius Han 2020-01-30 23:17:43 +01:00
parent 5890192751
commit 646d98588a
5 changed files with 54 additions and 26 deletions

View File

@ -416,19 +416,25 @@ class Logger {
if (!this.conf.fileOptions?.enabled) { if (!this.conf.fileOptions?.enabled) {
return; 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['logger-settings'] = this.conf.fileOptions;
exportObject['backgroundLog'] = JSON.parse(JSON.stringify(this.history)); exportObject['backgroundLog'] = JSON.parse(JSON.stringify(this.history));
exportObject['popupLog'] = 'NOT IMPLEMENTED'; 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); const fileUrl = URL.createObjectURL(blob);
console.info("[ ok ] fileUrl created");
try { 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']}); await browser.permissions.request({permissions: ['downloads']});
console.info("[ ok ] download permissions ok");
browser.downloads.download({saveAs: true, filename: 'extension-log.json', url: fileUrl}); browser.downloads.download({saveAs: true, filename: 'extension-log.json', url: fileUrl});
} else if (BrowserDetect.chrome) { } else if (BrowserDetect.chrome) {
console.info("[info] we are using chrome");
const ths = this; const ths = this;
chrome.permissions.request( chrome.permissions.request(
@ -445,6 +451,7 @@ class Logger {
this.globalHistory = {}; this.globalHistory = {};
this.history = []; this.history = [];
} catch (e) { } catch (e) {
console.error("[fail] error while saving file.", e);
this.downloadPermissionError = true; this.downloadPermissionError = true;
} }
} }

View File

@ -14,7 +14,14 @@ class CommsClient {
} }
this.logger.onLogEnd( 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; var ths = this;

View File

@ -55,7 +55,7 @@ class CommsServer {
], ],
'get-config': [ 'get-config': [
(message, port) => { (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( port.postMessage(
{cmd: "set-config", conf: this.settings.active, site: this.server.currentSite} {cmd: "set-config", conf: this.settings.active, site: this.server.currentSite}
); );
@ -80,7 +80,7 @@ class CommsServer {
(message, sender, sendResponse) => { (message, sender, sendResponse) => {
if (BrowserDetect.firefox) { if (BrowserDetect.firefox) {
var ret = {extensionConf: JSON.stringify(this.settings.active)}; 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); Promise.resolve(ret);
} else { } else {
sendResponse({extensionConf: JSON.stringify(this.settings.active)}); sendResponse({extensionConf: JSON.stringify(this.settings.active)});
@ -93,7 +93,7 @@ class CommsServer {
this.settings.active.sites['@global'].autoar = "blacklist"; this.settings.active.sites['@global'].autoar = "blacklist";
this.settings.save(); this.settings.save();
this.sendToAll({cmd: "reload-settings", sender: "uwbg"}) 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': [ 'autoar-disable': [
@ -106,12 +106,12 @@ class CommsServer {
} }
this.settings.save(); this.settings.save();
this.sendToAll({cmd: 'reload-settings', newConf: this.settings.active}); 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': [ 'autoar-set-interval': [
(message) => { (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 // set fairly liberal limit
var timeout = message.timeout < 4 ? 4 : message.timeout; var timeout = message.timeout < 4 ? 4 : message.timeout;
@ -122,15 +122,15 @@ class CommsServer {
], ],
'logging-stop-and-save': [ // TODO: possibly never used/superseded — check 'logging-stop-and-save': [ // TODO: possibly never used/superseded — check
(message, sender) => { (message, sender) => {
this.logger.log('info', 'CommsServer', "Received command to stop logging and export the received input"); 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.addToGlobalHistory(`${message.host}::${sender?.tab?.id ?? '×'}-${sender.frameId ?? '×'}`, JSON.parse(message.history));
this.logger.finish(); this.logger.finish();
} }
], ],
'logging-save': [ 'logging-save': [
(message, sender) => { (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.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)); 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) { 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 (isNaN(tab)) {
if (tab === '__playing') { if (tab === '__playing') {
@ -191,23 +191,23 @@ class CommsServer {
[tab, frame] = tab.split('-') [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 { try {
this.ports[tab][frame].postMessage(message); this.ports[tab][frame].postMessage(message);
} catch (e) { } 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) { 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(); 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]) { 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]) { for (var key in this.ports[tabs[0].id]) {
@ -242,26 +242,31 @@ class CommsServer {
execCmd(message, portOrSender, sendResponse) { 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]) { for (const c of this.commands[message.cmd]) {
c(message, portOrSender, sendResponse); c(message, portOrSender, sendResponse);
} }
} }
async processReceivedMessage(message, port){ 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) { 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); this.sendToFrame(message, message.targetTab, message.targetFrame);
return; return;
} }
if (message.forwardToAll) { 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); this.sendToAll(message);
return; return;
} }
if (message.forwardToActive) { 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); this.sendToActive(message);
return; return;
} }
@ -270,11 +275,11 @@ class CommsServer {
} }
processReceivedMessage_nonpersistent(message, sender, sendResponse){ 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) { 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', 'comms', "[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] (btw we probably shouldn't be seeing this. This should prolly happen in persistent connection?");
this.sendToFrame(message, message.targetFrame); this.sendToFrame(message, message.targetFrame);
return; return;

View File

@ -32,8 +32,16 @@ class UWServer {
async setup() { async setup() {
// logger is the first thing that goes up // logger is the first thing that goes up
const loggingOptions = { const loggingOptions = {
isBackgroundScript: true,
allowLogging: true, allowLogging: true,
useConfFromStorage: true,
logAll: true, logAll: true,
fileOptions: {
enabled: true,
},
consoleOptions: {
enabled: true
}
}; };
this.logger = new Logger(); this.logger = new Logger();
await this.logger.init(loggingOptions); await this.logger.init(loggingOptions);

View File

@ -43,6 +43,7 @@ class UW {
try { try {
if (!this.logger) { if (!this.logger) {
const loggingOptions = { const loggingOptions = {
isContentScript: true,
allowLogging: true, allowLogging: true,
useConfFromStorage: true, useConfFromStorage: true,
fileOptions: { fileOptions: {