zoneminder/web/js/logger.js

131 lines
3.8 KiB
JavaScript

//
// 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.
//
if ( !window.console ) {
window.console =
{
init: function() {},
log: function() {},
debug: function() {},
info: function() {},
warn: function() {},
error: function() {}
};
}
if ( !console.debug ) {
// IE8 has console but doesn't have console.debug so lets alias it.
console.debug = console.log;
}
var reportLogs = true;
var debugParms;
var debugReq;
function logReport( level, message, file, line ) {
if ( !reportLogs ) {
return;
}
if ( typeof(MooTools) == "undefined" ) {
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+'()';
} else {
message += new Error().stack;
}
/* eslint-enable no-caller */
if ( !debugReq ) {
if ( Browser ) {
debugParms = "view=request&request=log&task=create&browser[name]="+Browser.name+"&browser[version]="+Browser.version+"&browser[platform]="+(Browser.Platform?Browser.Platform.name:'unknown');
} else {
debugParms = "view=request&request=log&task=create&browser[name]=unknown&browser[version]=unknown&browser[platform]=unknown";
}
debugReq = new Request.JSON( {url: thisUrl, method: 'post', timeout: AJAX_TIMEOUT, link: 'chain'} );
}
var requestParms = debugParms;
requestParms += "&level="+level+"&message="+encodeURIComponent(message);
if ( file ) {
requestParms += "&file="+file;
} else if ( location.search ) {
//location.search is the querystring part, so ?blah=blah but there is almost never any value to this
requestParms += "&file="+location.search;
}
if ( line ) {
requestParms += "&line="+line;
}
debugReq.send( requestParms );
}
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 ) {
if ( label ) {
console.debug( label+" => " );
}
console.debug( value );
}
window.onerror =
function( message, url, line ) {
logReport( "ERR", message, url, line );
};
window.addEventListener("securitypolicyviolation", function logCSP(evt) {
var level = evt.disposition == "enforce" ? "ERR" : "DBG";
var message = evt.blockedURI + " violated CSP " + evt.violatedDirective;
if (evt.sample) {
message += " (Sample: " + evt.sample + ")";
}
logReport(level, message, evt.sourceFile, evt.lineNumber);
});