Return-Path:
log4j uses 6 levels, namely TRACE, DEBUG, INFO, WARN, - ERROR and FATAL.
log4j uses 5 levels, namely DEBUG, INFO, WARN, ERROR and + FATAL. +
The format of the log output can be easily changed by
extending the Layout
@@ -444,7 +445,7 @@
The open and collaborative way in which log4j is developped ensures that it continues to preserve and even widen its - competitive edge. At some point, input from bright developpers + competitive edge. At some point, input from bright developers from all over the world is bound to make a difference.
@@ -535,44 +536,6 @@ statement. -As of log4j version 1.3, there exists a significantly more
- convenient alternative based on message patterns. Assuming
- entry
is an object, you can write:
-
- l.debug("The new entry is {}.", entry); -
- -After evaluting whether to log or not, and only if the
- decision is positive, will the logger instace format the
- message and replace the '{}' pair with the string value of
- entry
. In other words, the paramerized form does
- not incur the cost of parameter construction in case the log
- statement is disabled.
-
Thus, the following two lines will yield the exact same - output. However, the second form will perform at least 30 - (thirty) times faster in case of a disabled logging - statement. -
- -
- l.debug("The new entry is "+entry+".");
- l.debug("The new entry is {}.", entry);
-
A two argument variant is also availalble. For example, you - can write: -
-- l.debug("The new entry is {}. It replaces {}.", entry, oldEntry); -
- - -DEBUG
level with message formatting
- * done according to the value of messagePattern
and
- * arg
parameters.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg The argument to replace the formatting element, i,e,
- * the '{}' pair within messagePattern
.
- * @since 1.2.10
- */
- public void debug(Object messagePattern, Object arg) {
- if (repository.isDisabled(Level.DEBUG_INT)) {
- return;
- }
-
- if (Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {
- if (messagePattern instanceof String){
- String msgStr = (String) messagePattern;
- msgStr = MessageFormatter.format(msgStr, arg);
- forcedLog(FQCN, Level.DEBUG, msgStr, null);
- } else {
- // To be failsafe, we handle the case where 'messagePattern' is not
- // a String. Unless the user makes a mistake, this should never happen.
- forcedLog(FQCN, Level.DEBUG, messagePattern, null);
- }
- }
- }
-
- /**
- * Log a message with the DEBUG
level with message formatting
- * done according to the messagePattern and the arguments arg1 and arg2.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg1 The first argument to replace the first formatting element
- * @param arg2 The second argument to replace the second formatting element
- * @since 1.2.10
- */
- public void debug(String messagePattern, Object arg1, Object arg2) {
- if (repository.isDisabled(Level.DEBUG_INT)) {
- return;
- }
- if (Level.DEBUG.isGreaterOrEqual(this.getEffectiveLevel())) {
- messagePattern = MessageFormatter.format(messagePattern, arg1, arg2);
- forcedLog(FQCN, Level.DEBUG, messagePattern, null);
- }
- }
/**
Log a message object with the DEBUG
level including
@@ -348,62 +293,6 @@
forcedLog(FQCN, Level.ERROR, message, null);
}
-
-/**
- * Log a message with the ERROR
level with message formatting
- * done according to the value of messagePattern
and
- * arg
parameters.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg The argument to replace the formatting element, i,e,
- * the '{}' pair within messagePattern
.
- * @since 1.2.10
- */
- public void error(Object messagePattern, Object arg) {
- if (repository.isDisabled(Level.ERROR_INT)) {
- return;
- }
-
- if (Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel())) {
- if (messagePattern instanceof String){
- String msgStr = (String) messagePattern;
- msgStr = MessageFormatter.format(msgStr, arg);
- forcedLog(FQCN, Level.ERROR, msgStr, null);
- } else {
- // To be failsafe, we handle the case where 'messagePattern' is not
- // a String. Unless the user makes a mistake, this should never happen.
- forcedLog(FQCN, Level.ERROR, messagePattern, null);
- }
- }
- }
-
- /**
- * Log a message with the ERROR
level with message formatting
- * done according to the messagePattern and the arguments arg1 and arg2.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg1 The first argument to replace the first formatting element
- * @param arg2 The second argument to replace the second formatting element
- * @since 1.2.10
- */
- public void error(String messagePattern, Object arg1, Object arg2) {
- if (repository.isDisabled(Level.ERROR_INT)) {
- return;
- }
- if (Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel())) {
- messagePattern = MessageFormatter.format(messagePattern, arg1, arg2);
- forcedLog(FQCN, Level.ERROR, messagePattern, null);
- }
- }
-
/**
Log a message object with the ERROR
level including
the stack trace of the {@link Throwable} t
passed as
@@ -766,60 +655,6 @@
}
/**
- * Log a message with the INFO
level with message formatting
- * done according to the value of messagePattern
and
- * arg
parameters.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg The argument to replace the formatting element, i,e,
- * the '{}' pair within messagePattern
.
- * @since 1.2.10
- */
- public void info(Object messagePattern, Object arg) {
- if (repository.isDisabled(Level.INFO_INT)) {
- return;
- }
-
- if (Level.INFO.isGreaterOrEqual(this.getEffectiveLevel())) {
- if (messagePattern instanceof String){
- String msgStr = (String) messagePattern;
- msgStr = MessageFormatter.format(msgStr, arg);
- forcedLog(FQCN, Level.INFO, msgStr, null);
- } else {
- // To be failsafe, we handle the case where 'messagePattern' is not
- // a String. Unless the user makes a mistake, this should never happen.
- forcedLog(FQCN, Level.INFO, messagePattern, null);
- }
- }
- }
-
- /**
- * Log a message with the INFO
level with message formatting
- * done according to the messagePattern and the arguments arg1 and arg2.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg1 The first argument to replace the first formatting element
- * @param arg2 The second argument to replace the second formatting element
- * @since 1.2.10
- */
- public void info(String messagePattern, Object arg1, Object arg2) {
- if (repository.isDisabled(Level.INFO_INT)) {
- return;
- }
- if (Level.INFO.isGreaterOrEqual(this.getEffectiveLevel())) {
- messagePattern = MessageFormatter.format(messagePattern, arg1, arg2);
- forcedLog(FQCN, Level.INFO, messagePattern, null);
- }
- }
- /**
Log a message object with the INFO
level including
the stack trace of the {@link Throwable} t
passed as
parameter.
@@ -918,33 +753,6 @@
return Level.INFO.isGreaterOrEqual(this.getEffectiveLevel());
}
- /**
- Check whether this category is enabled for the info Level.
- See also {@link #isDebugEnabled}.
-
- @return boolean - true
if this category is enabled
- for level WARN, false
otherwise.
- @since 1.2.10
- */
- public boolean isWarnEnabled() {
- if(repository.isDisabled(Level.WARN_INT))
- return false;
- return Level.WARN.isGreaterOrEqual(this.getEffectiveLevel());
- }
-
- /**
- Check whether this category is enabled for the info Level.
- See also {@link #isDebugEnabled}.
-
- @return boolean - true
if this category is enabled
- for level ERROR, false
otherwise.
- @since 1.2.10
- */
- public boolean isErrorEnabled() {
- if(repository.isDisabled(Level.ERROR_INT))
- return false;
- return Level.ERROR.isGreaterOrEqual(this.getEffectiveLevel());
- }
/**
Log a localized message. The user supplied parameter
@@ -1191,60 +999,6 @@
forcedLog(FQCN, Level.WARN, message, null);
}
- /**
- * Log a message with the WARN
level with message formatting
- * done according to the value of messagePattern
and
- * arg
parameters.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg The argument to replace the formatting element, i,e,
- * the '{}' pair within messagePattern
.
- * @since 1.2.10
- */
- public void warn(Object messagePattern, Object arg) {
- if (repository.isDisabled(Level.WARN_INT)) {
- return;
- }
-
- if (Level.WARN.isGreaterOrEqual(this.getEffectiveLevel())) {
- if (messagePattern instanceof String){
- String msgStr = (String) messagePattern;
- msgStr = MessageFormatter.format(msgStr, arg);
- forcedLog(FQCN, Level.WARN, msgStr, null);
- } else {
- // To be failsafe, we handle the case where 'messagePattern' is not
- // a String. Unless the user makes a mistake, this should never happen.
- forcedLog(FQCN, Level.WARN, messagePattern, null);
- }
- }
- }
- /**
- * Log a message with the WARN
level with message formatting
- * done according to the messagePattern and the arguments arg1 and arg2.
- *
- * This form avoids superflous parameter construction. Whenever possible,
- * you should use this form instead of constructing the message parameter
- * using string concatenation.
- *
- * @param messagePattern The message pattern which will be parsed and formatted
- * @param arg1 The first argument to replace the first formatting element
- * @param arg2 The second argument to replace the second formatting element
- * @since 1.2.10
- */
- public void warn(String messagePattern, Object arg1, Object arg2) {
- if (repository.isDisabled(Level.WARN_INT)) {
- return;
- }
- if (Level.WARN.isGreaterOrEqual(this.getEffectiveLevel())) {
- messagePattern = MessageFormatter.format(messagePattern, arg1, arg2);
- forcedLog(FQCN, Level.WARN, messagePattern, null);
- }
- }
-
/**
Log a message with the Discussion on log4j and logging in general are held on the
log4j-user mailing list. To subscribe to this list
send an e-mail to log4j-user-subscribe@jakarta.apache.org.
+ HREF="mailto:log4j-user-subscribe@logging.apache.org">log4j-user-subscribe@logging.apache.org.
Development related discussions are held on the
log4j-dev mailing list. To subscribe to this list
send an e-mail to log4j-dev-subscribe@jakarta.apache.org. All developers are encouraged to subscribe to the
- log4j-cvs list which will notify the subscribers of
- CVS any commits to the repository. To subscribe to this list
- send an e-mail to log4j-cvs-subscribe@jakarta.apache.org.
- Committers should subscribe to this list with their
- Apache e-mail address.
+ HREF="mailto:log4j-dev-subscribe@logging.apache.org">log4j-dev-subscribe@logging.apache.org. All
+ developers are encouraged to subscribe to the
+ log4j-dev list which will notify the subscribers of
+ any commits to our CVS repository.
To prevent spam, we expect you to be subscribed to a list
@@ -37,7 +32,7 @@
creates needless work for us.
Most Jakarta mailing lists, in particular the log4j mailing
+ Most Logging Services mailing lists, in particular the log4j mailing
lists, are archived. Some of the known archives are listed
below:
WARN
level including the
stack trace of the {@link Throwable} t
passed as
1.16.2.3 +1 -2 logging-log4j/src/java/org/apache/log4j/Logger.java
Index: Logger.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/Logger.java,v
retrieving revision 1.16.2.2
retrieving revision 1.16.2.3
diff -u -r1.16.2.2 -r1.16.2.3
--- Logger.java 28 Apr 2005 20:34:04 -0000 1.16.2.2
+++ Logger.java 6 May 2005 05:32:36 -0000 1.16.2.3
@@ -8,7 +8,6 @@
package org.apache.log4j;
import org.apache.log4j.spi.LoggerFactory;
-import org.slf4j.ULogger;
/**
@@ -18,7 +17,7 @@
@since log4j 1.2
@author Ceki Gülcü */
-public class Logger extends Category implements ULogger {
+public class Logger extends Category {
/**
The fully qualified name of the Level class. See also the
No revision
No revision
1.14.2.1 +9 -14 logging-log4j/src/xdocs/Attic/contactUs.xml
Index: contactUs.xml
===================================================================
RCS file: /home/cvs/logging-log4j/src/xdocs/Attic/contactUs.xml,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -r1.14 -r1.14.2.1
--- contactUs.xml 9 May 2002 15:43:44 -0000 1.14
+++ contactUs.xml 6 May 2005 05:32:36 -0000 1.14.2.1
@@ -2,7 +2,7 @@
While not lurking on Ceki Gülcü
- Ceki is the founder the log4j project which still takes
- much of his time. He enjoys writing software altough he is
- discovering that it is far more difficult than it looks. He
- is also slowly building an IT services company called qos.ch.
-
Ceki is the founder the log4j project which + continues to occupy much of his time. He enjoys writing + software altough he is discovering that it is far more + difficult than what it may seem initially. He is also + managing his IT services + company. |
+ + |
Jacob Kjome has been developing software + since 1997 and has been playing with Java for about 4 years. + Jake joined the log4j team after being very active on the + user list and contributing servlet and repository selector + related code to the logj-sandbox. He is also a committer on + the (non-Apache related) XMLC, BarracudaMVC, and Prevayler + projects. Of late his free time has been squeezed with a + new job and his vigorous 2 year old son, Nicholas, but he + still tries to pitch in when he can. :-) +
+
+ Yoav Shapira works for Millennium Pharmaceuticals and + is as interested in the business aspects of Open-Source + Software as he is in the technical aspects. Yoav contributes + to the Tomcat container, the Log4j logging system, and a + number of jakarta-commons and other open-source projects. + + |
+ + |
Jon is a software developer in his mid-twenties living in @@ -74,6 +110,24 @@
+ Paul Smith has been developing software since 1990, and playing + computer games a few years longer than that. He has been thoroughly + enjoying Java since 1998 after he gave up on Visual Basic in disgust. + Paul joined the log4j team after finding how darn useful it and the + companion Chainsaw application was in '03, and has been helping out + where he can, working on Chainsaw v2, and generally making a good + nuisance of himself. + |
+ + |
Mark Womack has been developing software for over 12 + years. He has been developing in Java for the past 4 years, + focusing on web application development. He has been an + active committer for the Apache Jakarta log4j project since + April 2002, contributing features for the upcoming v1.3 + release. |
+ + |
log4j 1.2.8 is available in TAR.GZ format - or in ZIP - format. -
- -As of release 1.2.8 log4j now searches for the file log4j.xml - as well as the file log4j.properties during - initialization. See the HISTORY file for - the firther details. -
- -In addition to many performance improvements, bug fixes, and
- other small enhancements, log4j 1.2 adds JMX support, Mapped
- Diagnostic Contexts, JDBC logging, graphical log viewer
- (chainsaw), and buffered IO capability. One important change
- is the replacement of the Category
class with
- Logger
class and the Priority
class
- with the Level
class in order to facilitate
- migrating from the JDK 1.4 logging API to log4j.
-
Version 1.2 is the 22nd major public release of log4j. All
- changes except the removal of deprecated methods are backward
- compatible such that log4j 1.2 can be considered a drop in
- replacement for log4j 1.1.3. The only exception is the
- renaming of the CategoryFactory
class to
- LoggerFactory
class such that subclasses of
- Category
class must be modified and
- recompiled. The recommended pattern for extending the
- Logger
class is wrapping. Moreover, we strongly
- discourage casual users from subclassing the
- Category
or Logger
classes.
-
We also maintain a list of earlier - versions of log4j for download, intended for the curious - paleontologist -- there seems to be quite a few of them! -
- + + + +Log4j is available + for download from a number of mirrors. Please + use these mirrors as they improve download time and save + bandwidth. +
+ +Log4j version 1.2.9, is identical to version 1.2.8,
+ except that several key methods have been deprecated in
+ preparation for version 1.3.0, the next major release of
+ log4j. These changes are intended to enforce the rule that
+ client code should never refer to the Category
+ class directly, but use the Logger
class
+ instead. Similarly, client code should not refer to the
+ Priority
class but to the Level
+ class instead.
+
See the document entitled preparing + for log4j 1.3 for a more detailed discussion. +
+ + + +We also maintain earlier + versions of log4j for download, intended for the + curious paleontologist -- there seems to be quite a few + of them! +
+XMLLayout
format.
+ href="chainsaw.html">Chainsaw v2 (NEW!)
+
+ DatedFileAppender
works in the same manner as
+ the Tomcat FileLogger. Contrary to
+ DailyRollingFileAppender
shipping with log4j, log
+ file names generated by DatedFileAppender
always
+ contain today's date. While this distinction seems minor, it
+ means you can reliably copy, compress, remove or manipulate a
+ day's log file shortly after midnight. With the
+ JDBCAppender
by Danko Mannhaupt
@@ -95,9 +97,47 @@
log4j 1.2.
JUnit is asymmetrical in the sense that it focusses on the + documentation of test failures and errors. Successful + execution of a test case is not further documented. In order + to obtain a test protocol that documents the initial settings, + the test case execution and its results, a logging component + is required. Log4J as the current de facto standard is + selected for this extension. +
If you would like your software to be listed here, then send a note to the log4j-user@jakarta.apache.org + href="mailto:log4j-user@logging.apache.org">log4j-user@logging.apache.org list.
BEWARE: For some reason Internet Explorer decides to - rename ".tar.gz" files as ".tar". You should rename the files back to +
BEWARE:Certain Internet Explorer versions rename .tar.gz downloads
+ as .tar. You should rename the files back to
tar.gz
after the download completes.
The project's official URL is http://jakarta.apache.org/log4j. + href="http://logging.apache.org/log4j">http://logging.apache.org/log4j.
Many thanks to all the log4j users who keep sending us input - and sometimes even praise for our collective effort. The first - ancestor of log4j was written for the E.U. sponsored SEMPER project. N. Asokan, - Ceki Gülcü and Michael Steiner came up with the idea - of hierarchical loggers back in 1996. Their idea is still - at the heart of log4j. The package was considerably improved - over the years at the IBM Zurich Research - Laboratory. However, log4j is no longer associated nor - supported by IBM. + and sometimes even praise for our collective effort. The first + ancestor of log4j was written for the E.U. sponsored SEMPER project. N. Asokan, + Ceki Gülcü and Michael Steiner came up with the idea + of hierarchical loggers back in 1996. Their idea is still at the + heart of log4j. The package was considerably improved over the + years at the IBM Zurich + Research Laboratory. However, log4j is no longer associated + nor supported by IBM.
Special thanks to M. Niksch from ZRL for his assistance on @@ -39,10 +38,7 @@ helpful in easing the move to Apache.
-The log4j logo was designed and kindly donated by of Switzerland. +
The log4j logo was designed and kindly donated by Cyberlab SA of Switzerland.
1.8.2.2 +1 -1 logging-log4j/src/xdocs/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/logging-log4j/src/xdocs/index.xml,v retrieving revision 1.8.2.1 retrieving revision 1.8.2.2 diff -u -r1.8.2.1 -r1.8.2.2 --- index.xml 12 Jun 2002 21:31:35 -0000 1.8.2.1 +++ index.xml 6 May 2005 05:32:36 -0000 1.8.2.2 @@ -56,7 +56,7 @@On an AMD Duron clocked at 800Mhz running JDK 1.3.1, it costs about 5 nanoseconds to determine if a logging statement should be logged or not. Actual logging is also quite fast, ranging - from 21 microseconds microseconds using the SimpleLayout, 37 + from 21 microseconds using the SimpleLayout, 37 microseconds using the TTCCLayout. The performance of the PatternLayout is almost as good as the dedicated layouts, except that it is much more flexible.
1.7.2.2 +46 -189 logging-log4j/src/xdocs/plan.xml Index: plan.xml =================================================================== RCS file: /home/cvs/logging-log4j/src/xdocs/plan.xml,v retrieving revision 1.7.2.1 retrieving revision 1.7.2.2 diff -u -r1.7.2.1 -r1.7.2.2 --- plan.xml 12 Jun 2002 21:31:35 -0000 1.7.2.1 +++ plan.xml 6 May 2005 05:32:36 -0000 1.7.2.2 @@ -11,8 +11,8 @@The following paragragh was adapted from the Cactus - project's roadmap with the author's permission. + href="http://jakarta.apache.org/cactus/">Cactus project's + roadmap with the author's permission.
Our users keep inventing better ways and adding new @@ -44,7 +44,7 @@ reliable product.
-Label | @@ -63,8 +63,8 @@ as early is possible. It is strongly recommended to add a new test case with each new feature or component. -Ceki | -design board | +Significantly progressed | |||
---|---|---|---|---|---|---|
? | vaporware | |||||
Plugins/Receivers | + +
+ A Plugin framework has been designed and implemented. +All of the currently developed plugins are "Receivers", which can be thought of as the reverse of an appender; something + that accepts LoggingEvents from some external source. + +This has proven particulaly useful with the log4j ports, with the addition of the XML-based Receivers able to accept + LoggingEvents generated from other languages (see "Overture to other programming languages" below) + + + |
+ All | +Significantly progressed | +|||
Improvements to Chainsaw |
- Visualisation and dynamic filtering of logging event is - bound to be a very important area of activity in the - future. A number of important improvements to chainsaw - have been suggested. + Chainsaw v2 development has now progressed to the point where the main developers of it + and many other members of the logging community are using it daily. It's still pre-alpha but only + because we keep thinking up things to add. |
- Oliver Burn | -under discusison | +Scott Deboy and Paul Smith | +Significantly progressed | |
? | -not started | +Ceki | +Completed, still testing | |||
Overture to other programming languages | -It is higly desriable to allow log4j ports in other languages - to access log4j services in a language independent way. - | +It is higly desriable to allow log4j ports in other languages + to access log4j services in a language independent way. + +The use of a standard XML format to represent a LoggingEvent has been established and many of the related logging projects from + non-Java languages have begun to support it. In fact, a number of the log4j ports have volunteered to join Apache! + +Scott Deboy has completed work to create a fex XML-based Receiver + classes that can accept logging events from an external source, and 'import' them into the local log4j environment. |
- ? | -not started | +Ceki, Scott Deboy | +Significantly Progressed (if not completed) |
Kevin Steppe | -not started | +Ceki | +Significantly Progressed |
- Here is workplan for the 1.2 release. -
- -Label | -Comment | -Volunteer | -Status | -
---|---|---|---|
More test cases | - -We need more automated test cases to catch bugs as early - is possible.It is highly recommended to add a new test case - with each new feature or component. | - -All committers | -ongoing effort | -
Removal of deprecated methods | - -Deprecated setOption and getOption
- methods in appender and layouts should be removed. |
-
- Ceki | -done | -
JDBCAppender | - -
- We currently have two competing JDBCAppenders: one by - Thomas Fenner and the other by Kevin Steppe. - -Kevin Steppe stood up and did it. - |
-
- Kevin Steppe | - -done | -
Log4j in applets | - -In order to minimize network traffic, the size of log4j-core.jar
- needs to be reduced to at most 50KB.
-
- Log4jME has been released. It's less than 20KB. - |
-
- Ceki | -done | -
Improved documentation | - -Log4j documentation needs to be enhanced with configuration - examples and much more hand-holding. | - -Ceki | - -ongoing effort | - -
Mapped Diagnostic Contexts | - -Mapped Diagnostic Contexts are similar to the NDC
- except that the MDC is a string to string map instead of
- a stack that the user sets when entering a special
- context. The PatternLayout has to be
- enhanced to support this by extending the %x pattern to
- accept an argument. Here is an example:
-
- - ConversionPattern=3D%d %p %c %x{server} %x{host} - %m%n -- - User code: - - { - MDC.put("server", "totoServer"); - MDC.put("host", "someHost"); - - logger.debug("Hello"); - - } -- will print: - 2000-01-24 10:00:00,000 DEBUG totoServer someHost - Hello- - To make MDCs truly user friendly
- |
- Ceki | -done | -
Enhanced variable substitution support in DOMConfigurator | -- - | Ceki | -done | -
FallbackErrorHandler | - -The FallbackErrorHandler implements the ErrorHandler
- interface such that a secondary appender may be
- specified. This secondary appender takes over if the primary
- appender fails for whatever reason.
-
- The DOMConfigurator needs to be extended to support the - FallbackErrorHandler - - |
- Ceki | -implemented, requires further testing | -
Ensure backward compatibility of LoggingEvent - objects | - -To avoid deployment problems we must ensure that
- LoggingEvent objects are compatible between 1.2 and 1.1.3.
-
- Robert Bushman has proposed a very innovative way for - solving this problem. See - http://www.mail-archive.com/log4j-dev@jakarta.apache.org/msg01397.html - for further details. - - |
-
- Ceki | -implemented, manually tested, requires automated test cases | -