Siobhan Tully | e18b344 | 2014-02-23 14:23:34 -0500 | [diff] [blame] | 1 | <?xml version="1.0"?>
|
| 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
| 3 | <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
|
| 4 | <head>
|
| 5 | <title>log4javascript 1.4 Lite</title>
|
| 6 | <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
|
| 7 | <meta name="author" content="Tim Down - tim@log4javascript.org" />
|
| 8 | <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
|
| 9 | <meta name="robots" content="all" />
|
| 10 | <link rel="stylesheet" type="text/css" media="screen,print" href="../main.css" title="Default" />
|
| 11 | <style type="text/css">
|
| 12 | .visibleifabletocopy {
|
| 13 | display: none;
|
| 14 | }
|
| 15 |
|
| 16 | body.abletocopy .visibleifabletocopy {
|
| 17 | display: block;
|
| 18 | }
|
| 19 | </style>
|
| 20 | <script type="text/javascript">
|
| 21 | function copyCode() {
|
| 22 | if (window.clipboardData && clipboardData.setData) {
|
| 23 | clipboardData.setData("Text", code);
|
| 24 | alert("Code copied to clipboard.")
|
| 25 | }
|
| 26 | }
|
| 27 |
|
| 28 | var code;
|
| 29 |
|
| 30 | window.onload = function() {
|
| 31 | var textArea = document.getElementById("codetextarea");
|
| 32 | code = textArea.value;
|
| 33 | textArea.select();
|
| 34 | if (window.clipboardData && clipboardData.setData) {
|
| 35 | document.body.className = "abletocopy";
|
| 36 | }
|
| 37 | };
|
| 38 | </script>
|
| 39 | <link rel="stylesheet" type="text/css" media="screen,print" href="lite.css" title="Default" />
|
| 40 | </head>
|
| 41 | <body>
|
| 42 | <div id="container" class="nonav">
|
| 43 | <div id="header">
|
| 44 | <h1><a href="../index.html">log4javascript</a></h1>
|
| 45 | </div>
|
| 46 | <div id="content">
|
| 47 | <div id="nav">
|
| 48 | <a class="navitem" href="../index.html">home</a>
|
| 49 | | <a class="navitem" href="http://sourceforge.net/projects/log4javascript" target="_blank" title="Download (opens in new window)">download</a>
|
| 50 | | <a class="navitem" href="index.html">docs</a>
|
| 51 | | <a class="navitem" href="quickstart.html">quick start</a>
|
| 52 | | <a class="navitem" href="../demos/index.html">demos</a>
|
| 53 | | <a class="navitem" href="http://log4javascript.org" target="_blank">website</a>
|
| 54 | | <a class="navitem" href="http://www.timdown.co.uk" target="_blank">timdown.co.uk</a>
|
| 55 | </div>
|
| 56 | <h1>log4javascript 1.4 Lite</h1>
|
| 57 | <h2>Contents</h2>
|
| 58 | <ul>
|
| 59 | <li><a href="#intro">Introduction</a></li>
|
| 60 | <li><a href="#code">Code</a></li>
|
| 61 | <li><a href="#api">API</a></li>
|
| 62 | </ul>
|
| 63 | <div id="intro">
|
| 64 | <h2>Introduction</h2>
|
| 65 | <p>
|
| 66 | log4javascript Lite is designed to be a basic, lightweight, cross-browser logging tool. It
|
| 67 | provides functions to log messages of different severity to a pop-up window using the exactly
|
| 68 | the same syntax as log4javascript.
|
| 69 | </p>
|
| 70 | <p class="linktotop">
|
| 71 | <a href="#container">Top</a>
|
| 72 | </p>
|
| 73 | </div>
|
| 74 | <div id="code">
|
| 75 | <h2>Code</h2>
|
| 76 | <p>
|
| 77 | You can copy the code for log4javascript Lite below:
|
| 78 | </p>
|
| 79 | <textarea id="codetextarea" cols="80" rows="10">
|
| 80 | 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];}
|
| 81 | this.length--;return firstItem;}};}
|
| 82 | var log4javascript;(function(){var newLine="\r\n";function Log4JavaScript(){}
|
| 83 | 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);}}
|
| 84 | function getUrlFileName(url){var lastSlashIndex=Math.max(url.lastIndexOf("/"),url.lastIndexOf("\\"));return url.substr(lastSlashIndex+1);}
|
| 85 | function getExceptionStringRep(ex){if(ex){var exStr="Exception: "+getExceptionMessage(ex);try{if(ex.lineNumber){exStr+=" on line number "+ex.lineNumber;}
|
| 86 | if(ex.fileName){exStr+=" in file "+getUrlFileName(ex.fileName);}}catch(localEx){}
|
| 87 | if(showStackTraces&&ex.stack){exStr+=newLine+"Stack trace:"+newLine+ex.stack;}
|
| 88 | return exStr;}
|
| 89 | return null;}
|
| 90 | function isError(err){return(err instanceof Error);}
|
| 91 | function bool(obj){return Boolean(obj);}
|
| 92 | 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;}}
|
| 93 | function finalInit(){popUpLoaded=true;appendQueuedLoggingEvents();}
|
| 94 | function writeHtml(doc){var lines=getConsoleHtmlLines();doc.open();for(var i=0,len=lines.length;i<len;i++){doc.writeln(lines[i]);}
|
| 95 | doc.close();}
|
| 96 | function pollConsoleWindow(){function pollConsoleWindowLoaded(){if(popUpLoaded){clearInterval(poll);}else if(bool(popUp)&&isLoaded(popUp)){clearInterval(poll);finalInit();}}
|
| 97 | var poll=setInterval(pollConsoleWindowLoaded,100);}
|
| 98 | 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.");}}
|
| 99 | initialized=true;}
|
| 100 | function safeToAppend(){if(!popUpsBlocked&&!popUpClosed){if(popUp.closed){popUpClosed=true;return false;}
|
| 101 | if(!popUpLoaded&&popUp.loaded){popUpLoaded=true;}}
|
| 102 | return!popUpsBlocked&&popUpLoaded&&!popUpClosed;}
|
| 103 | function padWithZeroes(num,len){var str=""+num;while(str.length<len){str="0"+str;}
|
| 104 | return str;}
|
| 105 | function padWithSpaces(str,len){while(str.length<len){str+=" ";}
|
| 106 | return str;}
|
| 107 | this.append=function(loggingEvent){if(!initialized){init();}
|
| 108 | 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)+":"+
|
| 109 | 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;}
|
| 110 | popUp.log(currentLoggingEvent.level,formattedMessage);}
|
| 111 | if(focusPopUp){popUp.focus();}}}}
|
| 112 | 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--;}
|
| 113 | var messages=[];for(var i=0;i<=finalParamIndex;i++){messages[i]=params[i];}
|
| 114 | var loggingEvent=new LoggingEvent(this,new Date(),level,messages,exception);appender.append(loggingEvent);}};this.setLevel=function(level){loggerLevel=level;};this.getLevel=function(){return loggerLevel;};}
|
| 115 | 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();}
|
| 116 | return defaultLogger;};log4javascript.getLogger=log4javascript.getDefaultLogger;var nullLogger=null;log4javascript.getNullLogger=function(){if(!nullLogger){nullLogger=new Logger();nullLogger.setLevel(Level.OFF);}
|
| 117 | 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;})();
|
| 118 | </textarea>
|
| 119 | <p class="visibleifabletocopy">
|
| 120 | Press this button to copy the code to the clipboard:
|
| 121 | <input type="button" value="Copy" onclick="copyCode()" />
|
| 122 | </p>
|
| 123 | <p>
|
| 124 | You can either paste the above code inside a script tag:
|
| 125 | </p>
|
| 126 | <pre class="code">
|
| 127 | <script type="text/javascript">
|
| 128 | ... [Code here]...
|
| 129 | </script>
|
| 130 | </pre>
|
| 131 | <p>
|
| 132 | ... or include the <code>log4javascript_lite.js</code> included in the distribution:
|
| 133 | </p>
|
| 134 | <pre class="code">
|
| 135 | <script type="text/javascript" src="log4javascript_lite.js"></script>
|
| 136 | </pre>
|
| 137 | <pre class="code">
|
| 138 | <script type="text/javascript">
|
| 139 | var log = log4javascript.getDefaultLogger();
|
| 140 | </script>
|
| 141 | </pre>
|
| 142 | <p>
|
| 143 | Using log4javascript Lite is identical to using log4javascript with its default logger:
|
| 144 | </p>
|
| 145 | <pre class="code">
|
| 146 | <script type="text/javascript">
|
| 147 | var log = log4javascript.getDefaultLogger();
|
| 148 | log.debug("What's going on here then?");
|
| 149 | </script>
|
| 150 | </pre>
|
| 151 | <p class="linktotop">
|
| 152 | <a href="#container">Top</a>
|
| 153 | </p>
|
| 154 | </div>
|
| 155 | <div id="api">
|
| 156 | <h2>API</h2>
|
| 157 | <p>
|
| 158 | The functions available in log4javascript Lite make up a small subset of those provided
|
| 159 | by log4javascript proper. Each function is <strong>named and called identically to the equivalent
|
| 160 | function in log4javascript</strong>. Full details can be found in the
|
| 161 | <a href="manual_lite.html">log4javascript Lite manual</a>.
|
| 162 | </p>
|
| 163 | <p class="linktotop">
|
| 164 | <a href="#container">Top</a>
|
| 165 | </p>
|
| 166 | </div>
|
| 167 | </div>
|
| 168 | <div id="footer">
|
| 169 | <span class="externallinkinfo">
|
| 170 | <strong>NB.</strong> All external links open in a new window.
|
| 171 | </span>
|
| 172 | Written by Tim Down. <a href="mailto:tim@log4javascript.org">tim@log4javascript.org</a>
|
| 173 | <br />
|
| 174 | log4javascript is distributed under the <a href="http://www.apache.org/licenses/LICENSE-2.0.html"
|
| 175 | title="Apache License, Version 2.0 (opens in new window)" target="_blank">Apache License,
|
| 176 | Version 2.0</a>
|
| 177 |
|
| 178 | </div>
|
| 179 | </div>
|
| 180 |
|
| 181 | </body>
|
| 182 | </html>
|