ASF Bugzilla – Attachment 16615 Details for
Bug 36961
log4js - Logging for JavaScript
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
initial version of log4js
log4js.js (text/plain), 6.99 KB, created by
Stephan Strittmatter
on 2005-10-07 10:39:11 UTC
(
hide
)
Description:
initial version of log4js
Filename:
MIME Type:
Creator:
Stephan Strittmatter
Created:
2005-10-07 10:39:11 UTC
Size:
6.99 KB
patch
obsolete
>/* * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * log4js is a helper to log in JavaScript in simmilar manner than in log4j. * The API should be nearly the same. * Example: * <pre> * //logging see log4js * var log = new Logger(LogLevel.TRACE); //set the LogLevel * log.setAppender(new WindowAppender()); //to log to seperate logwindow * * ... * //call the log * log.trace("trace me" ); * </pre> */ /** * LogLevel Enumeration */ function LogLevel() { } LogLevel.FATAL = 5; LogLevel.ERROR = 4; LogLevel.WARN = 3; LogLevel.INFO = 2; LogLevel.DEBUG = 1; LogLevel.TRACE = 0; LogLevel.valueOf = function(level) { switch (level) { case LogLevel.TRACE: return "trace"; case LogLevel.DEBUG: return "debug"; case LogLevel.INFO: return "info"; case LogLevel.WARN: return "warn"; case LogLevel.ERROR: return "error"; case LogLevel.FATAL: return "fatal"; default: return ""; } } /** * Logger to log messages to the defined appender.</p> * Default appender is DummyAppender, which is ignoring all messages. Please * use setAppender() to set a specific appender (e.g. WindowAppender). */ function Logger(logLevel) { this.level = logLevel; Logger.prototype.level = LogLevel.FATAL;; /** appender to write in */ Logger.prototype.appender = new DummyAppender(); Logger.prototype.setAppender = function(appender) { this.appender = appender; }; Logger.prototype.setLogLevel = function(level) { this.level = level; }; Logger.prototype.clear = function() { this.appender.clear(); }; Logger.prototype.isTraceEnabled = function() { if (this.level <= LogLevel.TRACE) { return true; } return false; }; Logger.prototype.trace = function(message) { if (this.isTraceEnabled()) { this.log(message, LogLevel.TRACE); } }; Logger.prototype.isDebugEnabled = function() { if (this.level <= LogLevel.DEBUG) { return true; } return false; }; Logger.prototype.debug = function(message) { if (this.isDebugEnabled()) { this.log(message, LogLevel.DEBUG); } }; Logger.prototype.isInfoEnabled = function() { if (this.level <= LogLevel.INFO) { return true; } return false; }; Logger.prototype.info = function(message) { if (this.isInfoEnabled()) { this.log(message, LogLevel.INFO); } }; Logger.prototype.isWarnEnabled = function() { if (this.level <= LogLevel.WARN) { return true; } return false; }; Logger.prototype.warn = function(message) { if (this.isWarnEnabled()) { this.log(message, LogLevel.WARN); } }; Logger.prototype.isErrorEnabled = function() { if (this.level <= LogLevel.ERROR) { return true; } return false; }; Logger.prototype.error = function(message) { if (this.isErrorEnabled()) { this.log(message, LogLevel.ERROR); } }; Logger.prototype.isFatalEnabled = function() { if (this.level <= LogLevel.FATAL) { return true; } return false; }; Logger.prototype.fatal = function(message) { if (this.isFatalEnabled()) { this.log(message, LogLevel.FATAL); } }; Logger.prototype.log = function(message, logLevel) { this.appender.append(message, logLevel); }; } /** * Dummy Appender doing nothing */ function DummyAppender() {} DummyAppender.prototype.append = function(message, logLevel) { } WindowAppender.prototype.clear = function() {} /** * Appender showing Logs in an own Window. */ function WindowAppender() {} WindowAppender.prototype.append = function(message, logLevel) { var now = new Date(); if (!window.top.debugWindow || window.top.debugWindow.closed) { window.top.debugWindow = window.open("", "log4js", "left=0,top=0,width=300,height=700,scrollbars=yes," + "status=yes,resizable=yes"); window.top.debugWindow.opener = self; var doc = window.top.debugWindow.document; if(doc.getElementById('logging-console') == null) { doc.open(); doc.write("<DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN "); doc.write(" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>\n\n"); doc.write("<html xmlns=\"http://www.w3.org/1999/xhtml\">\n") doc.write("<head>\n<title>log4js</title>\n"); doc.write(" <style>"); doc.write(" body{font-family:Icon; margin:0px;} "); doc.write(" .fatal{color:red;} "); doc.write(" .error{color:red;} "); doc.write(" .warn{color:orange;} "); doc.write(" .info{color:blue;} "); doc.write(" .debug{color:black;}"); doc.write(" .trace{color:grey;}"); doc.write(" </style>"); doc.write("</head>\n"); doc.write("<body>\n"); doc.write("<button value=\"Close\" onClick=\"self.close()\">Close</button>\n"); //doc.write("<button value=\"Clear\" onClick=\"clearLogWindow();\">Clear</button>\n"); doc.write(" <div id='logging-console'><ul id='log-list'></ul></div>\n"); doc.write("</body>"); window.top.debugWindow.blur(); window.top.debugWindow.focus(); } this.logConsole = doc.getElementById('logging-console'); this.logList = doc.getElementById('log-list'); } var loggingNode = window.top.debugWindow.document.createElement('li'); loggingNode.className = LogLevel.valueOf(logLevel); var strNow = now.toLocaleString(); var elem = loggingNode.appendChild( window.top.debugWindow.document.createTextNode( strNow + ": " + message )); this.logList.appendChild(loggingNode); }; WindowAppender.prototype.clear = function() { while (this.logList.hasChildNodes()) { this.logList.removeChild(this.logList.firstChild); } }; function clearLogWindow() { var logList = document.getElementById('log-list'); while (logList.hasChildNodes()) { logList.removeChild(logList.firstChild); } } /** * Metatag Appender writing the logs to meta tags */ function MetatagAppender() {} MetatagAppender.prototype.append = function(message, level) { var now = new Date(); var lines = message.split("\n"); var headTag = document.getElementsByTagName("head")[0]; for (var i = 1; i <= lines.length; i++) { var value = lines[i - 1]; if (i == 1) { value = LogLevel.valueOf(level) + ": " + value; } else { value = "> " + value; } var metaTag = document.createElement("meta"); metaTag.setAttribute("name", "X-log4js:" + Logger.currentLine++); metaTag.setAttribute("content", value); headTag.appendChild(metaTag); } } MetatagAppender.prototype.clear = function() {}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 36961
: 16615 |
16977