Added in support for new HPC Dashboard View, ability to retrieve HPC Dashboard view from views.py in separate function, support for log4javascript to provide integration with browser console for debugging, and leaflet support for MakiMarkers on encodings.
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html b/planetstack/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html
new file mode 100644
index 0000000..f212fd4
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/backwardsincompatibilities.html
@@ -0,0 +1,90 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>log4javascript - backwards incompatibilities in version 1.4</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="/index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>Backwards incompatibilities in log4javascript 1.4</h1>
+ <ul>
+ <li>
+ Loggers are now hierarchical. This means logger names containing full stops have
+ special meaning. For example, from version 1.4 the logger named <code>myapp.ajax</code>
+ by default inherits all the appenders of the logger named <code>myapp</code>, while
+ prior to version 1.4 these loggers would be entirely independent;
+ </li>
+ <li>
+ The signature of the <code>log</code> method of <code>Logger</code> has changed.
+ However, you should not use this method directly; instead, use one of the level-specific
+ wrapper functions (<code>debug</code>, <code>info</code>, <code>error</code> etc.);
+ </li>
+ <li>
+ Appenders can no longer be configured via constructor parameters. Instead you must use
+ setter methods;
+ </li>
+ <li>
+ The format of requests sent via <code><a href="manual.html#ajaxappender">AjaxAppender</a></code>
+ has changed when using <code><a href="manual.html#jsonlayout">JsonLayout</a></code> or
+ <code><a href="manual.html#xmllayout">XmlLayout</a></code>: the formatted log messages are sent
+ as a name-value pair (with default name <code>data</code>) rather than a single unencoded string;
+ </li>
+ <li>
+ All timestamps returned by <code><a href="manual.html#xmllayout">XmlLayout</a></code>,
+ <code><a href="manual.html#jsonlayout">JsonLayout</a></code> and
+ <code><a href="manual.html#httppostdatlayout">HttpPostDataLayout</a></code> are
+ now measured in milliseconds since January 1st 1970 (previously they were returned
+ as seconds since January 1st 1970);
+ </li>
+ <li>
+ The constructors for <a href="manual.html#jsonlayout">JsonLayout</a> and
+ <a href="manual.html#httppostdatlayout">HttpPostDataLayout</a> have changed; the property names
+ used for the properties of the logging event are now set via <code>setKeys</code> rather than
+ in the constructor;
+ </li>
+ <li>
+ <code>setReadable</code> has been removed from <a href="manual.html#jsonlayout">JsonLayout</a>.
+ The <code>readable</code> property should now be set via the constructor;
+ </li>
+ <li>
+ <code>addErrorListener</code> and <code>removeErrorListener</code> removed from
+ the <code>log4javascript</code> object and replaced with the more generic
+ <code><a href="manual.html#log4javascriptaddeventlistener">addEventListener</a></code>
+ and <code>removeEventListener</code> methods. The listener functions are passed
+ different parameters.
+ </li>
+ </ul>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/distribution.html b/planetstack/core/static/log4javascript-1.4.6/docs/distribution.html
new file mode 100644
index 0000000..8f6cdfd
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/distribution.html
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
+ <head>
+ <title>log4javascript 1.4 distribution</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="../index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>log4javascript 1.4 distribution</h1>
+ <p>
+ From version 1.4 the distribution includes three different editions of log4javascript:
+ </p>
+ <ul>
+ <li>
+ <div><strong>Standard Edition</strong></div>
+ <p>
+ Equivalent to log4javascript from earlier versions and suitable for general JavaScript
+ debugging and logging (including via Ajax).
+ </p>
+ </li>
+ <li>
+ <div><strong>Production Edition</strong></div>
+ <p>
+ Designed for use in production systems where the focus is solely on logging JavaScript
+ messages back to the server. Consequently this edition omits all appenders except
+ <a href="manual.html#ajaxappender">AjaxAppender</a>, resulting in a drastically reduced
+ file size compared to the standard edition.
+ </p>
+ </li>
+ <li>
+ <div><strong>Lite Edition</strong></div>
+ <p>
+ A lightweight version of log4javascript for quick page debugging. Included is a single logger
+ using a basic pop-up window appender with a fixed layout.
+ </p>
+ </li>
+ </ul>
+ <p>
+ Each edition comes in compressed and uncompressed versions. The compressed version is
+ functionally identical to the uncompressed version but has had whitespace and comments removed
+ and therefore downloads more quickly.
+ </p>
+ <p>
+ Each edition also comes with a stub version. This contains dummy implementations of all
+ log4javacript objects and methods in the public API, making it ideal for production environments
+ where logging is not required. Replacing the main log4javascript script file with this file
+ means that log calls may be left in production code. Compressed and uncompressed versions of
+ each stub are included.
+ </p>
+ <p>
+ Finally, each edition comes with a suite of unit tests, available as HTML pages in the
+ <code>test/</code> directory. Note that these tests crash old versions (pre-3.1) of Safari. Sorry.
+ </p>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/index.html b/planetstack/core/static/log4javascript-1.4.6/docs/index.html
new file mode 100644
index 0000000..d3b3ac2
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/index.html
@@ -0,0 +1,190 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>log4javascript documentation</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="../index.html">log4javascript</a></h1>
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <span class="navitem">docs</span>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ </div>
+ <div id="content">
+ <h1>log4javascript 1.4 documentation</h1>
+ <div id="links">
+ <h2>Links</h2>
+ <ul>
+ <li><a href="quickstart.html">Quick start</a></li>
+ <li><a href="distribution.html">Details of the log4javascript distribution</a></li>
+ <li><a href="backwardsincompatibilities.html">Backwards incompatibilities</a></li>
+ <li><a href="whatsnew.html">What's new in this release</a></li>
+ <li><a href="../changelog.txt">Change log</a></li>
+ <li><a href="manual.html">log4javascript manual</a></li>
+ <li><a href="lite.html">log4javascript Lite</a></li>
+ <li><a href="manual_lite.html">log4javascript Lite manual</a></li>
+ <li><a href="../demos/basic.html">Basic demo</a></li>
+ <li><a href="../demos/ajax.html">Ajax demo</a></li>
+ </ul>
+ </div>
+ <div id="contents">
+ <h2>Contents</h2>
+ <ul>
+ <li><a href="#whatitis">What it is</a></li>
+ <li><a href="#whofor">Who it's for</a></li>
+ <li><a href="#previousversions">Note on previous versions</a></li>
+ <li><a href="#features">Features</a></li>
+ <li><a href="#browsers">Browser support</a></li>
+ <li><a href="#licence">Licence</a></li>
+ <li><a href="#furtherreading">Further reading</a></li>
+ </ul>
+ </div>
+ <div id="whatitis">
+ <h2>What it is</h2>
+ <p>
+ log4javascript is a JavaScript logging framework based on the Java
+ logging framework <a href="http://logging.apache.org/log4j/docs/index.html"
+ title="log4j home page (opens in new window)" target="_blank">log4j</a>.
+ </p>
+ <p>
+ log4javascript implements a subset of log4j (primarily loggers, appenders
+ and layouts) and has a few convenience methods of its own for
+ quick JavaScript development. It can be used to debug JavaScript
+ applications of all sizes, including Ajax applications.
+ </p>
+ <p>
+ If you just want to start using it, try the <a href="quickstart.html">quickstart
+ tutorial</a>.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="whofor">
+ <h2>Who it's for</h2>
+ <p>
+ log4javascript is aimed at JavaScript developers.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="previousversions">
+ <h2>Note on previous versions</h2>
+ <p>
+ Documentation for previous versions of log4javascript are not available here.
+ However, documentation is bundled with every previous version, all of which
+ are <a href="http://sourceforge.net/projects/log4javascript"
+ target="_blank" title="Download (opens in new window)">available to download</a>.
+ </p>
+ </div>
+ <div id="features">
+ <h2>Features</h2>
+ <ul>
+ <li>can be initialized with one JavaScript include and one line of code;</li>
+ <li>
+ by default logs to a pop-up console window with powerful search (including
+ regular expression) and filtering features. This console window can also
+ be used inline as an iframe in the main page;
+ </li>
+ <li>
+ can send log messages to the server via HTTP (Ajax, if you like);
+ </li>
+ <li>
+ highly configurable using familiar methods from log4j, including the
+ powerful <code><a href="manual.html#patternlayout">PatternLayout</a></code>
+ which gives the developer complete control over the format of the log messages.
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="browsers">
+ <h2>Browser support</h2>
+ <h3>Fully supported browsers:</h3>
+ <ul>
+ <li>All versions Firefox back to 0.6</li>
+ <li>Other Mozilla-based browsers, as far back as Netscape 7</li>
+ <li>Internet Explorer 5 and higher for Windows</li>
+ <li>Safari 1.3 and higher (untested on earlier versions)</li>
+ <li>Opera 8.01 and higher (pre- version 9 browsers have a rendering
+ bug related to scrolling that affects searching in PopUpAppender and InPageAppender)</li>
+ <li>Konqueror 3.4.3 and higher (untested on earlier versions)</li>
+ <li>Google Chrome</li>
+ </ul>
+ <h3>Partially supported browsers:</h3>
+ <ul>
+ <li>Older Mozilla-based browsers, e.g. Netscape 6.2 (generally OK except for
+ display problems searching and filtering PopUpAppender and InPageAppender)</li>
+ <li>Opera 7.0 - 8.0 (InPageAppender not supported until version 7.5, plus some display
+ problems searching PopUpAppender and InPageAppender. AjaxAppender not supported at all)</li>
+ </ul>
+ <h3>Unsupported browsers:</h3>
+ <ul>
+ <li>
+ Internet Explorer for Mac. There are no plans to make log4javascript work
+ in this browser.
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="licence">
+ <h2>Licence</h2>
+ <p>
+ log4javascript is licenced under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>. The Apache website has <a href="http://www.apache.org/foundation/licence-FAQ.html#WhatDoesItMEAN"
+ title="View licence (opens in new window)" target="_blank">more details</a>.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="furtherreading">
+ <h2>Further reading</h2>
+ <p>
+ In order to gain an understanding of the ideas behind log4j and therefore log4javascript,
+ I highly recommend reading the <a href="http://logging.apache.org/log4j/docs/manual.html">short
+ introduction to log4j</a> from the log4j website. log4javascript borrows heavily from
+ log4j but does not carry over all its concepts - for example, Filters and Renderers are not
+ implemented.
+ </p>
+ <p>
+ <a href="manual.html">The full log4javascript manual</a>
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
\ No newline at end of file
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/lite.html b/planetstack/core/static/log4javascript-1.4.6/docs/lite.html
new file mode 100644
index 0000000..11b4684
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/lite.html
@@ -0,0 +1,182 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
+ <head>
+ <title>log4javascript 1.4 Lite</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ <style type="text/css">
+ .visibleifabletocopy {
+ display: none;
+ }
+
+ body.abletocopy .visibleifabletocopy {
+ display: block;
+ }
+ </style>
+ <script type="text/javascript">
+ function copyCode() {
+ if (window.clipboardData && clipboardData.setData) {
+ clipboardData.setData("Text", code);
+ alert("Code copied to clipboard.")
+ }
+ }
+
+ var code;
+
+ window.onload = function() {
+ var textArea = document.getElementById("codetextarea");
+ code = textArea.value;
+ textArea.select();
+ if (window.clipboardData && clipboardData.setData) {
+ document.body.className = "abletocopy";
+ }
+ };
+ </script>
+ <link rel="stylesheet" type="text/css" media="screen,print" href="lite.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="../index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>log4javascript 1.4 Lite</h1>
+ <h2>Contents</h2>
+ <ul>
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#code">Code</a></li>
+ <li><a href="#api">API</a></li>
+ </ul>
+ <div id="intro">
+ <h2>Introduction</h2>
+ <p>
+ log4javascript Lite is designed to be a basic, lightweight, cross-browser logging tool. It
+ provides functions to log messages of different severity to a pop-up window using the exactly
+ the same syntax as log4javascript.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="code">
+ <h2>Code</h2>
+ <p>
+ You can copy the code for log4javascript Lite below:
+ </p>
+ <textarea id="codetextarea" cols="80" rows="10">
+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--;return firstItem;}};}
+var log4javascript;(function(){var newLine="\r\n";function Log4JavaScript(){}
+log4javascript=new Log4JavaScript();log4javascript.version="1.4.6";log4javascript.edition="log4javascript_lite";function getExceptionMessage(ex){if(ex.message){return ex.message;}else if(ex.description){return ex.description;}else{return String(ex);}}
+function getUrlFileName(url){var lastSlashIndex=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\"));return url.substr(lastSlashIndex+1);}
+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);};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;function Appender(){var getConsoleHtmlLines=function(){return['<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">','<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">','<head>','<title>log4javascript</title>','<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />','<!-- Make IE8 behave like IE7, having gone to all the trouble of making IE work -->','<meta http-equiv="X-UA-Compatible" content="IE=7" />','<script type="text/javascript">','//<![CDATA[','var loggingEnabled=true;var messagesBeforeDocLoaded=[];function toggleLoggingEnabled(){setLoggingEnabled($("enableLogging").checked);}','function setLoggingEnabled(enable){loggingEnabled=enable;}','function scrollToLatestEntry(){var l=getLogContainer();if(typeof l.scrollTop!="undefined"){var latestLogEntry=l.lastChild;if(latestLogEntry){l.scrollTop=l.scrollHeight;}}}','function log(logLevel,formattedMessage){if(loggingEnabled){if(loaded){doLog(logLevel,formattedMessage);}else{messagesBeforeDocLoaded.push([logLevel,formattedMessage]);}}}','function doLog(logLevel,formattedMessage){var logEntry=document.createElement("div");logEntry.appendChild(document.createTextNode(formattedMessage));logEntry.className="logentry "+logLevel.name;getLogContainer().appendChild(logEntry);scrollToLatestEntry();}','function mainPageReloaded(){var separator=document.createElement("div");separator.className="separator";separator.innerHTML=" ";getLogContainer().appendChild(separator);}','var loaded=false;var logLevels=["DEBUG","INFO","WARN","ERROR","FATAL"];window.onload=function(){setLogContainerHeight();toggleLoggingEnabled();for(var i=0;i<messagesBeforeDocLoaded.length;i++){doLog(messagesBeforeDocLoaded[i][0],messagesBeforeDocLoaded[i][1]);}','messagesBeforeDocLoaded=[];loaded=true;setTimeout(setLogContainerHeight,20);};function getLogContainer(){return $("log");}','function clearLog(){getLogContainer().innerHTML="";}','function $(id){return document.getElementById(id);}','function getWindowHeight(){if(window.innerHeight){return window.innerHeight;}else if(document.documentElement&&document.documentElement.clientHeight){return document.documentElement.clientHeight;}else if(document.body){return document.body.clientHeight;}','return 0;}','function getChromeHeight(){return $("toolbar").offsetHeight;}','function setLogContainerHeight(){var windowHeight=getWindowHeight();$("body").style.height=getWindowHeight()+"px";getLogContainer().style.height=""+','Math.max(0,windowHeight-getChromeHeight())+"px";}','window.onresize=function(){setLogContainerHeight();};','//]]>','</scr' + 'ipt>','<style type="text/css">','body{background-color:white;color:black;padding:0;margin:0;font-family:tahoma,verdana,arial,helvetica,sans-serif;overflow:hidden}div#toolbar{border-top:solid #ffffff 1px;border-bottom:solid #aca899 1px;background-color:#f1efe7;padding:3px 5px;font-size:68.75%}div#toolbar input.button{padding:0 5px;font-size:100%}div#log{font-family:Courier New,Courier;font-size:75%;width:100%;overflow:auto;clear:both}*.logentry{overflow:visible;white-space:pre}*.TRACE{color:#666666}*.DEBUG{color:green}*.INFO{color:#000099}*.WARN{color:#999900}*.ERROR{color:red}*.FATAL{color:#660066}div#log div.separator{background-color:#cccccc;margin:5px 0;line-height:1px}','</style>','</head>','<body id="body">','<div id="toolbar">','Options:','<input type="checkbox" id="enableLogging" onclick="toggleLoggingEnabled()" class="stateful" checked="checked" title="Enable/disable logging" /><label for="enableLogging" id="enableLoggingLabel">Enable logging</label>','<input type="button" id="clearButton" value="Clear" onclick="clearLog()" class="stateful button" title="Clear all log messages" />','<input type="button" id="closeButton" value="Close" onclick="window.close()" class="stateful button" title="Close the window" />','</div>','<div id="log" class="TRACE DEBUG INFO WARN ERROR FATAL"></div>','</body>','</html>'];};var popUp=null;var popUpsBlocked=false;var popUpClosed=false;var popUpLoaded=false;var complainAboutPopUpBlocking=true;var initialized=false;var isSupported=true;var width=600;var height=400;var focusPopUp=false;var queuedLoggingEvents=new Array();function isLoaded(win){try{return bool(win.loaded);}catch(ex){return false;}}
+function finalInit(){popUpLoaded=true;appendQueuedLoggingEvents();}
+function writeHtml(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i<len;i++){doc.writeln(lines[i]);}
+doc.close();}
+function pollConsoleWindow(){function pollConsoleWindowLoaded(){if(popUpLoaded){clearInterval(poll);}else if(bool(popUp)&&isLoaded(popUp)){clearInterval(poll);finalInit();}}
+var poll=setInterval(pollConsoleWindowLoaded,100);}
+function init(){var windowProperties="width="+width+",height="+height+",status,resizable";var windowName="log4javascriptLitePopUp"+location.host.replace(/[^a-z0-9]/gi,"_");popUp=window.open("",windowName,windowProperties);popUpClosed=false;if(popUp){if(isLoaded(popUp)){popUp.mainPageReloaded();finalInit();}else{writeHtml(popUp.document);if(isLoaded(popUp)){finalInit();}else{pollConsoleWindow();}}}else{isSupported=false;if(complainAboutPopUpBlocking){alert("log4javascript: pop-up windows appear to be blocked. Please unblock them to use pop-up logging.");}}
+initialized=true;}
+function safeToAppend(){if(!popUpsBlocked&&!popUpClosed){if(popUp.closed){popUpClosed=true;return false;}
+if(!popUpLoaded&&popUp.loaded){popUpLoaded=true;}}
+return!popUpsBlocked&&popUpLoaded&&!popUpClosed;}
+function padWithZeroes(num,len){var str=""+num;while(str.length<len){str="0"+str;}
+return str;}
+function padWithSpaces(str,len){while(str.length<len){str+=" ";}
+return str;}
+this.append=function(loggingEvent){if(!initialized){init();}
+queuedLoggingEvents.push(loggingEvent);if(safeToAppend()){appendQueuedLoggingEvents();}};function appendQueuedLoggingEvents(){if(safeToAppend()){while(queuedLoggingEvents.length>0){var currentLoggingEvent=queuedLoggingEvents.shift();var date=currentLoggingEvent.timeStamp;var formattedDate=padWithZeroes(date.getHours(),2)+":"+
+padWithZeroes(date.getMinutes(),2)+":"+padWithZeroes(date.getSeconds(),2);var formattedMessage=formattedDate+" "+padWithSpaces(currentLoggingEvent.level.name,5)+" - "+currentLoggingEvent.getCombinedMessages();var throwableStringRep=currentLoggingEvent.getThrowableStrRep();if(throwableStringRep){formattedMessage+=newLine+throwableStringRep;}
+popUp.log(currentLoggingEvent.level,formattedMessage);}
+if(focusPopUp){popUp.focus();}}}}
+log4javascript.Appender=Appender;function Logger(){var appender=new Appender();var loggerLevel=Level.ALL;this.log=function(level,params){if(enabled&&level.isGreaterOrEqual(this.getLevel())){var exception;var finalParamIndex=params.length-1;var lastParam=params[params.length-1];if(params.length>1&&isError(lastParam)){exception=lastParam;finalParamIndex--;}
+var messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}
+var loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);appender.append(loggingEvent);}};this.setLevel=function(level){loggerLevel=level;};this.getLevel=function(){return loggerLevel;};}
+Logger.prototype={trace:function(){this.log(Level.TRACE,arguments);},debug:function(){this.log(Level.DEBUG,arguments);},info:function(){this.log(Level.INFO,arguments);},warn:function(){this.log(Level.WARN,arguments);},error:function(){this.log(Level.ERROR,arguments);},fatal:function(){this.log(Level.FATAL,arguments);},isEnabledFor:function(level){return level.isGreaterOrEqual(this.getLevel());},isTraceEnabled:function(){return this.isEnabledFor(Level.TRACE);},isDebugEnabled:function(){return this.isEnabledFor(Level.DEBUG);},isInfoEnabled:function(){return this.isEnabledFor(Level.INFO);},isWarnEnabled:function(){return this.isEnabledFor(Level.WARN);},isErrorEnabled:function(){return this.isEnabledFor(Level.ERROR);},isFatalEnabled:function(){return this.isEnabledFor(Level.FATAL);}};var defaultLogger=null;log4javascript.getDefaultLogger=function(){if(!defaultLogger){defaultLogger=new Logger();}
+return defaultLogger;};log4javascript.getLogger=log4javascript.getDefaultLogger;var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger();nullLogger.setLevel(Level.OFF);}
+return nullLogger;};var LoggingEvent=function(logger,timeStamp,level,messages,exception){this.logger=logger;this.timeStamp=timeStamp;this.level=level;this.messages=messages;this.exception=exception;};LoggingEvent.prototype={getThrowableStrRep:function(){return this.exception?getExceptionStringRep(this.exception):"";},getCombinedMessages:function(){return(this.messages.length===1)?this.messages[0]:this.messages.join(newLine);}};log4javascript.LoggingEvent=LoggingEvent;window.log4javascript=log4javascript;})();
+</textarea>
+ <p class="visibleifabletocopy">
+ Press this button to copy the code to the clipboard:
+ <input type="button" value="Copy" onclick="copyCode()" />
+ </p>
+ <p>
+ You can either paste the above code inside a script tag:
+ </p>
+ <pre class="code">
+<script type="text/javascript">
+ ... [Code here]...
+</script>
+</pre>
+ <p>
+ ... or include the <code>log4javascript_lite.js</code> included in the distribution:
+ </p>
+ <pre class="code">
+<script type="text/javascript" src="log4javascript_lite.js"></script>
+</pre>
+ <pre class="code">
+<script type="text/javascript">
+ var log = log4javascript.getDefaultLogger();
+</script>
+</pre>
+ <p>
+ Using log4javascript Lite is identical to using log4javascript with its default logger:
+ </p>
+ <pre class="code">
+<script type="text/javascript">
+ var log = log4javascript.getDefaultLogger();
+ log.debug("What's going on here then?");
+</script>
+</pre>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="api">
+ <h2>API</h2>
+ <p>
+ The functions available in log4javascript Lite make up a small subset of those provided
+ by log4javascript proper. Each function is <strong>named and called identically to the equivalent
+ function in log4javascript</strong>. Full details can be found in the
+ <a href="manual_lite.html">log4javascript Lite manual</a>.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/manual.html b/planetstack/core/static/log4javascript-1.4.6/docs/manual.html
new file mode 100644
index 0000000..defac9c
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/manual.html
@@ -0,0 +1,3198 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>log4javascript 1.4 manual</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>log4javascript 1.4 manual</h1>
+ <h2>Contents</h2>
+ <ul>
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#noteaboutlog4javascript">Note about the log4javascript object</a></li>
+ <li>
+ <a href="#loggersappenderslayoutslevels">Loggers, appenders, layouts and levels</a>
+ <ul>
+ <li><a href="#configuration">Configuring appenders</a></li>
+ <li><a href="#loggersappenderslayoutslevelsexample">Example</a></li>
+ </ul>
+ </li>
+ <li><a href="#log4javascript">log4javascript static properties/methods</a></li>
+ <li><a href="#levels">Levels</a></li>
+ <li><a href="#loggers">Loggers</a></li>
+ <li>
+ <a href="#appenders">Appenders</a>
+ <ul>
+ <li><a href="#appender">Appender</a></li>
+ <li><a href="#alertappender">AlertAppender</a></li>
+ <li><a href="#ajaxappender">AjaxAppender</a></li>
+ <li><a href="#popupappender">PopUpAppender</a></li>
+ <li><a href="#inpageappender">InPageAppender</a></li>
+ <li><a href="#browserconsoleappender">BrowserConsoleAppender</a></li>
+ </ul>
+ </li>
+ <li>
+ <a href="#layouts">Layouts</a>
+ <ul>
+ <li><a href="#layout">Layout</a></li>
+ <li><a href="#nulllayout">NullLayout</a></li>
+ <li><a href="#simplelayout">SimpleLayout</a></li>
+ <li><a href="#patternlayout">PatternLayout</a></li>
+ <li><a href="#xmllayout">XmlLayout</a></li>
+ <li><a href="#jsonlayout">JsonLayout</a></li>
+ <li><a href="#httppostdatalayout">HttpPostDataLayout</a></li>
+ </ul>
+ </li>
+ <li><a href="#enabling">Enabling / disabling log4javascript</a></li>
+ <li>
+ <a href="#errorhandling">log4javascript error handling</a>
+ <ul>
+ <li><a href="#loglog">LogLog</a></li>
+ </ul>
+ </li>
+ <li><a href="#differences">Differences between log4javascript and log4j</a></li>
+ </ul>
+ <div id="intro">
+ <h2>Introduction</h2>
+ <p>
+ Anyone who has done a reasonable amount of JavaScript development will be
+ familiar with <code>alert</code> as a means of debugging. For
+ a small script, it works fine. But for anything of greater complexity than,
+ say, a rollover script its shortcomings become apparent. The most obvious problem
+ is the endless clicking of 'OK'. Another problem is that for a page
+ heavily reliant on events generated from user actions, alerts
+ can actually alter the way the page behaves. One final problem is infinite loops:
+ without alerts, the browser will notice that the script has messed
+ up and will offer the user the chance to stop the script running. With an
+ alert inside an infinite loop, you're forced to kill the browser.
+ </p>
+ <p>
+ At the other end of the scale there is
+ <a href="http://www.mozilla.org/projects/venkman/" target="_blank">Venkman</a>,
+ a full-on JavaScript debugger for Mozilla-based browsers such as Firefox. Here
+ I have to confess that I simply have not put in the time to learn how to make
+ it work well for me and I suspect I am not alone.
+ </p>
+ <p>
+ Nowadays, easily the best option for day-to-day JavaScript development is the brilliant
+ <a href="http://www.getfirebug.com" title="Firebug home page (opens in new window)"
+ target="_blank">Firebug</a>, a Firefox plugin with built-in debugger, console, logging,
+ and profiler. It's a seriously impressive tool but by its very nature as a Firefox
+ plugin can only be used in one of the typical target browsers for mainstream web
+ development.
+ </p>
+ <p>
+ log4javascript was originally written as a cross-browser tool to ease the pain of JavaScript
+ debugging without the time investment required to use a debugger effectively. It requires
+ only a JavaScript include and one line of code to initialize with default settings.
+ Having for several years used log4j and its .NET port log4net, it was natural for me to
+ base it on log4j.
+ </p>
+ <p>
+ log4javascript is by no means the only JavaScript logging framework out there.
+ It is not even the only JavaScript implementation of log4j. It turns out the name
+ log4javascript is used by another JavaScript logging framework, and that the name log4js is
+ used by at least two other pieces of software; this version of log4javascript is unrelated
+ to any of those.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="noteaboutlog4javascript">
+ <h2>Note about the log4javascript object</h2>
+ <p>
+ All of log4javascript's instantiable classes are accessible via the log4javascript object, which
+ acts as a namespace. Therefore references to all class names must be preceded with "log4javascript.".
+ For example:
+ </p>
+ <p>
+ <code>var popUpAppender = new log4javascript.PopUpAppender();</code>
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="loggersappenderslayoutslevels">
+ <h2>Loggers, Appenders, Layouts and Levels</h2>
+ <p>
+ A <em>logger</em> in log4javascript is the object on which log calls are
+ made. A logger may be assigned zero or more <em>appenders</em>.
+ An appender is an object that actually does the logging: for example,
+ a <code><a href="#popupappender">PopUpAppender</a></code> logs messages to
+ a pop-up console window while an <code><a href="#ajaxappender">AjaxAppender</a></code>
+ uses HTTP to send log messages back to the server. Each appender is assigned
+ a <em>layout</em>, which is responsible for formatting log messages that
+ are passed to an appender.
+ </p>
+ <p>
+ Every log message has a <em>level</em>. This is the severity of the message.
+ Available levels are <code>TRACE</code>, <code>DEBUG</code>, <code>INFO</code>,
+ <code>WARN</code>, <code>ERROR</code> and <code>FATAL</code> - these correspond to
+ the logging methods <code>trace</code>, <code>debug</code>, <code>info</code>,
+ <code>warn</code>, <code>error</code> and <code>fatal</code> of <code>Logger</code>.
+ Levels are ordered as follows: <code>TRACE</code> < <code>DEBUG</code> <
+ <code>INFO</code> < <code>WARN</code> < <code>ERROR</code> <
+ <code>FATAL</code>. This means the <code>FATAL</code> is the most severe and
+ <code>TRACE</code> the least. Also included are levels called <code>ALL</code>
+ and <code>OFF</code> intended to enable or disable all logging respectively.
+ </p>
+ <p>
+ Both loggers and appenders also have threshold levels (by default, <code>DEBUG</code>
+ for loggers and <code>ALL</code> for appenders).
+ Setting a level to either a logger or an appender disables log messages of severity
+ lower than that level. For instance, if a level of <code>INFO</code> is set on a
+ logger then only log messages of severity <code>INFO</code> or greater will be logged,
+ meaning <code>DEBUG</code> and <code>TRACE</code> messages will not be logged. If the
+ same logger had two appenders, one of level <code>DEBUG</code> and one of level
+ <code>WARN</code> then the first appender will still only log messages of
+ <code>INFO</code> or greater while the second appender will only log messages of level
+ <code>WARN</code> or greater.
+ </p>
+ <p>
+ This allows the developer fine control over which messages get logged where.
+ </p>
+ <div id="configuration">
+ <h3>Configuring appenders</h3>
+ <p>
+ From version 1.4, <strong>configuring appenders is only possible via configuration
+ methods</strong>. As the number of configuration options increases it becomes increasingly
+ undesirable to use constructor parameters, so support for it has been dropped.
+ </p>
+ </div>
+ <div id="loggersappenderslayoutslevelsexample">
+ <h3>Example</h3>
+ <p>
+ <strong>NB.</strong> The Ajax side of this example relies on having
+ server-side processing in place.
+ </p>
+ <p>
+ First, log4javascript is initialized, and a logger (actually the
+ anonymous logger) is assigned to a variable called <code>log</code>:
+ </p>
+ <pre class="code">
+<script type="text/javascript" src="log4javascript.js"></script>
+<script type="text/javascript">
+ //<![CDATA[
+ var log = log4javascript.getLogger();
+</pre>
+ <p>
+ <code>log</code> does not yet have any appenders, so a call to <code>log.debug()</code>
+ will do nothing as yet. For this example we will use a
+ <code><a href="#popupappender">PopUpAppender</a></code> for debugging purposes.
+ Since the lifespan of the messages displayed in the pop-up is only going to be the
+ same as that of the window, a <code><a href="#patternlayout">PatternLayout</a></code>
+ is used that displays the time of the message and not the date (note that this is
+ also true of PopUpAppender's default layout). The format of the string passed into
+ PatternLayout is explained <a href="#patternlayout">below</a>.
+ </p>
+ <pre class="code">
+ var popUpAppender = new log4javascript.PopUpAppender();
+ var popUpLayout = new log4javascript.PatternLayout("%d{HH:mm:ss} %-5p - %m%n");
+ popUpAppender.setLayout(popUpLayout);
+ log.addAppender(popUpAppender);
+</pre>
+ <p>
+ Suppose that we also want to send log messages to the server, but limited to
+ error messages only. To achieve this we use an
+ <code><a href="#ajaxappender">AjaxAppender</a></code>. Note that if no layout is
+ specified then for convenience a default layout is used; in the case of
+ AjaxAppender, that is <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>,
+ which formats log messages as a standard HTTP POST string from which a simple
+ server-side script (not provided with log4javascript) will be able to extract
+ posted parameters. This is fine for our purposes:
+ </p>
+ <pre class="code">
+ var ajaxAppender = new log4javascript.AjaxAppender("myloggingservlet.do");
+ ajaxAppender.setThreshold(log4javascript.Level.<code>ERROR</code>);
+ log.addAppender(ajaxAppender);
+</pre>
+ <p>
+ Finally, some test log messages and the closing script tag:
+ </p>
+ <pre class="code">
+ log.debug("Debugging message (appears in pop-up)");
+ log.error("Error message (appears in pop-up and in server log)");
+ //]]>
+</script>
+</pre>
+ <p>
+ The full script:
+ </p>
+ <pre class="code">
+<script type="text/javascript" src="log4javascript.js"></script>
+<script type="text/javascript">
+ //<![CDATA[
+ var log = log4javascript.getLogger();
+ var popUpAppender = new log4javascript.PopUpAppender();
+ var popUpLayout = new log4javascript.PatternLayout("%d{HH:mm:ss} %-5p - %m%n");
+ popUpAppender.setLayout(popUpLayout);
+ log.addAppender(popUpAppender);
+ var ajaxAppender = new log4javascript.AjaxAppender("myloggingservlet.do");
+ ajaxAppender.setThreshold(log4javascript.Level.ERROR);
+ log.addAppender(ajaxAppender);
+ log.debug("Debugging message (appears in pop-up)");
+ log.error("Error message (appears in pop-up and in server log)");
+ //]]>
+</script>
+</pre>
+ <p>
+ <a href="../examples/example_manual.html" title="View example (opens in new window)"
+ target="_blank">See this example in action</a> (opens in new window)
+ </p>
+ </div>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="log4javascript">
+ <h2>log4javascript static properties/methods</h2>
+ <h4>Properties</h4>
+ <ul class="propertieslist">
+ <li class="property">
+ <div class="name">version</div>
+ <div class="summary">
+ The version number of your copy of log4javascript.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">edition</div>
+ <div class="summary">
+ The edition of your copy of log4javascript.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">logLog</div>
+ <div class="summary">
+ log4javascript's internal logging object. <a href="#loglog">See below for more details</a>.
+ </div>
+ </li>
+ </ul>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">getLogger</div>
+ <div class="methodsignature"><code>Logger <strong>getLogger</strong>([String <em>loggerName</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">loggerName</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ <p>
+ Returns a logger with the specified name, creating it if a logger with that name does not
+ already exist. If no name is specified, a logger is returned with name <code>[anonymous]</code>, and
+ subsequent calls to <code>getLogger()</code> (with no logger name specified) will return
+ this same logger object.
+ </p>
+ <p>
+ Note that the names <code>[anonymous]</code>, <code>[default]</code>, <code>[null]</code>
+ and <code>root</code> are reserved for
+ the anonymous logger, default logger, null logger and root logger respectively.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getDefaultLogger</div>
+ <div class="methodsignature"><code>Logger <strong>getDefaultLogger</strong>()</code></div>
+ <div class="summary">
+ Convenience method that returns the default logger. The default logger
+ has a single appender: a <code><a href="#popupappender">PopUpAppender</a></code>
+ with the default layout, width and height, and with <code>focusPopUp</code> set to false
+ and <code>lazyInit</code>, <code>useOldPopUp</code> and
+ <code>complainAboutPopUpBlocking</code> all set to true.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getNullLogger</div>
+ <div class="methodsignature"><code>Logger <strong>getNullLogger</strong>()</code></div>
+ <div class="summary">
+ Returns an empty logger with no appenders. Useful for disabling all logging.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getRootLogger</div>
+ <div class="methodsignature"><code>Logger <strong>getRootLogger</strong>()</code></div>
+ <div class="summary">
+ Returns the root logger from which all other loggers derive.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">resetConfiguration</div>
+ <div class="methodsignature"><code>void <strong>resetConfiguration</strong>()</code></div>
+ <div class="summary">
+ Resets the all loggers to their default level.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setEnabled</div>
+ <div class="methodsignature"><code>void <strong>setEnabled</strong>(Boolean <em>enabled</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">enabled</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Enables or disables all logging, depending on <code>enabled</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns true or false depending on whether logging is enabled.
+ </div>
+ </li>
+ <li class="method" id="log4javascriptaddeventlistener">
+ <div class="name">addEventListener</div>
+ <div class="methodsignature"><code>void <strong>addEventListener</strong>(String <em>eventType</em>, Function <em>listener</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">eventType</code>
+ </li>
+ <li class="param">
+ <code class="paramname">listener</code>
+ </li>
+ </ul>
+ <div class="summary">
+ <p>
+ Adds a function to be called when an event of the type specified occurs in log4javascript.
+ Supported event types are <code>load</code> (occurs once the page has loaded) and
+ <code>error</code>.
+ </p>
+ <p>
+ Each listener is pased three paramaters:
+ </p>
+ <ul>
+ <li><code>sender</code>. The object that raised the event (i.e. the log4javascript object);</li>
+ <li><code>eventType</code>. The type of the event;</li>
+ <li>
+ <code>eventArgs</code>. An object containing of event-specific arguments. For the <code>error</code> event,
+ this is an object with properties <code>message</code> and <code>exception</code>. For the <code>load</code>
+ event this is an empty object.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">removeEventListener</div>
+ <div class="methodsignature"><code>void <strong>removeEventListener</strong>(String <em>eventType</em>, Function <em>listener</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">eventType</code>
+ </li>
+ <li class="param">
+ <code class="paramname">listener</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Removes the event listener function supplied for the event of the type specified.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">dispatchEvent</div>
+ <div class="methodsignature"><code>void <strong>dispatchEvent</strong>(String <em>eventType</em>, Object <em>eventArgs</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">eventType</code>
+ </li>
+ <li class="param">
+ <code class="paramname">eventArgs</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Raises an event of type <code>eventType</code> on the <code>log4javascript</code> object.
+ Each of the listeners for this type of event (registered via <code>addEventListener</code>)
+ is called and passed <code>eventArgs</code> as the third parameter.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setEventTypes</div>
+ <div class="methodsignature"><code>void <strong>setEventTypes</strong>(Array <em>eventTypes</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">eventTypes</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Used internally to specify the types of events that the <code>log4javascript</code> object can raise.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setShowStackTraces</div>
+ <div class="methodsignature"><code>void <strong>setShowStackTraces</strong>(Boolean <em>show</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">show</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Enables or disables displaying of error stack traces, depending on <code>show</code>.
+ By default, stack traces are not displayed. (Only works in Firefox)
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">evalInScope</div>
+ <div class="methodsignature"><code>Object <strong>evalInScope</strong>(String <em>expr</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">expr</code>
+ </li>
+ </ul>
+ <div class="summary">
+ This evaluates the given expression in the log4javascript scope, thus allowing
+ scripts to access internal log4javascript variables and functions. This was written
+ for the purposes of automated testing but could be used by custom extensions to
+ log4javascript.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="levels">
+ <h2>Levels</h2>
+ <p>
+ Levels are available as static properties of the <code>log4javascript.Level</code>
+ object. In ascending order of severity:
+ </p>
+ <ol>
+ <li><code>log4javascript.Level.ALL</code></li>
+ <li><code>log4javascript.Level.TRACE</code></li>
+ <li><code>log4javascript.Level.DEBUG</code></li>
+ <li><code>log4javascript.Level.INFO</code></li>
+ <li><code>log4javascript.Level.WARN</code></li>
+ <li><code>log4javascript.Level.ERROR</code></li>
+ <li><code>log4javascript.Level.FATAL</code></li>
+ <li><code>log4javascript.Level.OFF</code></li>
+ </ol>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="loggers">
+ <h2>Loggers</h2>
+ <p>
+ It is possible to have multiple loggers in log4javascript. For example, you
+ may wish to have a logger for debugging purposes that logs messages to a
+ pop-up window and a separate logger that reports any client-side application
+ errors to the server via Ajax.
+ </p>
+ <div id="loggerhierarchy">
+ <h3>Logger hierarchy and appender additivity</h3>
+ <p>
+ From version 1.4, log4javascript has hierarchical loggers, implemented in the same way
+ as log4j. In summary, you specify a logger's parent logger by means of a dot between the
+ parent logger name and the child logger name. Therefore the logger <code>tim.app.security</code>
+ inherits from <code>tim.app</code>, which in turn inherits from <code>tim</code> which,
+ finally, inherits from the root logger.
+ </p>
+ <p>
+ What inheritance means for a logger is that in the absence of a threshold level set
+ specifically on the logger it inherits its level from its parent; also, a logger inherits
+ all its parent's appenders (this is known as <em>appender additivity</em> in log4j. This
+ behaviour can be enabled or disabled via <code>setAdditivity()</code>. See below). In the
+ above example, if the root logger has a level of <code>DEBUG</code> and one appender,
+ each of the loggers <code>tim.app.security</code>, <code>tim.app</code> and <code>tim</code> would
+ inherit the root level's appender. If, say, <code>tim.app</code>'s threshold level was set
+ to <code>WARN</code>, <code>tim</code>'s effective level would remain at <code>DEBUG</code>
+ (inherited from the root logger) while <code>tim.app.security</code>'s effective level would
+ be <code>WARN</code>, inherited from <code>tim.app</code>. The important thing to note is
+ that appenders accumulate down the logger hierarchy while levels are simply inherited from
+ the nearest ancestor with a threshold level set.
+ </p>
+ <p>
+ For a detailed explanation of the logger hierarchy, see the
+ <a href="http://logging.apache.org/log4j/docs/manual.html" target="_blank"
+ title="Log4j manual (opens in new window)">log4j manual</a>.
+ </p>
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ It is not possible to instantiate loggers directly. Instead you must use
+ one of the methods of the <code>log4javascript</code> object: <code>getLogger</code>,
+ <code>getRootLogger</code>, <code>getDefaultLogger</code> or <code>getNullLogger</code>.
+ </li>
+ </ul>
+ <h4>Logger methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">addAppender</div>
+ <div class="methodsignature"><code>void <strong>addAppender</strong>(Appender <em>appender</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">appender</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Adds the given appender.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">removeAppender</div>
+ <div class="methodsignature"><code>void <strong>removeAppender</strong>(Appender <em>appender</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">appender</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Removes the given appender.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">removeAllAppenders</div>
+ <div class="methodsignature"><code>void <strong>removeAllAppenders</strong>()</code></div>
+ <div class="summary">
+ Clears all appenders for the current logger.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setLevel</div>
+ <div class="methodsignature"><code>void <strong>setLevel</strong>(Level <em>level</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">level</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Sets the level. Log messages of a lower level than <code>level</code> will not be logged.
+ Default value is <code>DEBUG</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getLevel</div>
+ <div class="methodsignature"><code>Level <strong>getLevel</strong>()</code></div>
+ <div class="summary">
+ Returns the level explicitly set for this logger or <code>null</code> if none has been set.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getEffectiveLevel</div>
+ <div class="methodsignature"><code>Level <strong>getEffectiveLevel</strong>()</code></div>
+ <div class="summary">
+ Returns the level at which the logger is operating. This is either the level explicitly
+ set on the logger or, if no level has been set, the effective level of the logger's parent.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setAdditivity</div>
+ <div class="methodsignature"><code>void <strong>setAdditivity</strong>(Boolean <em>additivity</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">additivity</code>
+ </li>
+ </ul>
+ <div class="summary">
+ <p>
+ Sets whether appender additivity is enabled (the default) or disabled. If set to false, this
+ particular logger will not inherit any appenders form its ancestors. Any descendant of this
+ logger, however, will inherit from its ancestors as normal, unless its own additivity is
+ explicitly set to false.
+ </p>
+ <p>
+ Default value is <code>true</code>.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getAdditivity</div>
+ <div class="methodsignature"><code>Level <strong>getLevel</strong>()</code></div>
+ <div class="summary">
+ Returns whether additivity is enabled for this logger.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">log</div>
+ <div class="methodsignature"><code>void <strong>log</strong>(Level <em>level</em>, Object <em>params</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">level</code>
+ </li>
+ <li class="param">
+ <code class="paramname">params</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Generic logging method used by wrapper methods such as <code>debug</code>,
+ <code>error</code> etc.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ The signature of this method has changed in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">trace</div>
+ <div class="methodsignature"><code>void <strong>trace</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>TRACE</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Logging of multiple messages in one call is new in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">debug</div>
+ <div class="methodsignature"><code>void <strong>debug</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>DEBUG</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Logging of multiple messages in one call is new in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">info</div>
+ <div class="methodsignature"><code>void <strong>info</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>INFO</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Logging of multiple messages in one call is new in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">warn</div>
+ <div class="methodsignature"><code>void <strong>warn</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>WARN</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Logging of multiple messages in one call is new in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">error</div>
+ <div class="methodsignature"><code>void <strong>error</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>ERROR</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Logging of multiple messages in one call is new in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">fatal</div>
+ <div class="methodsignature"><code>void <strong>fatal</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>FATAL</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Logging of multiple messages in one call is new in 1.4.
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">isEnabledFor</div>
+ <div class="methodsignature"><code>Boolean <strong>isEnabledFor</strong>(Level <em>level</em>, Error <em>exception</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">level</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Returns whether the logger is enabled for the specified level.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isTraceEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isTraceEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>TRACE</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isDebugEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isDebugEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>DEBUG</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isInfoEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isInfoEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>INFO</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isWarnEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isWarnEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>WARN</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isErrorEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isErrorEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>ERROR</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isFatalEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isFatalEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>FATAL</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">group</div>
+ <div class="methodsignature"><code>void <strong>group</strong>(String <em>name</em>, Boolean <em>initiallyExpanded</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">name</code>
+ </li>
+ <li class="param">
+ <code class="paramname">initiallyExpanded</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Starts a new group of log messages. In appenders that support grouping (currently
+ <code><a href="#popupappender">PopUpAppender</a></code> and
+ <code><a href="#inpageappender">InPageAppender</a></code>), a group appears as an expandable
+ section in the console, labelled with the <code>name</code> specified.
+ Specifying <code>initiallyExpanded</code> determines whether the
+ group starts off expanded (the default is <code>true</code>). Groups may be nested.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">groupEnd</div>
+ <div class="methodsignature"><code>void <strong>groupEnd</strong>()</code></div>
+ <div class="summary">
+ Ends the current group. If there is no group then this function has no effect.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">time</div>
+ <div class="methodsignature"><code>void <strong>time</strong>(String <em>name</em>, Level <em>level</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">name</code>
+ </li>
+ <li class="param">
+ <code class="paramname">level</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Starts a timer with name <code>name</code>. When the timer is ended with a
+ call to <code>timeEnd</code> using the same name, the amount of time that
+ has elapsed in milliseconds since the timer was started is logged at level
+ <code>level</code>. If not level is supplied, the level defaults to <code>INFO</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">timeEnd</div>
+ <div class="methodsignature"><code>void <strong>timeEnd</strong>(String <em>name</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">name</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Ends the timer with name <code>name</code> and logs the time elapsed.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">assert</div>
+ <div class="methodsignature"><code>void <strong>assert</strong>(Object <em>expr</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">expr</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Asserts the given expression is <code>true</code> or evaluates to <code>true</code>.
+ If so, nothing is logged. If not, an error is logged at the <code>ERROR</code> level.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="appenders">
+ <h2>Appenders</h2>
+ <div id="appender">
+ <h3>Appender</h3>
+ <p>
+ There are methods common to all appenders, as listed below.
+ </p>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">doAppend</div>
+ <div class="methodsignature"><code>void <strong>doAppend</strong>(LoggingEvent <em>loggingEvent</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">loggingEvent</code>
+ </li>
+ </ul>
+ <div class="summary">
+ <p>
+ Checks the logging event's level is at least as severe as the appender's
+ threshold and calls the appender's <code>append</code> method if so.
+ </p>
+ <p>
+ This method should not in general be used directly or overridden.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">append</div>
+ <div class="methodsignature"><code>void <strong>append</strong>(LoggingEvent <em>loggingEvent</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">loggingEvent</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Appender-specific method to append a log message. Every appender object should implement
+ this method.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setLayout</div>
+ <div class="methodsignature"><code>void <strong>setLayout</strong>(Layout <em>layout</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">layout</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Sets the appender's layout.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getLayout</div>
+ <div class="methodsignature"><code>Layout <strong>getLayout</strong>()</code></div>
+ <div class="summary">
+ Returns the appender's layout.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setThreshold</div>
+ <div class="methodsignature"><code>void <strong>setThreshold</strong>(Level <em>level</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">level</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Sets the appender's threshold. Log messages of level less severe than this
+ threshold will not be logged.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getThreshold</div>
+ <div class="methodsignature"><code>Level <strong>getThreshold</strong>()</code></div>
+ <div class="summary">
+ Returns the appender's threshold.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">toString</div>
+ <div class="methodsignature"><code>string <strong>toString</strong>()</code></div>
+ <div class="summary">
+ Returns a string representation of the appender. Every appender object should implement
+ this method.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="alertappender">
+ <h3>AlertAppender</h3>
+ <p class="editions">Editions: <strong>Standard</strong></p>
+ <p>
+ Displays a log message as a JavaScript alert.
+ </p>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">AlertAppender</div>
+ <div class="methodsignature"><code><strong>AlertAppender</strong>()</code></div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="ajaxappender">
+ <h3>AjaxAppender</h3>
+ <p class="editions">Editions: <strong>Standard, Production</strong></p>
+ <p>
+ A flexible appender that asynchronously sends log messages to a server via HTTP
+ (Ajax, if you insist, though the 'x' of Ajax only comes into play in any form if you use an
+ <code><a href="#xmllayout">XmlLayout</a></code>).
+ </p>
+ <p>
+ The default configuration is to send each log message as a separate HTTP post
+ request to the server using an <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>,
+ without waiting for a response before sending any subsequent requests. However,
+ an <code>AjaxAppender</code> may be configured to do any one of or combinations of the following:
+ </p>
+ <ul>
+ <li>
+ send log messages in batches (if the selected layout supports it - particularly suited
+ to <code>AjaxAppender</code> are <code><a href="#jsonlayout">JsonLayout</a></code> and
+ <code><a href="#xmllayout">XmlLayout</a></code>, both of which allow batching);
+ </li>
+ <li>
+ wait for a response from a previous request before sending the next log message / batch
+ of messages;
+ </li>
+ <li>
+ send all queued log messages at timed intervals.
+ </li>
+ </ul>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ AjaxAppender relies on the <code>XMLHttpRequest</code> object. It also requires
+ the presence of correctly implemented <code>setRequestHeader</code> method on
+ this object, which rules out Opera prior to version 8.01. If your browser does not
+ support the necessary objects then one alert will display to explain why it
+ doesn't work, after which the appender will silently switch off.
+ </li>
+ <li>
+ In AjaxAppender only, <code>setLayout</code> may not be called after the first
+ message has been logged.
+ </li>
+ <li>
+ The default layout is <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>.
+ </li>
+ <li>
+ From version 1.4, log message data is always sent as one or more name/value pairs.
+ In the case of <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>, data
+ is sent the same as in previous versions. For other layouts such as
+ <code><a href="#jsonlayout">JsonLayout</a></code> and
+ <code><a href="#xmllayout">XmlLayout</a></code>, the formatted log message is posted as
+ the value of a parameter called <code>data</code>, though this may be changed via
+ <code>setPostVarName</code>.
+ </li>
+ <li>
+ From version 1.4, log message timestamps are sent as standard JavaScript times, i.e.
+ the number of milliseconds since 00:00:00 UTC on January 1, 1970.
+ </li>
+ <li>
+ <p>
+ Also from version 1.4, any outstanding log messages may optionally be sent when the
+ main page unloads (i.e. user follows a link, closes the window or refreshes the
+ page). This behaviour may be enabled using <code>setSendAllOnUnload</code>; see
+ below.
+ </p>
+ <p>
+ This behaviour is dependent on <code>window.onbeforeunload</code>; unfortunately,
+ Opera does not always raise this event, so this feature does not work reliably in
+ Opera.
+ </p>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">AjaxAppender</div>
+ <div class="methodsignature">
+ <code><strong>AjaxAppender</strong>(String <em>url</em>)</code>
+ </div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">url</code>
+ <div>
+ The URL to which log messages should be sent. Note that this is subject
+ to the usual Ajax restrictions: the URL should be in the same domain as that
+ of the page making the request.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">setSendAllOnUnload</div>
+ <div class="methodsignature"><code>void <strong>setSendAllOnUnload</strong>(Boolean <em>sendAllOnUnload</em>)</code></div>
+ <div class="summary">
+ <p>
+ [<em>not available after first message logged</em>]
+ </p>
+ <p>
+ Whether to send all remaining unsent log messages to the server when the page
+ unloads.
+ </p>
+ <p>
+ Since version 1.4.3, the default value is <code>false</code>. Previously the
+ default was <code>true</code>.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ This feature was found not to work prior to version 1.4.3 in WebKit
+ browsers (e.g. Google Chrome, Safari). As a result, a workaround was
+ implemented in 1.4.3 which has the unfortunate side effect of popping up a
+ confirmation dialog to the user if there are any log messages to send when
+ the page unloads. As a result, this feature is now obtrusive for the user
+ and is therefore disabled by default.
+ </li>
+ <li>
+ This feature does not work in any version of Opera.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isSendAllOnUnload</div>
+ <div class="methodsignature"><code>Boolean <strong>isSendAllOnUnload</strong>()</code></div>
+ <div class="summary">
+ Returns whether all remaining unsent log messages are sent to the server when the page unloads.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setPostVarName</div>
+ <div class="methodsignature"><code>void <strong>setPostVarName</strong>(String <em>postVarName</em>)</code></div>
+ <div class="summary">
+ <p>
+ [<em>not available after first message logged</em>]
+ </p>
+ <p>
+ Sets the post variable name whose value will the formatted log message(s) for
+ each request.
+ </p>
+ <p>
+ Default value is <code>data</code>.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ This has no effect if the current layout is an
+ <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getPostVarName</div>
+ <div class="methodsignature"><code>String <strong>getPostVarName</strong>()</code></div>
+ <div class="summary">
+ Returns the post variable name whose value will the formatted log message(s) for
+ each request.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setTimed</div>
+ <div class="methodsignature"><code>void <strong>setTimed</strong>(Boolean <em>timed</em>)</code></div>
+ <div class="summary">
+ <p>
+ [<em>not available after first message logged</em>]
+ </p>
+ <p>
+ Whether to send log messages to the server at regular, timed intervals.
+ </p>
+ <p>
+ Default value is <code>false</code>.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isTimed</div>
+ <div class="methodsignature"><code>Boolean <strong>isTimed</strong>()</code></div>
+ <div class="summary">
+ Returns whether log messages are sent to the server at regular, timed intervals.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setWaitForResponse</div>
+ <div class="methodsignature"><code>void <strong>setWaitForResponse</strong>(Boolean <em>waitForResponse</em>)</code></div>
+ <div class="summary">
+ <p>
+ [<em>not available after first message logged</em>]
+ </p>
+ <p>
+ Sets whether to wait for a response from a previous HTTP request from this
+ appender before sending the next log message / batch of messages.
+ </p>
+ <p>
+ Default value is <code>false</code>.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isWaitForResponse</div>
+ <div class="methodsignature"><code>Boolean <strong>isWaitForResponse</strong>()</code></div>
+ <div class="summary">
+ Returns whether the appender waits for a response from a previous HTTP request from this
+ appender before sending the next log message / batch of messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setBatchSize</div>
+ <div class="methodsignature"><code>void <strong>setBatchSize</strong>(Number <em>batchSize</em>)</code></div>
+ <div class="summary">
+ <p>
+ [<em>not available after first message logged</em>]
+ </p>
+ <p>
+ Sets the number of log messages to send in each request. If not specified,
+ defaults to <code>1</code>.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Setting this to a number greater than 1 means that the appender will wait
+ until it has forwarded that many valid log messages before sending any more.
+ This also means that if the page unloads for any reason and <code>sendAllOnUnload</code>
+ is not set to <code>true</code>, any log messages waiting in the queue will not be sent.
+ </li>
+ <li>
+ If batching is used in conjunction with timed sending of log messages,
+ messages will still be sent in batches of size <code>batchSize</code>,
+ regardless of how many log messages are queued by the time the timed
+ sending is invoked. Incomplete batches will not be sent except when the
+ page unloads, if <code>sendAllOnUnload</code> is set to <code>true</code>.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getBatchSize</div>
+ <div class="methodsignature"><code>Number <strong>getBatchSize</strong>()</code></div>
+ <div class="summary">
+ Returns the number of log messages sent in each request. See above for more details.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setTimerInterval</div>
+ <div class="methodsignature"><code>void <strong>setTimerInterval</strong>(Number <em>timerInterval</em>)</code></div>
+ <div class="summary">
+ <p>
+ [<em>not available after first message logged</em>]
+ </p>
+ <p>
+ Sets the length of time in milliseconds between each sending of queued log
+ messages.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ <code>timerInterval</code> only has an effect in conjunction with
+ <code>timed</code> (set by <code>setTimed()</code>. If <code>timed</code>
+ is set to false then <code>timerInterval</code> has no effect.
+ </li>
+ <li>
+ Each time the queue of log messages or batches of messages is cleared,
+ the countdown to the next sending only starts once the final request
+ has been sent (and, if <code>waitForResponse</code> is set to <code>true</code>,
+ the final response received). This means that the actual interval at
+ which the queue of messages is cleared cannot be fixed.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getTimerInterval</div>
+ <div class="methodsignature"><code>Number <strong>getTimerInterval</strong>()</code></div>
+ <div class="summary">
+ Returns the length of time in milliseconds between each sending of queued log
+ messages. See above for more details.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setRequestSuccessCallback</div>
+ <div class="methodsignature"><code>void <strong>setRequestSuccessCallback</strong>(Function <em>requestSuccessCallback</em>)</code></div>
+ <div class="summary">
+ <p>
+ Sets the function that is called whenever a successful request is made, called at the
+ point at which the response is received. This feature can be used to confirm
+ whether a request has been successful and act accordingly.
+ </p>
+ <p>
+ A single parameter, <code>xmlHttp</code>, is passed to the callback function.
+ This is the XMLHttpRequest object that performed the request.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setFailCallback</div>
+ <div class="methodsignature"><code>void <strong>setFailCallback</strong>(Function <em>failCallback</em>)</code></div>
+ <div class="summary">
+ <p>
+ Sets the function that is called whenever any kind of failure occurs in the appender,
+ including browser deficiencies or configuration errors (e.g. supplying a
+ non-existent URL to the appender). This feature can be used to handle
+ AjaxAppender-specific errors.
+ </p>
+ <p>
+ A single parameter, <code>message</code>, is passed to the callback function.
+ This is the error-specific message that caused the failure.
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setSessionId</div>
+ <div class="methodsignature"><code>void <strong>setSessionId</strong>(String <em>sessionId</em>)</code></div>
+ <div class="summary">
+ Sets the session id sent to the server each time a request is made.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getSessionId</div>
+ <div class="methodsignature"><code>String <strong>getSessionId</strong>()</code></div>
+ <div class="summary">
+ Returns the session id sent to the server each time a request is made.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">addHeader</div>
+ <div class="methodsignature"><code>void <strong>addHeader</strong>(String <em>name</em>,
+ String <em>value</em>)</code></div>
+ <div class="summary">
+ <p>
+ Adds an HTTP header that is sent with each request.
+ </p>
+ <p>
+ <strong>Since: 1.4.3</strong>
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getHeaders</div>
+ <div class="methodsignature"><code>Array <strong>getHeaders</strong>()</code></div>
+ <div class="summary">
+ Returns an array of the additional headers that are sent with each HTTP request.
+ Each array item is an object with properties <code>name</code> and
+ <code>value</code>.
+ <p>
+ <strong>Since: 1.4.3</strong>
+ </p>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">sendAll</div>
+ <div class="methodsignature"><code>void <strong>sendAll</strong>()</code></div>
+ <div class="summary">
+ Sends all log messages in the queue. If log messages are batched then only completed
+ batches are sent.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="popupappender">
+ <h3>PopUpAppender</h3>
+ <p class="editions">Editions: <strong>Standard</strong></p>
+ <p>
+ Logs messages to a pop-up console window (note: you will need to disable pop-up
+ blockers to use it). The pop-up displays a list of all log messages, and has
+ the following features:
+ </p>
+ <ul>
+ <li>log messages are colour-coded by severity;</li>
+ <li>log messages are displayed in a monospace font to allow easy readability;</li>
+ <li>switchable wrap mode to allow wrapping of long lines</li>
+ <li>all whitespace in log messages is honoured (except in wrap mode);</li>
+ <li>filters to show and hide messages of a particular level;</li>
+ <li>
+ search facility that allows searching of log messages as you type, with the
+ following features:
+ <ul>
+ <li>supports regular expressions;</li>
+ <li>case sensitive or insensitive matching;</li>
+ <li>buttons to navigate through all the matches;</li>
+ <li>switch to highlight all matches;</li>
+ <li>switch to filter out all log messages that contain no matches;</li>
+ <li>switch to enable or disable the search;</li>
+ <li>search is dynamically applied to every log message as it is added to the console.</li>
+ </ul>
+ </li>
+ <li>switch to toggle between logging from the top down and from the bottom up;</li>
+ <li>switch to turn automatic scrolling when a new message is logged on and off;</li>
+ <li>switch to turn off all logging to the pop-up (useful if a timer is generating unwanted log messages);</li>
+ <li>optional configurable limit to the number of log message that are displayed. If
+ set and this limit is reached, each new log message will cause the oldest one to
+ be discarded;</li>
+ <li>grouped log messages. Groups may be nested and each has a button to show or hide the log messages in that group;</li>
+ <li>clear button to allow user to delete all current log messages.</li>
+ <li>
+ command prompt with up/down arrow history. Command line functions may be added
+ to the appender. Several command line functions are built in:
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="methodsignature"><code><strong>$</strong>(String <em>id</em>)</code></div>
+ <div class="summary">
+ Prints a string representation of a single element with the id supplied.
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>dir</strong>(Object <em>obj</em>)</code></div>
+ <div class="summary">
+ Prints a list of a properties of the object supplied.
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>dirxml</strong>(HTMLElement <em>el</em>)</code></div>
+ <div class="summary">
+ Prints the XML source code of an HTML or XML element
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>cd</strong>(Object <em>win</em>)</code></div>
+ <div class="summary">
+ Changes the scope of execution of commands to the named frame or window (either a
+ window/frame name or a reference to a window object may be supplied).
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>clear</strong>()</code></div>
+ <div class="summary">
+ Clears the console.
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>keys</strong>(Object <em>obj</em>)</code></div>
+ <div class="summary">
+ Prints a list of the names of all properties of the object supplied.
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>values</strong>(Object <em>obj</em>)</code></div>
+ <div class="summary">
+ Prints a list of the values of all properties of the object supplied.
+ </div>
+ </li>
+ <li class="method">
+ <div class="methodsignature"><code><strong>expansionDepth</strong>(Number <em>depth</em>)</code></div>
+ <div class="summary">
+ Sets the number of levels of expansion of objects that are displayed by
+ the command line. The default value is 1.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ <p>
+ The default layout for this appender is <code><a href="#patternlayout">PatternLayout</a></code>
+ with pattern string
+ </p>
+ <p>
+ <code>%d{HH:mm:ss} %-5p - %m{1}%n</code>
+ </p>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">PopUpAppender</div>
+ <div class="methodsignature">
+ <code><strong>PopUpAppender</strong>([Boolean <em>lazyInit</em>,
+ Boolean <em>initiallyMinimized</em>, Boolean <em>useDocumentWrite</em>,
+ Number <em>width</em>, Number <em>height</em>])</code>
+ </div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">lazyInit</code>
+ [<em>optional</em>]
+ <div>
+ Set this to <code>true</code> to open the pop-up only when the first log
+ message reaches the appender. Otherwise, the pop-up window opens as soon as the
+ appender is created. If not specified, defaults to <code>false</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">initiallyMinimized</code>
+ [<em>optional</em>]
+ <div>
+ <p>
+ Whether the console window should start off hidden / minimized.
+ If not specified, defaults to <code>false</code>.
+ </p>
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">useDocumentWrite</code>
+ [<em>optional</em>]
+ <div>
+ <p>
+ Specifies how the console window is created. By default, the console window is
+ created dynamically using <code>document</code>'s <code>write</code> method. This has the
+ advantage of keeping all the code in one single JavaScript file. However, if your
+ page sets <code>document.domain</code> then the browser prevents script access to
+ a window unless it too has the same value set for <code>document.domain</code>. To
+ get round this issue, you can set <code>useDocumentWrite</code> to <code>false</code>
+ and log4javascript will instead use the external HTML file <code>console.html</code>
+ (or <code>console_uncompressed.html</code> if you're using an uncompressed version of
+ log4javascript.js), which must be placed in the same directory as your log4javascript.js file.
+ </p>
+ <p>
+ Note that if <code>useDocumentWrite</code> is set to <code>true</code>, the old pop-up
+ window will always be closed and a new one created whenever the page is refreshed, even
+ if <code>setUseOldPopUp(true)</code> has been called.
+ </p>
+ <p>
+ In general it's simpler to use the <code>document.write</code> method, so unless your
+ page needs to set <code>document.domain</code>, <code>useDocumentWrite</code> should
+ be set to <code>true</code>.
+ </p>
+ <p>
+ If not specified, defaults to <code>true</code>.
+ </p>
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">width</code>
+ [<em>optional</em>]
+ <div>
+ The outer width in pixels of the pop-up window. If not specified,
+ defaults to <code>600</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">height</code>
+ [<em>optional</em>]
+ <div>
+ The outer height in pixels of the pop-up window. If not specified,
+ defaults to <code>400</code>.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">isInitiallyMinimized</div>
+ <div class="methodsignature"><code>Boolean <strong>isInitiallyMinimized</strong>()</code></div>
+ <div class="summary">
+ Returns whether the console window starts off hidden / minimized.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setInitiallyMinimized</div>
+ <div class="methodsignature"><code>void <strong>setInitiallyMinimized</strong>(Boolean <em>initiallyMinimized</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets whether the console window should start off hidden / minimized.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isFocusPopUp</div>
+ <div class="methodsignature"><code>Boolean <strong>isFocusPopUp</strong>()</code></div>
+ <div class="summary">
+ Returns whether the pop-up window is focussed (i.e. brought it to the front)
+ when a new log message is added. Default value is <code>false</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setFocusPopUp</div>
+ <div class="methodsignature"><code>void <strong>setFocusPopUp</strong>(Boolean <em>focusPopUp</em>)</code></div>
+ <div class="summary">
+ Sets whether to focus the pop-up window (i.e. bring it to the front)
+ when a new log message is added.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isUseOldPopUp</div>
+ <div class="methodsignature"><code>Boolean <strong>isUseOldPopUp</strong>()</code></div>
+ <div class="summary">
+ <p>
+ Returns whether the same pop-up window is used if the main page is
+ reloaded. If set to <code>true</code>, when the page is reloaded
+ a line is drawn in the pop-up and subsequent log messages are added
+ to the same pop-up. Otherwise, a new pop-up window is created that
+ replaces the original pop-up. If not specified, defaults to
+ <code>true</code>.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ In Internet Explorer 5, the browser prevents this from working
+ properly, so a new pop-up window is always created when the main
+ page reloads. Also, the original pop-up does not get closed.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setUseOldPopUp</div>
+ <div class="methodsignature"><code>void <strong>setUseOldPopUp</strong>(Boolean <em>useOldPopUp</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets whether to use the same pop-up window if the main page is reloaded.
+ See <code>isUseOldPopUp</code> above for details.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isComplainAboutPopUpBlocking</div>
+ <div class="methodsignature"><code>Boolean <strong>isComplainAboutPopUpBlocking</strong>()</code></div>
+ <div class="summary">
+ Returns whether an alert is shown to the user when the pop-up window
+ cannot be created as a result of a pop-up blocker. Default value is <code>true</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setComplainAboutPopUpBlocking</div>
+ <div class="methodsignature"><code>void <strong>setComplainAboutPopUpBlocking</strong>(Boolean <em>complainAboutPopUpBlocking</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets whether to announce to show an alert to the user when the pop-up window
+ cannot be created as a result of a pop-up blocker.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isNewestMessageAtTop</div>
+ <div class="methodsignature"><code>Boolean <strong>isNewestMessageAtTop</strong>()</code></div>
+ <div class="summary">
+ Returns whether new log messages are displayed at the top of the pop-up window.
+ Default value is <code>false</code> (i.e. log messages are appended to the bottom of the window).
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setNewestMessageAtTop</div>
+ <div class="methodsignature"><code>void <strong>setNewestMessageAtTop</strong>(Boolean <em>newestMessageAtTop</em>)</code></div>
+ <div class="summary">
+ Sets whether to display new log messages at the top inside the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isScrollToLatestMessage</div>
+ <div class="methodsignature"><code>Boolean <strong>isScrollToLatestMessage</strong>()</code></div>
+ <div class="summary">
+ Returns whether the pop-up window scrolls to display the latest log message when a new message
+ is logged. Default value is <code>true</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setScrollToLatestMessage</div>
+ <div class="methodsignature"><code>void <strong>setScrollToLatestMessage</strong>(Boolean <em>scrollToLatestMessage</em>)</code></div>
+ <div class="summary">
+ Sets whether to scroll the pop-up window to display the latest log message when a new message
+ is logged.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isReopenWhenClosed</div>
+ <div class="methodsignature"><code>Boolean <strong>isReopenWhenClosed</strong>()</code></div>
+ <div class="summary">
+ Returns whether the pop-up window reopens automatically after being closed when a new log message is logged.
+ Default value is <code>false</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setReopenWhenClosed</div>
+ <div class="methodsignature"><code>void <strong>setReopenWhenClosed</strong>(Boolean <em>reopenWhenClosed</em>)</code></div>
+ <div class="summary">
+ Sets whether to reopen the pop-up window automatically after being closed when a new log message is logged.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getWidth</div>
+ <div class="methodsignature"><code>Number <strong>getWidth</strong>()</code></div>
+ <div class="summary">
+ Returns the outer width in pixels of the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setWidth</div>
+ <div class="methodsignature"><code>void <strong>setWidth</strong>(Number <em>width</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets the outer width in pixels of the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getHeight</div>
+ <div class="methodsignature"><code>Number <strong>getHeight</strong>()</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Returns the outer height in pixels of the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setHeight</div>
+ <div class="methodsignature"><code>void <strong>setHeight</strong>(Number <em>height</em>)</code></div>
+ <div class="summary">
+ Sets the outer height in pixels of the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getMaxMessages</div>
+ <div class="methodsignature"><code>Number <strong>getMaxMessages</strong>()</code></div>
+ <div class="summary">
+ Returns the largest number of log messages that are displayed and stored
+ by the the console. Once reached, a new log message wil cause the
+ oldest message to be discarded. Default value is <code>null</code>, which means no
+ limit is applied.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setMaxMessages</div>
+ <div class="methodsignature"><code>void <strong>setMaxMessages</strong>(Number <em>maxMessages</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets the largest number of messages displayed and stored by the console window. Set
+ this to <code>null</code> to make this number unlimited.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isShowCommandLine</div>
+ <div class="methodsignature"><code>Boolean <strong>isShowCommandLine</strong>()</code></div>
+ <div class="summary">
+ Returns whether the console includes a command line.
+ Default value is <code>true</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setShowCommandLine</div>
+ <div class="methodsignature"><code>void <strong>setShowCommandLine</strong>(Boolean <em>showCommandLine</em>)</code></div>
+ <div class="summary">
+ Sets whether the console includes a command line.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getCommandLineObjectExpansionDepth</div>
+ <div class="methodsignature"><code>Number <strong>getCommandLineObjectExpansionDepth</strong>()</code></div>
+ <div class="summary">
+ Returns the number of levels to expand when an object value is logged to the console.
+ Each property of an object above this threshold will be expanded if it is itself an object
+ or array, otherwise its string representation will be displayed. Default value is 1 (i.e.
+ the properties of the object logged will be displayed in their string representation but
+ not expanded).
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCommandLineObjectExpansionDepth:</div>
+ <div class="methodsignature"><code>void <strong>setCommandLineObjectExpansionDepth</strong>(Number <em>expansionDepth</em>)</code></div>
+ <div class="summary">
+ Sets the number of levels to expand when an object value is logged to the console.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getCommandWindow</div>
+ <div class="methodsignature"><code>Window <strong>getCommandWindow</strong>()</code></div>
+ <div class="summary">
+ Returns a reference to the window in which commands typed into the command line
+ are currently being executed.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCommandWindow</div>
+ <div class="methodsignature"><code>void <strong>setCommandWindow</strong>(Window <em>commandWindow</em>)</code></div>
+ <div class="summary">
+ Sets the window in which commands typed into the command line are executed.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getCommandLayout</div>
+ <div class="methodsignature"><code>Number <strong>getCommandLayout</strong>()</code></div>
+ <div class="summary">
+ Returns the layout used to format the output for commands typed into the command line.
+ The default value is a <code><a href="#patternlayout">PatternLayout</a></code> with
+ pattern string <code>%m</code>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCommandLayout</div>
+ <div class="methodsignature"><code>void <strong>setCommandLayout</strong>(Layout <em>commandLayout</em>)</code></div>
+ <div class="summary">
+ Sets the layout used to format the output for commands typed into the command line.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">clear</div>
+ <div class="methodsignature"><code>void <strong>clear</strong>()</code></div>
+ <div class="summary">
+ Clears all messages from the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">close</div>
+ <div class="methodsignature"><code>void <strong>close</strong>()</code></div>
+ <div class="summary">
+ Closes the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">show</div>
+ <div class="methodsignature"><code>void <strong>show</strong>()</code></div>
+ <div class="summary">
+ Opens the pop-up window, if not already open.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">hide</div>
+ <div class="methodsignature"><code>void <strong>hide</strong>()</code></div>
+ <div class="summary">
+ Closes the pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">focus</div>
+ <div class="methodsignature"><code>void <strong>focus</strong>()</code></div>
+ <div class="summary">
+ Brings the console window to the top and gives it the focus.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">focusCommandLine</div>
+ <div class="methodsignature"><code>void <strong>focusCommandLine</strong>()</code></div>
+ <div class="summary">
+ Brings the console window to the top and gives the focus to the command line.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">focusSearch</div>
+ <div class="methodsignature"><code>void <strong>focusSearch</strong>()</code></div>
+ <div class="summary">
+ Brings the console window to the top and gives the focus to the search box.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">evalCommandAndAppend</div>
+ <div class="methodsignature"><code>void <strong>evalCommandAndAppend</strong>(String <em>expr</em>)</code></div>
+ <div class="summary">
+ Evaluates the expression and appends the result to the console.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">addCommandLineFunction</div>
+ <div class="methodsignature"><code>void <strong>addCommandLineFunction</strong>(String <em>functionName</em>, Function <em>commandLineFunction</em>)</code></div>
+ <div class="summary">
+ <p>
+ Adds a function with the name specified to the list of functions available on the command line.
+ This feature may be used to add custom functions to the command line.
+ </p>
+ <p>
+ When you call the function on the command line, <code>commandLineFunction</code> is executed with the
+ following three parameters:
+ </p>
+ <ul>
+ <li><em>appender</em>. A reference to the appender in which the command was executed;</li>
+ <li><em>args</em>.
+ An array-like list of parameters passed into the function on the command line
+ (actually a reference to the <code>arguments</code> object representing the parameters passed
+ into the function by the user);</li>
+ <li><em>returnValue</em>. This is an object with two properties that allow the function to control
+ how the result is displayed:
+ <ul>
+ <li><em>appendResult</em>. A boolean value that determines whether the returned value from this
+ function is appended to the console. The default value is <code>true</code>;</li>
+ <li><em>isError</em>. A boolean value that specifies whether the output of this function
+ should be displayed as an error. The default value is <code>false</code>.</li>
+ </ul>
+ </li>
+ </ul>
+ <p>
+ The value returned by the function is formatted by the command layout and appended to the console.
+ </p>
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="inpageappender">
+ <h3>InPageAppender</h3>
+ <p class="editions">Editions: <strong>Standard</strong></p>
+ <p>
+ Logs messages to a console window in the page. The console is identical
+ to that used by the <code><a href="#popupappender">PopUpAppender</a></code>, except
+ for the absence of a 'Close' button.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ Prior to log4javascript 1.3, InPageAppender was known as InlineAppender.
+ For the sake of backwards compatibility, InlineAppender is still included in
+ 1.3 and later as an alias for InPageAppender.
+ </li>
+ <li>
+ <p>
+ The default layout for this appender is <code><a href="#patternlayout">PatternLayout</a></code>
+ with pattern string
+ </p>
+ <p>
+ <code>%d{HH:mm:ss} %-5p - %m{1}%n</code>
+ </p>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">InPageAppender</div>
+ <div class="methodsignature">
+ <code><strong>InPageAppender</strong>(HTMLElement <em>container</em>[,
+ Boolean <em>lazyInit</em>, Boolean <em>initiallyMinimized</em>,
+ Boolean <em>useDocumentWrite</em>, String <em>width</em>, String <em>height</em>])</code>
+ </div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">container</code>
+ <div>
+ The container element for the console window. This should be an HTML element.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">lazyInit</code>
+ [<em>optional</em>]
+ <div>
+ Set this to <code>true</code> to create the console only when the first log
+ message reaches the appender. Otherwise, the console is initialized as soon as the
+ appender is created. If not specified, defaults to <code>true</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">initiallyMinimized</code>
+ [<em>optional</em>]
+ <div>
+ <p>
+ Whether the console window should start off hidden / minimized.
+ If not specified, defaults to <code>false</code>.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ In Safari (and possibly other browsers) hiding an <code>iframe</code>
+ resets its document, thus destroying the console window.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">useDocumentWrite</code>
+ [<em>optional</em>]
+ <div>
+ <p>
+ Specifies how the console window is created. By default, the console window is
+ created dynamically using <code>document</code>'s <code>write</code> method. This has the
+ advantage of keeping all the code in one single JavaScript file. However, if your
+ page sets <code>document.domain</code> then the browser prevents script access to
+ a window unless it too has the same value set for <code>document.domain</code>. To
+ get round this issue, you can set <code>useDocumentWrite</code> to <code>false</code>
+ and log4javascript will instead use the external HTML file <code>console.html</code>
+ (or <code>console_uncompressed.html</code> if you're using an uncompressed version of
+ log4javascript.js), which must be placed in the same directory as your log4javascript.js file.
+ </p>
+ <p>
+ In general it's simpler to use the <code>document.write</code> method, so unless your
+ page needs to set <code>document.domain</code>, <code>useDocumentWrite</code> should
+ be set to <code>true</code>.
+ </p>
+ <p>
+ If not specified, defaults to <code>true</code>.
+ </p>
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">width</code>
+ [<em>optional</em>]
+ <div>
+ The width of the console window. Any valid CSS length may be used. If not
+ specified, defaults to <code>100%</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">height</code>
+ [<em>optional</em>]
+ <div>
+ The height of the console window. Any valid CSS length may be used. If not
+ specified, defaults to <code>250px</code>.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">addCssProperty</div>
+ <div class="methodsignature"><code>void <strong>addCssProperty</strong>(String <em>name</em>, String <em>value</em>)</code></div>
+ <div class="summary">
+ Sets a CSS style property on the HTML element containing the console iframe.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isVisible</div>
+ <div class="methodsignature"><code>Boolean <strong>isVisible</strong>()</code></div>
+ <div class="summary">
+ Returns whether the console window is currently visible.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isInitiallyMinimized</div>
+ <div class="methodsignature"><code>Boolean <strong>isInitiallyMinimized</strong>()</code></div>
+ <div class="summary">
+ Returns whether the console window starts off hidden / minimized.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setInitiallyMinimized</div>
+ <div class="methodsignature"><code>void <strong>setInitiallyMinimized</strong>(Boolean <em>initiallyMinimized</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets whether the console window should start off hidden / minimized.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isNewestMessageAtTop</div>
+ <div class="methodsignature"><code>Boolean <strong>isNewestMessageAtTop</strong>()</code></div>
+ <div class="summary">
+ Returns whether new log messages are displayed at the top of the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setNewestMessageAtTop</div>
+ <div class="methodsignature"><code>void <strong>setNewestMessageAtTop</strong>(Boolean <em>newestMessageAtTop</em>)</code></div>
+ <div class="summary">
+ Sets whether to display new log messages at the top inside the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isScrollToLatestMessage</div>
+ <div class="methodsignature"><code>Boolean <strong>isScrollToLatestMessage</strong>()</code></div>
+ <div class="summary">
+ Returns whether the pop-up window scrolls to display the latest log message when a new message
+ is logged.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setScrollToLatestMessage</div>
+ <div class="methodsignature"><code>void <strong>setScrollToLatestMessage</strong>(Boolean <em>scrollToLatestMessage</em>)</code></div>
+ <div class="summary">
+ Sets whether to scroll the console window to display the latest log message when a new message
+ is logged.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getWidth</div>
+ <div class="methodsignature"><code>String <strong>getWidth</strong>()</code></div>
+ <div class="summary">
+ Returns the outer width of the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setWidth</div>
+ <div class="methodsignature"><code>void <strong>setWidth</strong>(String <em>width</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets the outer width of the console window. Any valid CSS length may be used.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getHeight</div>
+ <div class="methodsignature"><code>String <strong>getHeight</strong>()</code></div>
+ <div class="summary">
+ Returns the outer height of the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setHeight</div>
+ <div class="methodsignature"><code>void <strong>setHeight</strong>(String <em>height</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets the outer height of the console window. Any valid CSS length may be used.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getMaxMessages</div>
+ <div class="methodsignature"><code>Number <strong>getMaxMessages</strong>()</code></div>
+ <div class="summary">
+ Returns the largest number of messages displayed and stored by the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setMaxMessages</div>
+ <div class="methodsignature"><code>void <strong>setMaxMessages</strong>(Number <em>maxMessages</em>)</code></div>
+ <div class="summary">
+ [<em>not available after initialization</em>]
+ <br />
+ Sets the largest number of messages displayed and stored by the console window. Set
+ this to <code>null</code> to make this number unlimited.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isShowCommandLine</div>
+ <div class="methodsignature"><code>Boolean <strong>isShowCommandLine</strong>()</code></div>
+ <div class="summary">
+ Returns whether the console includes a command line.
+ Default value is <code>true</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setShowCommandLine</div>
+ <div class="methodsignature"><code>void <strong>setShowCommandLine</strong>(Boolean <em>showCommandLine</em>)</code></div>
+ <div class="summary">
+ Sets whether the console includes a command line.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getCommandLineObjectExpansionDepth</div>
+ <div class="methodsignature"><code>Number <strong>getCommandLineObjectExpansionDepth</strong>()</code></div>
+ <div class="summary">
+ Returns the number of levels to expand when an object value is logged to the console.
+ Each property of an object above this threshold will be expanded if it is itself an object
+ or array, otherwise its string representation will be displayed. Default value is 1 (i.e.
+ the properties of the object logged will be displayed in their string representation but
+ not expanded).
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCommandLineObjectExpansionDepth:</div>
+ <div class="methodsignature"><code>void <strong>setCommandLineObjectExpansionDepth</strong>(Number <em>expansionDepth</em>)</code></div>
+ <div class="summary">
+ Sets the number of levels to expand when an object value is logged to the console.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getCommandWindow</div>
+ <div class="methodsignature"><code>Window <strong>getCommandWindow</strong>()</code></div>
+ <div class="summary">
+ Returns a reference to the window in which commands typed into the command line
+ are currently being executed.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCommandWindow</div>
+ <div class="methodsignature"><code>void <strong>setCommandWindow</strong>(Window <em>commandWindow</em>)</code></div>
+ <div class="summary">
+ Sets the window in which commands typed into the command line are executed.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getCommandLayout</div>
+ <div class="methodsignature"><code>Number <strong>getCommandLayout</strong>()</code></div>
+ <div class="summary">
+ Returns the layout used to format the output for commands typed into the command line.
+ The default value is a <code><a href="#patternlayout">PatternLayout</a></code> with
+ pattern string <code>%m</code>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCommandLayout</div>
+ <div class="methodsignature"><code>void <strong>setCommandLayout</strong>(Layout <em>commandLayout</em>)</code></div>
+ <div class="summary">
+ Sets the layout used to format the output for commands typed into the command line.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">clear</div>
+ <div class="methodsignature"><code>void <strong>clear</strong>()</code></div>
+ <div class="summary">
+ Clears all messages from the console window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">show</div>
+ <div class="methodsignature"><code>void <strong>show</strong>()</code></div>
+ <div class="summary">
+ <p>
+ Shows / unhides the console window.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ In Safari (and possibly other browsers), hiding an <code>iframe</code>
+ resets its document, thus destroying the console window.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">hide</div>
+ <div class="methodsignature"><code>void <strong>hide</strong>()</code></div>
+ <div class="summary">
+ <p>
+ Hides / minimizes the console window.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ In Safari (and possibly other browsers), hiding an <code>iframe</code>
+ resets its document, thus destroying the console window.
+ </li>
+ </ul>
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">close</div>
+ <div class="methodsignature"><code>void <strong>close</strong>()</code></div>
+ <div class="summary">
+ Removes the console window iframe from the main document.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">focus</div>
+ <div class="methodsignature"><code>void <strong>focus</strong>()</code></div>
+ <div class="summary">
+ Brings the console window to the top and gives it the focus.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">focusCommandLine</div>
+ <div class="methodsignature"><code>void <strong>focusCommandLine</strong>()</code></div>
+ <div class="summary">
+ Brings the console window to the top and gives the focus to the command line.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">focusSearch</div>
+ <div class="methodsignature"><code>void <strong>focusSearch</strong>()</code></div>
+ <div class="summary">
+ Brings the console window to the top and gives the focus to the search box.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">evalCommandAndAppend</div>
+ <div class="methodsignature"><code>void <strong>evalCommandAndAppend</strong>(String <em>expr</em>)</code></div>
+ <div class="summary">
+ Evaluates the expression and appends the result to the console.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">addCommandLineFunction</div>
+ <div class="methodsignature"><code>void <strong>addCommandLineFunction</strong>(String <em>functionName</em>, Function <em>commandLineFunction</em>)</code></div>
+ <div class="summary">
+ <p>
+ Adds a function with the name specified to the list of functions available on the command line.
+ This feature may be used to add custom functions to the command line.
+ </p>
+ <p>
+ When you call the function on the command line, <code>commandLineFunction</code> is executed with the
+ following three parameters:
+ </p>
+ <ul>
+ <li><em>appender</em>. A reference to the appender in which the command was executed;</li>
+ <li><em>args</em>.
+ An array-like list of parameters passed into the function on the command line
+ (actually a reference to an <code>arguments</code> object);</li>
+ <li><em>returnValue</em>. This is an object with two properties that allow the function to control
+ how the result is displayed:
+ <ul>
+ <li><em>appendResult</em>. A boolean value that determines whether the returned value from this
+ function is appended to the console. The default value is <code>true</code>;</li>
+ <li><em>isError</em>. A boolean value that specifies whether the output of this function
+ should be displayed as an error. The default value is <code>false</code>.</li>
+ </ul>
+ </li>
+ </ul>
+ <p>
+ The value returned by the function is formatted by the command layout and appended to the console.
+ </p>
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="browserconsoleappender">
+ <h3>BrowserConsoleAppender</h3>
+ <p class="editions">Editions: <strong>Standardl</strong></p>
+ <p>
+ Writes log messages to the browser's built-in console, if present. This only works
+ currently in Safari, Opera and Firefox with the excellent
+ <a href="http://www.getfirebug.com" title="Firebug home page (opens in new window)"
+ target="_blank">Firebug</a> extension installed.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ As of log4javascript 1.3, the default threshold for this appender is <code>DEBUG</code>
+ as opposed to <code>WARN</code> as it was previously;
+ </li>
+ <li>
+ <p>
+ As of version 1.3, log4javascript has explicit support for Firebug's logging. This includes
+ the following mapping of log4javascript's log levels onto Firebug's:
+ </p>
+ <ul>
+ <li>log4javascript <code>TRACE</code>, <code>DEBUG</code> -> Firebug <code>debug</code></li>
+ <li>log4javascript <code>INFO</code> -> Firebug <code>info</code></li>
+ <li>log4javascript <code>WARN</code> -> Firebug <code>warn</code></li>
+ <li>log4javascript <code>ERROR</code>, <code>FATAL</code> -> Firebug <code>error</code></li>
+ </ul>
+ <p>
+ ... and the ability to pass objects into Firebug and take advantage of its object inspection.
+ This is because the default layout is now <code><a href="#nulllayout">NullLayout</a></code>,
+ which performs no formatting on an object.
+ </p>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">BrowserConsoleAppender</div>
+ <div class="methodsignature"><code><strong>BrowserConsoleAppender</strong>()</code></div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="layouts">
+ <h2>Layouts</h2>
+ <div id="layout">
+ <h3>Layout</h3>
+ <p>
+ There are a few methods common to all layouts:
+ </p>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">format</div>
+ <div class="methodsignature"><code>String <strong>format</strong>(LoggingEvent <em>loggingEvent</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">loggingEvent</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Formats the log message. You should override this method in your own layouts.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">ignoresThrowable</div>
+ <div class="methodsignature"><code>Boolean <strong>ignoresThrowable</strong>()</code></div>
+ <div class="summary">
+ Returns whether the layout ignores an error object in a logging event passed
+ to its <code>format</code> method.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getContentType</div>
+ <div class="methodsignature"><code>String <strong>getContentType</strong>()</code></div>
+ <div class="summary">
+ Returns the content type of the output of the layout.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">allowBatching</div>
+ <div class="methodsignature"><code>Boolean <strong>allowBatching</strong>()</code></div>
+ <div class="summary">
+ Returns whether the layout's output is suitable for batching.
+ <code><a href="#jsonlayout">JsonLayout</a></code> and <code><a href="#xmllayout">XmlLayout</a></code>
+ are the only built-in layouts that return true for this method.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getDataValues</div>
+ <div class="methodsignature"><code>Array <strong>getDataValues</strong>(LoggingEvent <em>loggingEvent</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">loggingEvent</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Used internally by log4javascript in constructing formatted output for some layouts.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setKeys</div>
+ <div class="methodsignature"><code>void <strong>setKeys</strong>(String <em>loggerKey</em>,
+ String <em>timeStampKey</em>, String <em>levelKey</em>, String <em>messageKey</em>,
+ String <em>exceptionKey</em>, String <em>urlKey</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">loggerKey</code>
+ <div>
+ Parameter to use for the log message's logger name. Default is <code>logger</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">timeStampKey</code>
+ <div>
+ Parameter to use for the log message's timestamp. Default is <code>timestamp</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">levelKey</code>
+ <div>
+ Parameter to use for the log message's level. Default is <code>level</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">messageKey</code>
+ <div>
+ Parameter to use for the message itself. Default is <code>message</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">exceptionKey</code>
+ <div>
+ Parameter to use for the log message's error (exception). Default is <code>exception</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">urlKey</code>
+ <div>
+ Parameter to use for the current page URL. Default is <code>url</code>.
+ </div>
+ </li>
+ </ul>
+ <div class="summary">
+ This method is used to change the default keys used to create formatted name-value pairs
+ for the properties of a log message, for layouts that do this. These layouts are
+ <code><a href="#jsonlayout">JsonLayout</a></code> and
+ <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setCustomField</div>
+ <div class="methodsignature"><code>void <strong>setCustomField</strong>(String <em>name</em>,
+ String <em>value</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">name</code>
+ <div>
+ Name of the custom property you wish to be included in the formmtted output.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">value</code>
+ <div>
+ Value of the custom property you wish to be included in the formatted output.
+ </div>
+ </li>
+ </ul>
+ <div class="summary">
+ Some layouts (<code><a href="#jsonlayout">JsonLayout</a></code>,
+ <code><a href="#httppostdatalayout">HttpPostDataLayout</a></code>,
+ <code><a href="#patternlayout">PatternLayout</a></code> and
+ <code><a href="#xmllayout">XmlLayout</a></code>) allow you to set
+ custom fields (e.g. a session id to send to the server) to the
+ formatted output. Use this method to set a custom field. If there
+ is already a custom field with the specified name, its value will
+ be updated with <code>value</code>.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ <p>
+ From version 1.4, the custom field value may be a function. In this
+ case, the function is run at the time the layout's format method is called,
+ with the following two parameters:
+ </p>
+ <ul>
+ <li><em>layout</em>. A reference to the layout being used;</li>
+ <li><em>loggingEvent</em>. A reference to the logging event being formatted.</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="method">
+ <div class="name">hasCustomFields</div>
+ <div class="methodsignature"><code>Boolean <strong>hasCustomFields</strong>()</code></div>
+ <div class="summary">
+ Returns whether the layout has any custom fields.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="nulllayout">
+ <h3>NullLayout</h3>
+ <p class="editions">Editions: <strong>All</strong></p>
+ <p>
+ The most basic layout. NullLayout's <code>format()</code> methods performs no
+ formatting at all and simply returns the message logged.
+ </p>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">NullLayout</div>
+ <div class="methodsignature"><code><strong>NullLayout</strong>()</code></div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="simplelayout">
+ <h3>SimpleLayout</h3>
+ <p class="editions">Editions: <strong>Standard, Production</strong></p>
+ <p>
+ Provides basic formatting. SimpleLayout consists of the level of the log statement,
+ followed by " - " and then the log message itself. For example,
+ </p>
+ <p><code>DEBUG - Hello world</code></p>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">SimpleLayout</div>
+ <div class="methodsignature"><code><strong>SimpleLayout</strong>()</code></div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="patternlayout">
+ <h3>PatternLayout</h3>
+ <p class="editions">Editions: <strong>All</strong></p>
+ <p>
+ Provides a flexible way of formatting a log message by means of a conversion pattern
+ string. The behaviour of this layout is a full implementation of <code>PatternLayout</code>
+ in log4j, with the exception of the set of conversion characters - log4javascript's is
+ necessarily a subset of that of log4j with a few additions of its own, since many of
+ the conversion characters in log4j only make sense in the context of Java.
+ </p>
+ <p>
+ The conversion pattern consists of literal text interspersed with special strings starting with
+ a % symbol called <em>conversion specifiers</em>. A conversion specifier consists of the
+ % symbol, a conversion character (possible characters are listed below) and
+ <em>format modifiers</em>. For full documentation of the conversion pattern, see
+ <a href="http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html" target="_blank">log4j's
+ documentation</a>. Below is a list of all conversion characters available in log4javascript.
+ </p>
+ <h4>Conversion characters</h4>
+ <table border="1" cellspacing="0">
+ <thead>
+ <tr>
+ <th>Conversion Character</th>
+ <th>Effect</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>a</td>
+ <td>
+ <p>
+ Outputs log messages specified as an array.
+ </p>
+ <p>
+ Behaves exactly like <code>%m</code>, except that multiple log messages are
+ assumed to have been specified in the logging call as an array rather than
+ as multiple parameters.
+ </p>
+ <p>
+ <strong>Since: 1.4</strong>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>c</td>
+ <td>
+ <p>
+ Outputs the logger name.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>d</td>
+ <td>
+ <p>
+ Outputs the date of the logging event. The date conversion specifier
+ may be followed by a date format specifier enclosed between braces. For
+ example, <code>%d{HH:mm:ss,SSS}</code> or
+ <code>%d{dd MMM yyyy HH:mm:ss,SSS}</code>. If no date
+ format specifier is given then ISO8601 format is assumed.
+ </p>
+ <p>
+ The date format specifier is the same as that used by Java's
+ <code><a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html"
+ target="_blank">SimpleDateFormat</a></code>. log4javascript
+ includes a full implementation of SimpleDateFormat's
+ <code>format</code> method, with the exception of the pattern letter
+ 'z', (string representation of the timezone) for which the information
+ is not available in JavaScript.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>f</td>
+ <td>
+ <p>
+ Outputs the value of a custom field set on the layout. If present, the specifier gives
+ the index in the array of custom fields to use; otherwise, the first custom field in the
+ array is used.
+ </p>
+ <p>
+ <strong>Since: 1.3</strong>
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>m</td>
+ <td>
+ <p>
+ Outputs the log messages of the logging event (i.e. the log
+ messages supplied by the client code).
+ </p>
+ <p>
+ As of version 1.4, multiple log messages may be supplied to logging calls.
+ <code>%m</code> displays each log message (using the rules below) one after
+ another, separated by spaces.
+ </p>
+ <p>
+ As of version 1.3, an object may be specified as the log message and will
+ be expanded to show its properties in the output, provided that a specifier
+ containing the number of levels to expand is provided. If no specifier is
+ provided then the message will be treated as a string regardless of its type.
+ For example, <code>%m{1}</code> will display an expansion of the object one
+ level deep, i.e. each property of the object will be displayed but if the
+ property value is itself an object it will not be expanded and will appear
+ as <code>[object Object]</code>.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>n</td>
+ <td>
+ <p>
+ Outputs a line separator.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>p</td>
+ <td>
+ <p>
+ Outputs the level of the logging event.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>r</td>
+ <td>
+ <p>
+ Outputs the number of milliseconds since log4javascript was initialized.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td>%</td>
+ <td>
+ <p>
+ The sequence %% outputs a single percent sign.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h4>Static properties</h4>
+ <ul class="propertieslist">
+ <li class="property">
+ <div class="name">TTCC_CONVERSION_PATTERN</div>
+ <div class="summary">
+ Built-in conversion pattern, equivalent to <code>%r %p %c - %m%n</code>.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">DEFAULT_CONVERSION_PATTERN</div>
+ <div class="summary">
+ Built-in conversion pattern, equivalent to <code>%m%n</code>.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">ISO8601_DATEFORMAT</div>
+ <div class="summary">
+ Built-in date format (and also the default), equivalent to
+ <code>yyyy-MM-dd HH:mm:ss,SSS</code>.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">DATETIME_DATEFORMAT</div>
+ <div class="summary">
+ Built-in date format, equivalent to <code>dd MMM YYYY HH:mm:ss,SSS</code>.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">ABSOLUTETIME_DATEFORMAT</div>
+ <div class="summary">
+ Built-in date format, equivalent to <code>HH:mm:ss,SSS</code>.
+ </div>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">PatternLayout</div>
+ <div class="methodsignature"><code><strong>PatternLayout</strong>(String <em>pattern</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">pattern</code>
+ <div>
+ The conversion pattern string to use.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="xmllayout">
+ <h3>XmlLayout</h3>
+ <p class="editions">Editions: <strong>Standard, Production</strong></p>
+ <p>
+ Based on log4j's <code>XmlLayout</code>, this layout formats a log message as a
+ fragment of XML. An example of the format of the fragment is as follows:
+ </p>
+ <pre>
+<log4javascript:event logger="[default]" timestamp="1201048234203" level="ERROR">
+<log4javascript:message><![CDATA[Big problem!]]></log4javascript:message>
+<log4javascript:exception><![CDATA[Nasty error on line number 1
+ in file http://log4javascript.org/test.html]]></log4javascript:exception>
+</log4javascript:event>
+</pre>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ This layout supports batching of log messages when used in an
+ <code><a href="#ajaxappender">AjaxAppender</a></code>. A batch of
+ messages is simply concatenated to form a string of several XML
+ frgaments similar to that above.
+ </li>
+ <li>
+ The <code><log4javascript:exception></code> element is only present if an
+ exception was passed into the original log call.
+ </li>
+ <li>
+ As of version 1.4, timestamps are returned as milliseconds since midnight of
+ January 1, 1970 rather than seconds as in previous versions. This allows finer
+ measurement of the time a logging event occurred and is also the JavaScript
+ <code>Date</code> object's standard measurement.
+ </li>
+ <li>
+ Also as of version 1.4, multiple messages may be specified as separate parameters
+ in a single logging call. In <code>XmlLayout</code>, multiple messages may be
+ formatted as a single combined message or may be formated as several
+ <code><log4javascript:message></code> elements inside one
+ <code><log4javascript:messages></code> element as shown below:
+ <br />
+ <pre>
+<log4javascript:event logger="[default]" timestamp="1201048234203" level="ERROR">
+<log4javascript:messages>
+ <log4javascript:message><![CDATA[Big problem!]]></log4javascript:message>
+ <log4javascript:message><![CDATA[Value of x when this error
+ occurred: 3]]></log4javascript:message>
+</log4javascript:messages>
+<log4javascript:exception><![CDATA[Nasty error on line number 1
+ in file http://log4javascript.org/test.html]]></log4javascript:exception>
+</log4javascript:event>
+</pre>
+ </li>
+ <li>
+ As of version 1.3, custom fields may be added to the output. Each field will
+ add a tag of the following form inside the <code><log4javascript:event></code>
+ tag:
+ <br />
+ <pre>
+<log4javascript:customfield name="sessionid"><![CDATA[1234]]></log4javascript:customfield>
+</pre>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">XmlLayout</div>
+ <div class="methodsignature"><code><strong>XmlLayout</strong>([Boolean <em>combineMessages</em>])</code></div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">combineMessages</code>
+ <div>
+ Whether or not to format multiple log messages as a combined single
+ <code><log4javascript:message></code> element
+ composed of each individual message separated by line breaks or to include
+ a <code><log4javascript:message></code> element for each message inside
+ one <code><log4javascript:messages></code> element.
+ If not specified, defaults to <code>true</code>.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="jsonlayout">
+ <h3>JsonLayout</h3>
+ <p class="editions">Editions: <strong>Standard, Production</strong></p>
+ <p>
+ Formats a logging event into JavaScript Object Notation (JSON).
+ JSON is a subset of JavaScript's object literal syntax, meaning that log
+ messages formatted with this layout can be interpreted directly by JavaScript
+ and converted into objects. See
+ <a href="http://json.org/" target="_blank" title="json.org (opens in new window)">json.org</a> for more details
+ about JSON.
+ </p>
+ <p>Example:</p>
+ <pre>
+{
+ "logger": "[default]",
+ "timeStamp": 1201048234203,
+ "level": "ERROR",
+ "url": "http://log4javascript.org/test.html",
+ "message": "Big problem!",
+ "exception": "Nasty error on line number 1 in file
+ http://log4javascript.org/test.html"
+}
+</pre>
+ <p>
+ The <code>exception</code> property is only present if an exception was passed
+ into the original log call.
+ </p>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ This layout supports batching of log messages when used in an
+ <code><a href="#ajaxappender">AjaxAppender</a></code>. When sent singly
+ the layout formats the log message as a single JavaScript object literal;
+ when sent as a batch, the messages are formatted as an array literal whose
+ elements are log message objects.
+ </li>
+ <li>
+ <p>
+ As of version 1.3, custom fields may be added to the output. Each field will
+ add a property of the following form to the main object literal:
+ </p>
+ <pre>
+ "sessionid": 1234
+</pre>
+ </li>
+ <li>
+ From version 1.4, the variable names used for log event properties such as
+ the message, timestamp and exception are specified using the <code>setKeys()</code>
+ method of <code><a href="#layout">Layout</a></code>.
+ </li>
+ <li>
+ <p>
+ Also as of version 1.4, multiple messages may be specified as separate parameters
+ in a single logging call. In <code>JsonLayout</code>, multiple messages may be
+ formatted as a single combined message or may be formated as an array of messages
+ as shown below:
+ </p>
+ <pre>
+{
+ "logger": "[default]",
+ "timeStamp": 1201048234203,
+ "level": "ERROR",
+ "url": "http://log4javascript.org/test.html",
+ "message": [
+ "Big problem!",
+ "Value of x when this error occurred: 3"
+ ],
+ "exception": "Nasty error on line number 1 in file
+ http://log4javascript.org/test.html"
+}
+</pre>
+ </li>
+ </ul>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">JsonLayout</div>
+ <div class="methodsignature"><code><strong>JsonLayout</strong>([Boolean <em>readable</em>, Boolean <em>combineMessages</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">readable</code>
+ <div>
+ Whether or not to format each log message with line breaks and tabs.
+ If not specified, defaults to <code>false</code>.
+ </div>
+ </li>
+ <li class="param">
+ <code class="paramname">combineMessages</code>
+ <div>
+ Whether or not to format multiple log messages as a combined single
+ <code>message</code> property composed of each individual message separated by line
+ breaks or to format multiple messages as an array.
+ If not specified, defaults to <code>true</code>.
+ </div>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">isReadable</div>
+ <div class="methodsignature"><code>Boolean <strong>isReadable</strong>()</code></div>
+ <div class="summary">
+ Returns whether or not to each log message is formatted with line breaks and tabs.
+ </div>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ <p>
+ <code>setReadable</code> has been removed in version 1.4. This property can
+ be set via the constructor.
+ </p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <div id="httppostdatalayout">
+ <h3>HttpPostDataLayout</h3>
+ <p class="editions">Editions: <strong>Standard, Production</strong></p>
+ <p>
+ Formats the log message as a simple URL-encoded string from which a simple
+ server-side script may extract parameters such as the log message, severity
+ and timestamp. This is the default layout for
+ <code><a href="#ajaxappender">AjaxAppender</a></code>.
+ </p>
+ <h4>Constructor</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">HttpPostDataLayout</div>
+ <div class="methodsignature"><code><strong>HttpPostDataLayout</strong>()</code></div>
+ </li>
+ </ul>
+ <p><strong>Notes</strong></p>
+ <ul>
+ <li>
+ As of version 1.3, custom fields may be added to the output. Each field will
+ be added as a parameter to the post data.
+ </li>
+ <li>
+ From version 1.4, the variable names used for log event properties such as
+ the message, timestamp and exception are specified using the <code>setKeys()</code>
+ method of <code><a href="#layout">Layout</a></code>.
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="enabling">
+ <h2>Enabling / disabling log4javascript</h2>
+ <p>
+ All logging can be enabled or disabled in log4javascript in a number of ways:
+ </p>
+ <ul>
+ <li>
+ At any time, you can call
+ <code>log4javascript.setEnabled(<em>enabled</em>)</code>. This will
+ enable or disable all logging, depending on whether <code>enabled</code>
+ is set to <code>true</code> or <code>false</code>.
+ </li>
+ <li>
+ <p>
+ Assign a value to the global variable <code>log4javascript_disabled</code>.
+ The idea of this is so that you can enable or disable logging for a whole site by
+ including a JavaScript file in all your pages, and allowing this file to be
+ included <strong>before</strong> log4javascript.js to guarantee that no logging
+ can take place without having to alter log4javascript.js itself. Your included
+ .js file would include a single line such as the following:
+ </p>
+ <p>
+ <code>var log4javascript_disabled = true;</code>
+ </p>
+ </li>
+ <li>
+ Assign your logger object a value of <code>log4javascript.getNullLogger()</code>.
+ </li>
+ <li>
+ Replace your copy of log4javascript_x.js with stubs/log4javascript_x.js, provided in the
+ distribution. This file has a stub version of each of the functions and methods
+ in the log4javascript API and can simply be dropped in in place of the main file.
+ The compressed version of the stub is typically 15 times smaller than the
+ compressed version of the main file.
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="errorhandling">
+ <h2>log4javascript error handling</h2>
+ <p>
+ log4javascript has a single rudimentary logger-like object of its own to handle
+ messages generated by log4javascript itself. This logger is called <code>LogLog</code>
+ and is accessed via <code>log4javascript.logLog</code>.
+ </p>
+ <div id="loglog">
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">setQuietMode</div>
+ <div class="methodsignature"><code>void <strong>setQuietMode</strong>(Boolean <em>quietMode</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">quietMode</code>
+ <div>
+ Whether to turn quiet mode on or off.
+ </div>
+ </li>
+ </ul>
+ <div class="summary">
+ Sets whether <code>LogLog</code> is in quiet mode or not. In quiet mode, no
+ messages sent to <code>LogLog</code> have any visible effect. By default,
+ quiet mode is switched off.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setAlertAllErrors</div>
+ <div class="methodsignature"><code>void <strong>setAlertAllErrors</strong>(Boolean <em>alertAllErrors</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">showAllErrors</code>
+ <div>
+ Whether to show all errors or just the first.
+ </div>
+ </li>
+ </ul>
+ <div class="summary">
+ Sets how many errors <code>LogLog</code> will display alerts for. By default,
+ only the first error encountered generates an alert to the user. If you turn
+ all errors on by supplying <code>true</code> to this method then all errors
+ will generate alerts.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">debug</div>
+ <div class="methodsignature"><code>void <strong>debug</strong>(String <em>message</em>[, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs a debugging message to an in-memory list. This implementation is new in version 1.4.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">displayDebug</div>
+ <div class="methodsignature"><code>void <strong>displayDebug</strong>()</code></div>
+ <div class="summary">
+ Displays an alert of all debugging messages. This method is new in version 1.4.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">warn</div>
+ <div class="methodsignature"><code>void <strong>warn</strong>(String <em>message</em>[, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Currently has no effect.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">error</div>
+ <div class="methodsignature"><code>void <strong>error</strong>(String <em>message</em>[, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Generates an alert to the user if and only if the error is the first one
+ encountered and <code>setAlertAllErrors(true)</code> has not been called.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="differences">
+ <h2>Differences between log4javascript and log4j</h2>
+ <p>
+ For the sake of keeping log4javascript as light and useful as possible, many
+ of the features of log4j that seem over-complex or inappropriate for
+ JavaScript have not been implemented. These include:
+ </p>
+ <ul>
+ <li>Filters</li>
+ <li>Configurators</li>
+ <li>Renderers</li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/manual_lite.html b/planetstack/core/static/log4javascript-1.4.6/docs/manual_lite.html
new file mode 100644
index 0000000..74e5a7d
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/manual_lite.html
@@ -0,0 +1,383 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>log4javascript 1.4 Lite manual</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>log4javascript 1.4 Lite manual</h1>
+ <h2>Contents</h2>
+ <ul>
+ <li><a href="#intro">Introduction</a></li>
+ <li><a href="#log4javascript">log4javascript static properties/methods</a></li>
+ <li><a href="#levels">Levels</a></li>
+ <li><a href="#loggers">Loggers</a></li>
+ <li><a href="#enabling">Enabling / disabling log4javascript Lite</a></li>
+ </ul>
+ <div id="intro">
+ <h2>Introduction</h2>
+ <p>
+ log4javascript Lite is designed to be a basic, lightweight, cross-browser logging tool. It
+ provides functions to log messages of different severity to a pop-up window using the exactly
+ the same syntax as log4javascript. It is designed for situations when the key requirement is just
+ to display logging messages without needing all the features of the standard version of
+ log4javascript.
+ </p>
+ <p>
+ Below is the complete list of functions and properties available in log4javascript Lite.
+ They make up a small subset of those provided by the standard version of
+ log4javascript. Each function is <strong>named and called identically to the equivalent
+ function in log4javascript</strong>. Please refer to the
+ <a href="manual.html">log4javascript manual</a> for a detailed explanation
+ of all the concepts alluded to in this document.
+ </p>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="log4javascript">
+ <h2>log4javascript static properties/methods</h2>
+ <h4>Properties</h4>
+ <ul class="propertieslist">
+ <li class="property">
+ <div class="name">version</div>
+ <div class="summary">
+ The version number of your copy of log4javascript.
+ </div>
+ </li>
+ <li class="property">
+ <div class="name">edition</div>
+ <div class="summary">
+ The edition of your copy of log4javascript ("log4javascript_lite" in this case").
+ </div>
+ </li>
+ </ul>
+ <h4>Methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">getDefaultLogger</div>
+ <div class="methodsignature"><code>Logger <strong>getDefaultLogger</strong>()</code></div>
+ <div class="summary">
+ Returns the default and only logger (apart from the null logger). The default logger
+ logs to a simple pop-up window.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getNullLogger</div>
+ <div class="methodsignature"><code>Logger <strong>getNullLogger</strong>()</code></div>
+ <div class="summary">
+ Returns an empty logger. Useful for disabling all logging.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setEnabled</div>
+ <div class="methodsignature"><code>void <strong>setEnabled</strong>(Boolean <em>enabled</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">enabled</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Enables or disables all logging, depending on <code>enabled</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns true or false depending on whether logging is enabled.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">setShowStackTraces</div>
+ <div class="methodsignature"><code>void <strong>setShowStackTraces</strong>(Boolean <em>show</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">show</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Enables or disables displaying of error stack traces, depending on <code>show</code>.
+ By default, stack traces are not displayed. (Only works in Firefox)
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="levels">
+ <h2>Levels</h2>
+ <p>
+ Levels are available as static properties of the <code>log4javascript.Level</code>
+ object. In ascending order of severity:
+ </p>
+ <ol>
+ <li><code>log4javascript.Level.ALL</code></li>
+ <li><code>log4javascript.Level.TRACE</code></li>
+ <li><code>log4javascript.Level.DEBUG</code></li>
+ <li><code>log4javascript.Level.INFO</code></li>
+ <li><code>log4javascript.Level.WARN</code></li>
+ <li><code>log4javascript.Level.ERROR</code></li>
+ <li><code>log4javascript.Level.FATAL</code></li>
+ <li><code>log4javascript.Level.NONE</code></li>
+ </ol>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="loggers">
+ <h2>Loggers</h2>
+ <p>
+ There are only two loggers in log4javascript Lite: the default logger obtained
+ by calling <code>log4javascript.getDefaultLogger()</code> and the empty logger
+ returned by <code>log4javascript.getNullLogger()</code>.
+ </p>
+ <h4>Logger methods</h4>
+ <ul class="propertieslist">
+ <li class="method">
+ <div class="name">setLevel</div>
+ <div class="methodsignature"><code>void <strong>setLevel</strong>(Level <em>level</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">level</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Sets the level. Log messages of a lower level than <code>level</code> will not be logged.
+ Default value is <code>ALL</code> (unlike in log4javascript, where the default level is
+ <code>DEBUG</code>).
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">getLevel</div>
+ <div class="methodsignature"><code>Level <strong>getLevel</strong>()</code></div>
+ <div class="summary">
+ Returns the level for this logger.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">trace</div>
+ <div class="methodsignature"><code>void <strong>trace</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>TRACE</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">debug</div>
+ <div class="methodsignature"><code>void <strong>debug</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>DEBUG</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">info</div>
+ <div class="methodsignature"><code>void <strong>info</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>INFO</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">warn</div>
+ <div class="methodsignature"><code>void <strong>warn</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>WARN</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">error</div>
+ <div class="methodsignature"><code>void <strong>error</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>ERROR</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">fatal</div>
+ <div class="methodsignature"><code>void <strong>fatal</strong>(Object <em>message1</em>[, Object <em>message2</em>, ... ][, Error <em>exception</em>])</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">message1[, message2...]</code>
+ </li>
+ <li class="param">
+ <code class="paramname">exception</code>
+ [<em>optional</em>]
+ </li>
+ </ul>
+ <div class="summary">
+ Logs one or more messages and optionally an error at level <code>FATAL</code>.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isEnabledFor</div>
+ <div class="methodsignature"><code>Boolean <strong>isEnabledFor</strong>(Level <em>level</em>, Error <em>exception</em>)</code></div>
+ <div class="paramsheading">Parameters:</div>
+ <ul class="params">
+ <li class="param">
+ <code class="paramname">level</code>
+ </li>
+ </ul>
+ <div class="summary">
+ Returns whether the logger is enabled for the specified level.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isTraceEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isTraceEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>TRACE</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isDebugEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isDebugEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>DEBUG</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isInfoEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isInfoEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>INFO</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isWarnEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isWarnEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>WARN</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isErrorEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isErrorEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>ERROR</code> messages.
+ </div>
+ </li>
+ <li class="method">
+ <div class="name">isFatalEnabled</div>
+ <div class="methodsignature"><code>Boolean <strong>isFatalEnabled</strong>()</code></div>
+ <div class="summary">
+ Returns whether the logger is enabled for <code>FATAL</code> messages.
+ </div>
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ <div id="enabling">
+ <h2>Enabling / disabling log4javascript Lite</h2>
+ <p>
+ All logging can be enabled or disabled in log4javascript Lite in a number of ways:
+ </p>
+ <ul>
+ <li>
+ At any time, you can call
+ <code>log4javascript.setEnabled(<em>enabled</em>)</code>. This will
+ enable or disable all logging, depending on whether <code>enabled</code>
+ is set to <code>true</code> or <code>false</code>.
+ </li>
+ <li>
+ Assign your logger object a value of <code>log4javascript.getNullLogger()</code>.
+ </li>
+ <li>
+ Replace your copy of log4javascript_lite.js with stubs/log4javascript_lite.js, provided in the
+ distribution. This file has a stub version of each of the functions and methods
+ in the log4javascript Lite API and can simply be dropped in in place of the main file.
+ </li>
+ </ul>
+ <p class="linktotop">
+ <a href="#container">Top</a>
+ </p>
+ </div>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/quickstart.html b/planetstack/core/static/log4javascript-1.4.6/docs/quickstart.html
new file mode 100644
index 0000000..3bffff5
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/quickstart.html
@@ -0,0 +1,230 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>log4javascript quick start tutorial</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <span class="navitem">quick start</span>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>log4javascript quick start tutorial</h1>
+ <h2>Three step guide</h2>
+ <ol>
+ <li>
+ <h3>Download the code</h3>
+ <p>
+ Unzip the distribution and copy log4javascript.js into the desired
+ location. No other files are necessary.
+ </p>
+ </li>
+ <li>
+ <h3>Initialize log4javascript in your web page</h3>
+ <p>
+ Include log4javascript.js in your page using the code below. This
+ code assumes log4javascript is stored in the same directory as
+ your web page.
+ </p>
+ <pre class="code">
+<script type="text/javascript" src="log4javascript.js"></script>
+<script type="text/javascript">
+ var log = log4javascript.getDefaultLogger();
+</script>
+</pre>
+ <p>
+ The default logger uses a <code><a href="manual.html#popupappender">PopUpAppender</a></code>
+ which opens a pop-up window. By default, this window will open when the first
+ log message is written. For this to work, you will need to disable any pop-up blockers
+ you may have.
+ </p>
+ </li>
+ <li>
+ <h3>Include logging statements in your code</h3>
+ <p>
+ You have six logging methods at your disposal, depending on the severity
+ of the message you wish to log. By default, all messages are logged
+ in the pop-up window. The logging methods are:
+ </p>
+ <ul>
+ <li><code>log.trace(<em>message</em>[, <em>message2</em>, ... ][, <em>exception</em>])</code></li>
+ <li><code>log.debug(<em>message</em>[, <em>message2</em>, ... ][, <em>exception</em>])</code></li>
+ <li><code>log.info(<em>message</em>[, <em>message2</em>, ... ][, <em>exception</em>])</code></li>
+ <li><code>log.warn(<em>message</em>[, <em>message2</em>, ... ][, <em>exception</em>])</code></li>
+ <li><code>log.error(<em>message</em>[, <em>message2</em>, ... ][, <em>exception</em>])</code></li>
+ <li><code>log.fatal(<em>message</em>[, <em>message2</em>, ... ][, <em>exception</em>])</code></li>
+ </ul>
+ <p>
+ And that's it, log away. Below are some examples of common types of logging.
+ </p>
+ </li>
+ </ol>
+ <h2>Logging examples</h2>
+ <ol>
+ <li>
+ <h3>A simple logging message string</h3>
+ <pre class="code">
+ log.info("Hello world");
+</pre>
+displays
+ <pre class="console info">
+19:52:03 INFO - Hello world
+</pre>
+ </li>
+ <li>
+ <h3>Logging an error with a message</h3>
+ <pre class="code">
+ try {
+ throw new Error("Faking something going wrong!");
+ } catch (e) {
+ log.error("An error occurred", e);
+ }
+</pre>
+displays
+ <pre class="console error">
+19:52:32 ERROR - An error occurred
+Exception: Faking something going wrong! on line number 80 in file basic.html
+</pre>
+ </li>
+ <li>
+ <h3>Logging multiple messages with one logging call</h3>
+ <pre class="code">
+ var a = "Hello";
+ var b = 3;
+ log.debug(a, b);
+</pre>
+displays
+ <pre class="console debug">
+19:53:05 DEBUG - Hello 3
+</pre>
+ </li>
+ <li>
+ <h3>Logging an object</h3>
+ <p>Logging an object:</p>
+ <pre class="code">
+ var obj = new Object();
+ obj.name = "Octopus";
+ obj.tentacles = 8;
+ log.info(obj);
+</pre>
+displays
+ <pre class="console info">
+19:53:17 INFO - {
+ name: Octopus,
+ tentacles: 8
+}
+</pre>
+ </li>
+ </ol>
+ <h2>Tweaking the default logger</h2>
+ <p>
+ The default logger is fine as a starting point, but what if you want the default logger
+ with a few different options (say, bringing the pop-up to the front whenever a log message is
+ logged, or having new log messages appear at the top of the pop-up rather than the bottom)?
+ </p>
+ <p>
+ In this case, you will need to create a new logger, then create a
+ <code><a href="manual.html#popupappender">PopUpAppender</a></code>, set options
+ on it, and add it to the logger:
+ </p>
+ <pre class="code">
+<script type="text/javascript" src="log4javascript.js"></script>
+<script type="text/javascript">
+ // Create the logger
+ var log = log4javascript.getLogger();
+
+ // Create a PopUpAppender with default options
+ var popUpAppender = new log4javascript.PopUpAppender();
+
+ // Change the desired configuration options
+ popUpAppender.setFocusPopUp(true);
+ popUpAppender.setNewestMessageAtTop(true);
+
+ // Add the appender to the logger
+ log.addAppender(popUpAppender);
+
+ // Test the logger
+ log.debug("Hello world!");
+</script>
+</pre>
+ <p>
+ <a href="../examples/example_quickstart_1.html" title="View example (opens in new window)"
+ target="_blank">See this example in action</a> (opens in new window)
+ </p>
+ <p>
+ Refer to the manual for more information about
+ <a href="manual.html#configuration">configuring appenders</a> and more
+ details about <code><a href="manual.html#popupappender">PopUpAppender</a></code>.
+ </p>
+ <h2>Sending log messages to the server</h2>
+ <p>
+ For this you will need to use an <code><a href="manual.html#ajaxappender">AjaxAppender</a></code>
+ as follows:
+ </p>
+ <pre class="code">
+ var ajaxAppender = new log4javascript.AjaxAppender(<em>URL</em>);
+ log.addAppender(ajaxAppender);
+</pre>
+ <p>
+ Now your log messages will appear in the pop-up window and be sent
+ asynchronously to the URL you specify in the form of HTTP post parameters.
+ No server-side code to process these requests is provided with log4javascript.
+ </p>
+ <p>
+ See <code><a href="manual.html#ajaxappender">AjaxAppender</a></code> for more details
+ on formatting log messages.
+ </p>
+ <h2>Changing the format of log messages</h2>
+ <p>
+ Using a <code><a href="manual.html#layouts">Layout</a></code>, you can
+ format log messages however you like. For example:
+ </p>
+ <pre class="code">
+ var log = log4javascript.getLogger("mylogger");
+ var popUpAppender = new log4javascript.PopUpAppender();
+ var layout = new log4javascript.PatternLayout("[%-5p] %m");
+ popUpAppender.setLayout(layout);
+</pre>
+ <p>A call to</p>
+ <pre class="code">
+ log.debug("Hello world");
+</pre>
+ <p>will now result in output in the pop-up window of </p>
+ <pre class="console debug">
+[DEBUG] Hello world
+</pre>
+ <p>
+ See <code><a href="manual.html#patternlayout">PatternLayout</a></code> for more details
+ on formatting log messages.
+ </p>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>
diff --git a/planetstack/core/static/log4javascript-1.4.6/docs/whatsnew.html b/planetstack/core/static/log4javascript-1.4.6/docs/whatsnew.html
new file mode 100644
index 0000000..6e4e06f
--- /dev/null
+++ b/planetstack/core/static/log4javascript-1.4.6/docs/whatsnew.html
@@ -0,0 +1,86 @@
+<?xml version="1.0"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+ <head>
+ <title>log4javascript - what's new in version 1.4</title>
+ <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
+ <meta name="author" content="Tim Down - tim@log4javascript.org" />
+ <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
+ <meta name="robots" content="all" />
+ <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
+ </head>
+ <body>
+ <div id="container" class="nonav">
+ <div id="header">
+ <h1><a href="index.html">log4javascript</a></h1>
+ </div>
+ <div id="content">
+ <div id="nav">
+ <a class="navitem" href="../index.html">home</a>
+ | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
+ | <a class="navitem" href="index.html">docs</a>
+ | <a class="navitem" href="quickstart.html">quick start</a>
+ | <a class="navitem" href="../demos/index.html">demos</a>
+ | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
+ | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
+ </div>
+ <h1>log4javascript - what's new in version 1.4</h1>
+ <ul>
+ <li>
+ log4javascript now comes in three different editions: Standard, Production
+ and Lite. <a href="distribution.html">Full details here</a>.
+ </li>
+ <li>
+ Loggers are now hierarchical and work exactly the same as log4j loggers.
+ This means that a logger with no level set on it inherits its level from its parent,
+ and inherits all of its parents appenders.
+ </li>
+ <li>
+ The logging console used by <code><a href="manual.html#popupappender">PopUpAppender</a></code> and
+ <code><a href="manual.html#inpageappender">InPageAppender</a></code>now has a command line, featuring
+ a command history navigated with the up and down arrow keys and a number of built-in command line
+ functions.
+ </li>
+ <li>
+ It is now possible to specify multiple messages in a single log call.
+ </li>
+ <li>
+ Log messages may be grouped in the logging console.
+ </li>
+ <li>
+ Built-in timers.
+ </li>
+ <li>
+ Improved <code><a href="manual.html#ajaxappender">AjaxAppender</a></code>, with the ability
+ to send all pending log calls to the server when navigating away from a page. Timestamps now
+ include milliseconds. All log messages or batches of log messages are now posted as
+ name-value pairs.
+ </li>
+ <li>
+ Support for IE8 beta 2.
+ </li>
+ <li>
+ Many minor enhancements and bug fixes. See the <a href="../changelog.txt">change log</a> for full
+ details.
+ </li>
+ </ul>
+ <p>
+ Please note that there are a few minor <a href="backwardsincompatibilities.html">incompatibilities
+ with earlier versions of log4javascript</a>.
+ </p>
+ </div>
+ <div id="footer">
+ <span class="externallinkinfo">
+ <strong>NB.</strong> All external links open in a new window.
+ </span>
+ Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
+ <br />
+ log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
+ title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
+ Version 2.0</a>
+
+ </div>
+ </div>
+
+ </body>
+</html>