/**
* Copyright 2009 Tim Down.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
if (!Array.prototype.shift) {
Array.prototype.shift = function() {
if (this.length > 0) {
var firstItem = this[0];
for (var i = 0, len = this.length - 1; i < len; i++) {
this[i] = this[i + 1];
}
this.length = this.length - 1;
return firstItem;
}
};
}
var log4javascript;
(function() {
var newLine = "\r\n";
function Log4JavaScript() {}
log4javascript = new Log4JavaScript();
log4javascript.version = "1.4.2";
log4javascript.edition = "log4javascript_lite";
function getExceptionMessage(ex) {
if (ex.message) {
return ex.message;
} else if (ex.description) {
return ex.description;
} else {
return String(ex);
}
}
// Gets the portion of the URL after the last slash
function getUrlFileName(url) {
var lastSlashIndex = Math.max(url.lastIndexOf("/"), url.lastIndexOf("\\"));
return url.substr(lastSlashIndex + 1);
}
// Returns a nicely formatted representation of an error
function getExceptionStringRep(ex) {
if (ex) {
var exStr = "Exception: " + getExceptionMessage(ex);
try {
if (ex.lineNumber) {
exStr += " on line number " + ex.lineNumber;
}
if (ex.fileName) {
exStr += " in file " + getUrlFileName(ex.fileName);
}
} catch (localEx) {
}
if (showStackTraces && ex.stack) {
exStr += newLine + "Stack trace:" + newLine + ex.stack;
}
return exStr;
}
return null;
}
function isError(err) {
return (err instanceof Error);
}
function bool(obj) {
return Boolean(obj);
}
var enabled = (typeof log4javascript_disabled != "undefined") &&
log4javascript_disabled ? false : true;
log4javascript.setEnabled = function(enable) {
enabled = bool(enable);
};
log4javascript.isEnabled = function() {
return enabled;
};
var showStackTraces = false;
log4javascript.setShowStackTraces = function(show) {
showStackTraces = bool(show);
};
/* ---------------------------------------------------------------------- */
// Levels
var Level = function(level, name) {
this.level = level;
this.name = name;
};
Level.prototype = {
toString: function() {
return this.name;
},
equals: function(level) {
return this.level == level.level;
},
isGreaterOrEqual: function(level) {
return this.level >= level.level;
}
};
Level.ALL = new Level(Number.MIN_VALUE, "ALL");
Level.TRACE = new Level(10000, "TRACE");
Level.DEBUG = new Level(20000, "DEBUG");
Level.INFO = new Level(30000, "INFO");
Level.WARN = new Level(40000, "WARN");
Level.ERROR = new Level(50000, "ERROR");
Level.FATAL = new Level(60000, "FATAL");
Level.OFF = new Level(Number.MAX_VALUE, "OFF");
log4javascript.Level = Level;
/* ---------------------------------------------------------------------- */
// Appenders
function Appender() {
var getConsoleHtmlLines = function() {
return [
'',
'',
'