zoneminder/web/js/logger.js

128 lines
3.4 KiB
JavaScript
Raw Normal View History

//
// ZoneMinder logger javascript file, $Date: 2011-05-27 22:24:17 +0100 (Fri, 27 May 2011) $, $Revision: 3374 $
// Copyright (C) 2001-2008 Philip Coombes
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
//
2020-12-25 04:32:23 +08:00
$j.ajaxSetup({timeout: AJAX_TIMEOUT});
var reportLogs = true;
if ( !window.console ) {
window.console =
{
init: function() {},
log: function() {},
debug: function() {},
info: function() {},
warn: function() {},
error: function() {}
};
}
2020-12-25 04:32:23 +08:00
if ( !console.debug ) {
// IE8 has console but doesn't have console.debug so lets alias it.
console.debug = console.log;
}
2020-12-25 04:32:23 +08:00
window.onerror = function(message, url, line) {
2020-12-25 04:59:27 +08:00
logReport("ERR", message, url, line);
};
2020-12-25 04:32:23 +08:00
window.addEventListener("securitypolicyviolation", function logCSP(evt) {
var level = evt.disposition == "enforce" ? "ERR" : "DBG";
var message = evt.blockedURI + " violated CSP " + evt.violatedDirective;
2020-12-25 04:32:23 +08:00
if ( evt.sample ) message += " (Sample: " + evt.sample + ")";
logReport(level, message, evt.sourceFile, evt.lineNumber);
});
function logReport( level, message, file, line ) {
2020-12-25 04:32:23 +08:00
if ( !reportLogs ) return;
/* eslint-disable no-caller */
if ( arguments && arguments.callee && arguments.callee.caller && arguments.callee.caller.caller && arguments.callee.caller.caller.name ) {
message += ' - '+arguments.callee.caller.caller.name+'()';
//console.log("arguments");
}
2020-12-25 04:32:23 +08:00
var browser = {};
if ( Browser ) {
browser.name = Browser.name;
browser.version = Browser.version;
browser.platform = Browser.Platform ? Browser.Platform.name : 'unknown';
} else {
browser.name = 'unknown';
browser.version = 'unknown';
browser.platform = 'unknown';
}
2020-12-25 04:32:23 +08:00
var data = {
view: 'request',
request: 'log',
task: 'create',
level: level,
message: encodeURIComponent(message),
browser: browser
};
if ( file ) {
2020-12-25 04:32:23 +08:00
data.file = file;
} else if ( location.search ) {
//location.search is the querystring part, so ?blah=blah but there is almost never any value to this
2020-12-25 04:32:23 +08:00
data.file = location.search;
}
2020-12-25 04:32:23 +08:00
if ( line ) data.line = line;
$j.getJSON(thisUrl, data);
}
function Panic(message) {
console.error(message);
logReport("PNC", message);
alert("PANIC: "+message);
}
function Fatal(message) {
console.error(message);
logReport( "FAT", message );
alert( "FATAL: "+message );
}
function Error(message) {
console.error(message);
logReport("ERR", message);
}
function Warning(message) {
console.warn(message);
logReport("WAR", message);
}
function Info(message) {
console.info(message);
logReport("INF", message);
}
function Debug(message) {
console.debug(message);
//logReport("DBG", message);
}
function Dump(value, label) {
2020-12-25 04:32:23 +08:00
if ( label ) console.debug(label+" => ");
console.debug(value);
}