logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ceki Gülcü <c...@qos.ch>
Subject log4j 1.2rc1 now available
Date Tue, 16 Apr 2002 20:54:26 GMT

Hi everyone,

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 migration 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 to
be modified and recompiled. By the way, we strongly discourage casual
users from subclassing the Category or Logger classes.

The history file reads:

  - Version 1.2


   - The ANT build script was modified to use jar files specified in
     the build.properties file instead of the CLASSPATH environment
     variable. The build.properties file depends on local paths and is
     supplied by the user. The build.properties.sample file is included
     in the distribution. The build.sh and build.bat scripts have
     been removed. This is the way many other jakarta projects build their
     projects. The jar files in the dist/lib directory were also removed
     since they are no longer used. [*]

  - The DOMConfigurator now interprets the string after the '#'
    character in the value attribute within the <level> element as
    the fully qualified class name of a custom Level. This is consistent
    with the way log4j handles "level" values in other places. The
    class attribute is still honored. [*]

  - Added Oliver Burn's chainsaw tool to the core log4j
    distribution. Visualisation and dynamic filtering of log events is
    bound to be a very important area of activity in the future. [*]

  - Added the org.apache.log4j.jdbc.JDBCAppender which as the name
    indicates sends events to a database using the JDBC API. Thanks to
    Kevin Steppe for supplying the code. [*]

  - Added SocketHubAppender class as contributed by Mark Womack. This
    appender sends LoggingEvent objects to a set of remote a log
    servers. [*]

  - In the Category class, the getChainedPriority method has been
    replaced with getEffectiveLevel method. [*]


   - Replaced the custom class loading based on the thread context class
     loader with a simple Class.forName() call. This solves two allied
     but distinct problems encountered when using Ant with JUnit
     although the bug is more general. In one instance of the
     problem, log4j would throw java.lang.NoClassDefFoundError for
     org/apache/log4j/AppenderSkeleton where log4j.jar and related
     classes were clearly available to the Ant classloader. In another
     incarnation, log4j would reject a custom appender claiming that it is
     not assignable to a org.apache.log4j.Appender variable. This would
     occur when log4j.jar was available to both the Ant classloader and the
     system classloader.

     Thanks to Dave Herman for providing detailed scenarios exposing
     the issues involved. See
     for more details. [*]


  - Fixed the complaints the compiler issued when using the
    Logger.setLevel() methd. [*]

  - Incorporated the performance enhancements to ISO8601DateFormat and
    AbsoluteTimeDateFormat classes submitted by Andrew Vajoczki.


  - Source code written for log4j 1.1.3.jar will compile fine with
    log4j 1.2X. However, code compiled for log4j 1.1.3 would previously
    systematically throw "java.lang.NoSuchMethodError" runtime exceptions
    when run with log4j 1.2 - prior to beta2. This problem has been
    corrected in beta2. Pheew, that was a close one. [*]

  - Log4j 1.2 is now backward compatible in serialization of
    LoggingEvents. For example, a 1.1.3 SocketAppedner can write to 1.2
    SocketServer. Similarly a 1.2 JMSAppender will work with 1.1.3
    JMSSink. This should ease the move to log4j 1.2, especially in
    large deployments. [*]


  - The src/java/org/apache/log4j/examples/ directory moved under the
    top-level directory as examples/. [*]

  - Fixed the ArrayIndexOutOfBoundsException that was thrown by
    AsyncAppender if multiple threads were trying to log an event
    containing an exception near simultaneously. Thanks to Thomas Tuft Muller
    for reporting this bug. [*]


  - Improved error reporting in DOMConfigurator. Thanks to Thomas Tuft
    Muller for contributing the enhancement. [*]

  - Log4j is now configurable using JMX. JMX support is not of
    production quality. [*]

  - Added support for different encodings in WriterAppender. Thanks to
    Ben Sandee for submitting the relevant patch. [*]

  - Modified SMTPAppender to allow multiple email sessions. Thanks to
    Jon Skeet for supplying the relevant patch. [*]

  - The CategoryFactory class has been replaced by the LoggerFactory
    class. The makeNewCategoryInstance method has been renamed as
    makeNewLoggerInstance. This change requires subclasses of Category
    classes to be modified and recompiled. [**]

  - The Level class replaced the Priority class. Priority class now
    extends Level to preserve backward compatibility. [*]

  - The Logger class replaced the Category class. Logger class
    extends Category to preserve backward compatibility. We proudly
    mark this change with a single star for 100% compatibility. [*]

  - The Category.assert method has been replaced by
    Category.assertLog.  This change was necessary because assert is a
    language reserved word in JDK 1.4. [*/**]

  - Removed deprecated methods setOptions and getOptionStrings defined
    in the org.apache.log4j.spi.OptionHandler interface. This interface
    is implemented by most log4j appenders and layouts. In particular,
    all appenders and layouts shipped with log4j contain these
    deprecated methods. They have become totally redundant after we
    moved to JavaBeans style configuration in log4j 1.1. [**]

  - The disable(Level) methods in Hierarchy have been removed and been
    replaced by threshold methods. [**]

  - Added buffered IO capability to FileAppender and subclasses. [*]

  - The location information (or stack information) was not correctly
    transmitted by JMSAppender. [*]

  - Added event reporting capability to the Hierarchy class.

  - Added new system property "log4j.configuratorClass". This property
    allows the user to specify the custom configurator at the default
    initialization phase. This property replaces the previous
    interpretation of the reference part of "log4j.configuration"
    as the custom configurator class. This interpretation was sometimes
    erroneous and caused headaches. [*]

  - Introduced the Mapped Diagnostic Context or MDC class. This class
    is similar to the NDC except that the diagnostic context is based
    on a map instead of a stack. Moreover the MDC is automatically
    inherited by child threads under JDK 1.2 and above. [*]

  - Corrected a performance bug in the NDC class as observed by Dan
    Milstein and independently by Ray Millard. [*]

  - Removed deprecated methods disable(Priority), disableAll,
    disableDebug, disableInfo and enableAll in BasicConfigurator. [*]

  - Added supports java.io.Reader objects in the method doConfigure(),
    instead of only InputStream. Thanks to Mark Womack for submitting
    the relevant patch. [*]

  - Corrected the restart bug in DayliRollingFileAppender. Thanks to
    Jim Moore for supplying the relevant patch. [*]


To unsubscribe, e-mail:   <mailto:log4j-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:log4j-dev-help@jakarta.apache.org>

View raw message