| |
| |
| [*] Changes that are 100% compatible with existing client code. |
| [**] Changes that requiring little or no modification to existing |
| client code. |
| [***] Changes requiring important modifications to existing client code. |
| |
| [D] Changes affect a method or property which was previously marked as |
| deprecated. |
| |
| January 20th, 2005 |
| - Release of version 1.3alpha-6 |
| |
| - Fixed involuntary omission of DOMConfigrator (deprecated) in log4j-VERSION.jar. |
| - Added missing files in log4-oro.jar. |
| - The lengthy system property "log4j.repositorySelectorClass" was renamed as |
| "log4j.repositorySelector". |
| |
| January 19th, 2005 |
| - Release of version 1.3alpha-5 |
| |
| - Universal and Generic Logging Interface (UGLI) is now part of log4j. |
| UGLI allows variation in the logging API implementattion in a simple and |
| robust way. Log4j directly supports the interfaces defined by UGLI. |
| For more information see http://logging.apache.org/log4j/docs/ugli.html [*] |
| |
| - Log4j now ships with several jar files, one jar file per dependency. [*/**] |
| |
| - Fixed Bugzilla 15198: TelnetAppender: NullPointerException if |
| SocketHandler not initialized. [*] |
| |
| - Fixed Bugzilla 12112: CountingQuietWriter miscounts bytes. [*] |
| |
| - Fixed Bugzilla 18076: setting of firstTime in OnlyOnceErrorHandler. [*] |
| |
| - Added pattern conversion support for the Subject line for emails |
| generated by SMTPAppender. The set of patterns is the same as those |
| supported by PatternLayout. [*] |
| |
| - Implemented Bugzilla 20985: charset support for SMTPAppender [**] |
| |
| - Implemented Bugzilla 20500: separate registry clearing from doConfigure in PropertyConfigurator |
| to allow to easier extension. [*] |
| |
| - Fixed Bugzilla 23912: unsafe access to BoundedFIFO in AsyncAppender. [*] |
| |
| - Changed converter register accessors in PatternParser to take/return Map instead |
| of HashMap, a cleaner abstraction allowing for different implementation types. [*] |
| |
| - Fixed Bugzilla 26658: modify build.xml chainsaw target with respect to crimson.jar [*] |
| |
| - Fixed Bugzilla 28682: NullPointerException in SocketHubAppender#cleanup. [*] |
| |
| - Fixed Bugzilla 28464: White space significant at end of line for PropertyConfigurator. [*] |
| |
| - Fixed Bugzilla 26117: Output encoding for TelnetAppender. [*] |
| |
| November 25, 2004 |
| |
| - Release of version 1.3alpha-3 |
| |
| - Classes are built with the javac debug setting on. |
| - Fixed unset activeFile bug in SlidingWindowRollingPolicy. |
| |
| November 25, 2004 |
| |
| - Release of version 1.3alpha-2 |
| |
| - The deprecated DOMConfigrator was mistakenly left as the default |
| configrator for XML files. This has been fixed and JoranConfigrator |
| now is the default configrator for XML files. |
| |
| November 24th, 2004 |
| |
| - Release of version 1.3alpha-1 |
| |
| - Log4j now uses itself for its own logging. For more details refer to |
| |
| http://www.qos.ch//logging/internalLogging.jsp |
| |
| - The Appender.requiresLayout() method is no longer needed. |
| |
| This method was only used by PropertConfigrurator and not |
| DOMConfigurator nor JoranConfigurator. It was never strictly necessary |
| and case the layout is *optional* for a given appender type, it causes |
| unwarranted error messages. |
| |
| This simplification will make it slightly easier to write appenders. |
| |
| - Added new printing methods message supporiting pattern parsing. These new forms |
| avoid superflous parameter construction and yield a significant performance |
| increase in the case of disavled log statements. [*] |
| |
| - Added new ListAppender & ListModelAppender classes to the org.apache.log4j.varia package. |
| These are rather simplistic Appender implementations that store LoggingEvents in |
| an internal buffer (java.util.List and a DefaultListModel respectively) which can |
| be useful in certain applications (such as a Swing GUI app etc). [*] |
| |
| - org.apache.log4j.HTMLLayout has been replaced with org.apache.log4j.html.HTMLLayout. |
| The new HTMLLayout admits a conversion pattern using the same syntax as |
| PatternLayout. Thus, the user can customize the content of columns in the HTML table |
| produced by HTMLLayout. Just as importantly, many visual aspects of the table can be |
| customized at row or even cell level with the help of a CSS file. |
| |
| The new HTMLLayout has been contributed by Steve Mactaggart. |
| |
| - Log4j now ships with JoranConfigurator, a powerful replacement for |
| DOMConfigurator. Joran bring a plethora of new capabilities. In |
| particular, it can be taught new parsing rules on the fly, even from |
| within the config file being processed. Moreover, with the help of |
| implicit actions, it can configure specialized sub-components of log4j |
| components. |
| |
| Many of the new components in version 1.3 can be configured thanks |
| to the new capabilitues found in JoranConfigurator. |
| |
| - Fixed bug #15585 relative to location information extraction on the AS400. The fix |
| was contributed by Patrice Kolata. [*] |
| |
| - Log4j will now automatically include stack traces for nested |
| exceptions. Log4j extends the automatic nested exception printing |
| available in JDK 1.4 to nested exceptions accessible through methods |
| named "getRootCause", "getNextException" and "getException", not just |
| "getCause" as in JDK 1.4. [*] |
| |
| - The location information extraction code has been refactored to use |
| a faster mechanism when running on JDK 1.4 or later. The new mechanism, contributed |
| by Martin Schulz, is at least twice as fast. |
| |
| See http://marc.theaimsgroup.com/?t=108473346700001&r=1&w=2 for more details. [*] |
| |
| - Made ignoresThrowable a settable property. The user can now force a layout |
| to ignore the throwable in the event even if the layout knows how to handle |
| exceptions. Conversely, an appender can be fooled to believe that a layout |
| handled the exception in the logging event by setting a layout's ignoresThrowable |
| property to false. [*] |
| |
| - The org.apache.log4j.db package replaces the old org.apache.log4j.jdbc |
| package. The new package supports most relational database systems |
| such as PostgreSQL, MySQL, Oracle, DB2 or MsSQL. It can also handle |
| retrieve connections using a JDBC driver class, a data source class or |
| JNDI. [*] |
| |
| - A sequenceNumber field has been added to LoggingEvent. This fields is useful when |
| checking for the equality of two logging events or when ordering them. [*] |
| |
| - Log4j now has its own Scheduler. It allows jobs to be executed at a certain date |
| or even periodically. It only requires just one extra thread. [*] |
| |
| - Added the "isPristine" flag to LoggerRepository. As soon as a configurator |
| starts configuring a repository this flag is set to false. |
| |
| - Removed support for the deprecated property "log4j.configDebug". [**/D] |
| |
| - The new ContextJNDISelector allows for the possibility of managing |
| multiple logger hiearchies within the same application server while |
| only a single copy of log4j.jar is present in memory. |
| |
| - Added keys() method to the MDC class as requested by Don Isenor. |
| |
| - Certain operations on Loggers are now made using ReaderWriterLocks which |
| allows simultaneous read operations but only one write operation. This should |
| significantly improve logging throughput in heavily loaded server environments. |
| |
| - Rolling can now be triggered based on time or size as was already the case in |
| log4j 1.2. However, the new architecture allows for much more variation in the |
| timing of the rollover and the actions taken during rollover (i.e on the fly |
| compression, renaming, moving). The new architecture was suggested a long time |
| ago by James P. Cakalic. A similar design can be found in the Avalon Logkit |
| package. |
| |
| In order to avoid duplication, the old org.apache.log4j.RollingAppender |
| and org.apache.log4j.RollingAppender classes have been removed. [**] |
| |
| - LoggingEvent was extended to allow properties. Properties are meant to be set |
| by Layout and Appender classes as they output/process logging events. |
| Properties are per logging event where MDC values are per thread. |
| |
| - Another LoggingEvent constructor was added to allow instances to be reconstituted |
| when received from remote sources that do not use LoggingEvent as the transport |
| type (like XML for example). |
| |
| - Fixed bug #23096. NullAppender getInstance method is now declared as a static. |
| |
| - Fixed bug #10706. The %X pattern without a key no longer causes a NullPointer |
| exception, |
| |
| - ADD: LIST OF CHAINSAW IMPROVEMENTS. |
| |
| November 2nd, 2004 |
| |
| - Release of version 1.2.9 |
| |
| 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. |
| |
| For a more detailed discussion, refer to the document entitled |
| preparing for log4j 1.3 at: |
| |
| http://www.qos.ch/logging/preparingFor13.jsp |
| |
| February 19th, 2003 |
| |
| - Release of version 1.2.8 |
| |
| - Fixed bug #11570 whereby XMLAppender would throw a |
| NullPointerException if the input message was null. Many thanks to |
| David Vandegrift for reporting the bug and to Hendrik Brummermann for |
| supplying the patch. [*] |
| |
| - Fixed bug #12366 whereby various versions of Xerces would not parse |
| log4j configuration scripts expressed in XML format. [*] |
| |
| - Fixed bug #14827. The "removes" buffer used in the flushBuffer() method |
| of JDBCAppender is now cleared, solving the memory leak. Thanks to John |
| Landers for reporting the bug and suggesting the fix. [*] |
| |
| - Fixed bug #15599. SocketAppender now honors ReconnectionDelay of 0. |
| Many thanks to Scott Schram for reporting the bug and providing the fix. [*] |
| |
| October 9th, 2002 |
| |
| - Release of version 1.2.7 |
| |
| - Log4j now searches for the file log4j.xml as well as the file |
| log4j.properties during log4j initialization. [*] |
| |
| July 31st, 2002 |
| |
| - Release of version 1.2.6 |
| |
| - Addition of new options in JMSAppender and new command line arguments in |
| JMSSink. [*] |
| |
| - Added new method getLoggerName() in LoggingEvent class. The |
| getLoggerName is the preferred way for accessing the logger |
| name. The public access categoryName field should not be accessed |
| directly. Similarly, added the getLevel method which is now the |
| preferred way of accessing the event's level. The public access |
| level field should not be accessed directly. The javadocs now mark |
| the categoryName and level fields as deprecated. |
| |
| Modified existing appenders to comply with these new directives. [*] |
| |
| - Log4j now will check if a system property named "log4j.ignoreTCL" |
| is set. If it is set, then it will ignore the Thread Context |
| ClassLoader when loading classes. This solves the irritating |
| "appender is not assignable to Appender" messages observed when |
| log4j.jar is loaded by multiple class loaders. |
| |
| The error reporting for this problem was also improved. [*] |
| |
| - Fixed bug #10528 whereby calling the MDC.get method with a null |
| argument would throw a NullPointerException. [*] |
| |
| July 5th, 2002 |
| |
| - Release of version 1.2.5 |
| |
| - Minor changes and bug fixes in LF5. [*] |
| |
| - Calling an AsyncAppender close method also closes the embedded |
| appender instances. This resolves bug #10185 submitted by Paul |
| Voutier. [*] |
| |
| June 12th, 2002 |
| |
| - Release of version 1.2.4 |
| |
| - The JDBCAppender is marked as slated for replacement. Do not build |
| critical software using it. |
| |
| - Added LF5 documentation and examples. Further tests are required |
| for full integration. [*] |
| |
| - XMLLayout can now output messages which contain embedded CDATA |
| sections. This resolves bug #9750. Many thanks to Michael |
| A. McAngus for supplying the relevant patch. [*] |
| |
| - The dispatcher thread associated with AsyncAppender is now marked |
| as a deamon thread. This resolves bug #9750. [*] |
| |
| - Added missing NTEventLogAppender.dll as reported in bug #9606. [*] |
| |
| - In response to bug report 9435, the log4j.dtd was changed so that |
| <log4j:event> is now made of logger and level attributes instead of |
| category and priority. Changed XMLLayout to conform to the |
| DTD. Chainsaw was changed to adapt to the XMLLayout. [*] |
| |
| - Added missing LevelRangeFilter file. [*] |
| |
| May 24th, 2002 |
| |
| - Release of version 1.2.3 |
| |
| - Fixed bug #9285 where the SyslogAppender would incorrectly compute |
| the length of the datagram to send to the remote syslogd host. |
| Reported by Mamoru Kadota. [*] |
| |
| - Fixed bug #8505 where the stack trace of exception would not be |
| properly printed on the Compaq tru64 Unix platform. Initially |
| reported by Fabrice Claes and later by Espen H. Kolstad who also |
| provided the fix. [*] |
| |
| May 22nd, 2002 |
| |
| - Release of version 1.2.2 |
| |
| - Log4j configurators take the "NULL" string value as a synonym for |
| "INHERITED". Both of these two strings are legal level values for |
| setting the level of a logger. Both values are case insensitive. [*] |
| |
| - When loading component classes, log4j will now first attempt to use |
| the Thread Context Loader and if that fails, it will use |
| Class.forName. In log4j 1.2 and 1.2.1, only Class.forName was used |
| and the TCL was ignored. This change is a response to bug #9305 |
| opened by Scott M. Stark. [*] |
| |
| May 17th, 2002 |
| |
| - Release of version 1.2.1 |
| |
| - This minor release fixes bug #9155 reported by Nicko Cadell. |
| LoggingEvent.getMDCCopy() method now sets mdcCopyLookupRequired |
| instead of ndcLookupRequired. This bug would cause the wrong MDC |
| information to appear on a log server. It could only occur if the |
| client wrapped an AsyncAppender around a SocketAppender or if the |
| server used an AsyncAppender for its logging. [*] |
| |
| May, 2002 |
| |
| - Release of version 1.2 |
| |
| - Fixed bug #8527. A closed TelnetAppender would continue waiting |
| for connections even if its ServerSocket was closed. This caused |
| the TelnetSocket to sit in a loop and complain about the closed |
| socket. [*] |
| |
| - AsyncAppender throws NullPointerException problem. The bug was actually in |
| AppenderSkeleton. See bug #5444 details. [*] |
| |
| - Added support for recursive variable substiuton as requested by |
| Eric Chastan. [*] |
| |
| - SocketNode now used a BufferedInputStream as suggested by Kok Chong |
| in bug report #3933. [*] |
| |
| - Fixed a problem with DailiyRollingAppender which would not |
| correctly compute the rollover period in certain timezones. See bug |
| report #7550. [*] |
| |
| - Fixed documentation bug #2726 in FAQ.html. [*] |
| |
| - In WriterAppender, fixed bug #2383 by adding a flush statement in the |
| writeFooter method. [*] |
| |
| - In XMLLayout, Fixed bug #7550 by escaping the method attribute. The |
| XMLLayout also outputs each item of a stack trace in a separate |
| line. [*] |
| |
| - Fixed bug #5932 as suggested by Heikki Linnakangas. The |
| LoggingEvent.getMDCCopy method now clones the MDC instead of just |
| referencing it. [*] |
| |
| (rc1) |
| |
| - 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. [*] |
| |
| (beta4) |
| |
| - 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 |
| http://forum.java.sun.com/thread.jsp?forum=38&thread=70946 |
| http://forum.java.sun.com/thread.jsp?forum=38&thread=70946#479697 |
| http://marc.theaimsgroup.com/?l=ant-user&m=101139178705895&w=2 |
| for more details. [*] |
| |
| |
| (beta3) |
| |
| - 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. |
| |
| (beta2) |
| |
| - 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. [*] |
| |
| (alpha7) |
| |
| - 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. [*] |
| |
| (alpha1-alpha6) |
| |
| - 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. [*] |
| |
| June 19, 2001 |
| |
| - Release of version 1.1.3 |
| |
| - Added a missing namespace declaration in the log4j:configuration |
| element in log4j.dtd. The missing declaration caused the new |
| generation of namespace aware parsers to barf when parsing log4j |
| configuration files. [*] |
| |
| - Reduced the size of log4j-core.jar to 78KB. [*] |
| |
| - Minor documentation changes. [*] |
| |
| June 7, 2001 |
| |
| - Release of version 1.1.2 |
| |
| - Corrected a problem with the static initializer of the Category |
| class which would use the wrong class loader to search for the |
| default configuration file. The associated search algorithm has |
| been also simplified. Nevertheless, the preferred method to specify |
| the automatic configuration file is by setting the |
| log4j.configuration system property. [*] |
| |
| - Documentation improvements. Added a new section to the manual |
| explaining the default initialization procedure [*] |
| |
| - Enhancements to the org.apache.log4j.examples.appserver package. [*] |
| |
| - Corrected a bug in the way the NTEventLogAppender printed |
| exceptions. [*] |
| |
| May 20, 2001 |
| |
| - Release of version 1.1.1. |
| |
| - Added missing custom priority support in PropertyConfigurator. [*] |
| |
| - Made a number of fields protected instead of default access in |
| SMTPAppender. [*] |
| |
| May 19, 2001 |
| |
| - Release of version 1.1. |
| |
| - This release has the same code as 1.1b7. It differs only in a few minor |
| documentation changes. |
| |
| May 9, 2001 |
| |
| - Release of version 1.1b7 |
| |
| - Made BasicConfigurator disable methods static as they were in log4j |
| 1.0.4. Thanks to Francisco Marin for reporting the bug. [*] |
| |
| - Corrected a two related deadlock problems introduced while fixing |
| bug 1505. Thanks to joelr@viair.com for reporting the problem. [*] |
| |
| - The configureAndWatch methods in Configurators did not close the |
| configuration file, preventing its editing. See bug 1686. [*] |
| |
| - In DOMConfigurator.setParameter special character conversion now |
| precedes variable substitution. This change was suggested by Steven |
| Velez. The vast majority of users should be oblivious to it. [*] |
| |
| - The TextPaneAppender is no longer maintained and has been |
| removed. It is still available under the contribs/ |
| directory. This change has been discussed in the log4j mailing |
| lists and no one objected to the removal of the TextPaneAppender |
| class. |
| |
| April 26, 2001 |
| |
| - Release of version 1.1b6 |
| |
| - Aaron Greenhouse from Carnegie Mellon SCS found a series of |
| multi-threading related bugs in Category and AsyncAppender. See bug |
| ids 1505 and 1507 in our bug database for exemplary bug |
| reports. They are worth the detour. [*] |
| |
| - InvalidJarIndexException is only available in JDK 1.3. Referring |
| to this exception type caused log4j 1.1b5 to break on earlier JDKs. |
| We now avoid referring to it. [*] |
| |
| - Added PriorityRangeFilter by Simon Kitching. See the Threshold |
| option in AppenderSkeleton for a more convenient alternative. [*] |
| |
| April 22, 2001 |
| |
| - Release of version 1.1b5 |
| |
| - In HTMLLayout, the Title option sets the HTML document |
| title (<title>...<title>). [*] |
| |
| - Corrected an important performance bug in LocationInfo. Hein Couwet |
| and kr@it-practice.dk have independently identified the bug. This is |
| yet another example of the difference made by the number of eyeballs |
| studying source code. [*] |
| |
| - Corrected the incorrect value returned by LocationInfo.getClassName |
| method when running under IBM Visual Age. Thanks to Mathias |
| Rupprecht for supplying the relevant patch. [*] |
| |
| - Corrected a bug where the build.sh file in the distribution would be in |
| DOS CRLF format. Thanks to ma.darche@free.fr for reporting the |
| problem. [*] |
| |
| - Corrected InvalidJarIndexException thrown in applets while |
| searching for the default log4j configuration file. Thanks to |
| Michael Lundahl for reporting this bug. [*] |
| |
| - Added missing PropertySetterException class to log4j-core.jar. |
| Thanks to ma.darche@free.fr for reporting this bug. [*] |
| |
| April 20, 2001 |
| |
| - Release of version 1.1b4 |
| |
| - Mathias Bogaert observed that in version 1.1b3 the search algorithm |
| for the resource used in automatic log4j configuration was |
| different than in 1.0.x. Beta4 uses a more powerful mechanism which |
| is also compatible with 1.0.x. [*] |
| |
| - Paul Glezen correctly observed that if log4j is deployed in a |
| client/server mode where multiple log4j clients log to a log4j |
| server, all hosts must be upgraded to version 1.1 in one go because |
| the internal LoggingEvent class used in client/server communication |
| changed in log4j 1.1. |
| |
| April 18, 2001 |
| |
| - Release of version 1.1b3 |
| |
| - Added a RollingFileAppenderBeanInfo class that fakes the |
| maxFileSize JavaBeans property as a String type instead of a long. |
| This allows us to resuscitate setMaxFileSize(long) method that was |
| removed in 1.1b2 breaking 100% backward compatibility. This addition |
| restores 100% backward compatibility. [*] |
| |
| April 18, 2001 |
| |
| - Release of version 1.1b2 |
| |
| - The directory structure has changed to better suit Jakarta |
| conventions as follows: |
| |
| org/** --> src/java/org/** |
| xdocs/** --> src/xdocs/** |
| |
| If you have a CVS checked out copy of log4j be sure to check out a |
| fresh copy. [*] |
| |
| - Added a few jar files required at build time to build/lib so that |
| it is now possible to compile log4j out of the box. [*] |
| |
| - Whenever a priority parameter is expected in a configuration file, |
| one can now use a custom priority class. See OptionConverter.toPriority |
| method for more information. Note that the <priority> element in |
| log4j.dtd remains unaffected by this change. [*] |
| |
| - Added the setQuietMode(boolean) method to LogLog. In quiet mode |
| LogLog will not output anything even in case of errors. [*] |
| |
| - Log4j components are now configured as JavaBeans. The setOption and |
| getOptionString methods have been deprecated in OptionHandler |
| interface which is implemented by most log4j components. [*] |
| |
| - The stack trace of a throwable passed in a logging statement is not |
| parsed into a stack array which is serializable. This allows cascading of |
| log4j servers to properly propagate throwable information. [*] |
| |
| - In XML configuration files, the <configuration> element has been |
| deprecated and was replaced by the <log4j:configuration> element. [*] |
| |
| The following perl command can help to migrate: |
| |
| perl -p -i.bak -e "s/configuration/log4j:configuration/;" file1.xml .. fileN.xml |
| |
| - The "log4j.configDebug" system property has been replaced with the |
| "log4j.debug" system property although it is still available. |
| Similarly, the "configDebug" attribute has been deprecated and |
| replaced with the "debug" attribute in log4j.dtd. [*] |
| |
| |
| February 23, 2001 |
| |
| - Release of version 1.1b1 |
| |
| - Logging can now be disabled per Hierarchy. It can also be disabled |
| using configuration files using the "disable" directive. The |
| "disableOverride" directive takes precedence over the "disable" |
| directive. As a result of this change the disable family of |
| methods in BasicConfigurator has been deprecated and replaced by the same |
| family of methods in the Hierarchy class. [*] |
| |
| - The FileAppender has been split into three parts: WriterAppender, |
| ConsoleAppender and FileAppender. ConsoleAppender takes over the |
| console logging functionality of FileAppender. As a result support |
| for stream and console printing has been deprecated in FileAppender. [**] |
| |
| - The FileAppender now correctly outputs the header and footer of its |
| layout. This problem was reported by too many users to list here. [*] |
| |
| - Appenders and Layouts now get to see the raw message object in |
| LoggingEvent not just its rendered form. The access modifiers of |
| some LoggingEvent fields were changed so that they can be accessed |
| in less error-prone ways. Thanks to Jim Cakalic and Anders Kristens |
| for their valuable advice. [*] |
| |
| - Added getLayout(), getErrorHandler(), and getFilter() to the |
| Appender interface. [*] |
| |
| - Added getOption(key) method to the OptionHandler interface and modified |
| implementations of it as appropriate. [*] |
| |
| - Added the much awaited DailyRollingFileAppender. [*] |
| |
| - The structure of the distribution changed somewhat. The log4j.jar |
| files can be found under dist/. The javadoc directory has been |
| moved to docs/api/. We are now totally dependent on ANT to perform |
| all the steps involved in creating a release, including |
| compilation, jar file creation, generation of the javadocs, and for |
| the creation of the distribution tar and zip files. [*] |
| |
| - Removed org/apache/log4j/varia/ResilientFileAppender.java which was |
| bogus to begin with. [*] |
| |
| - XMLLayout will now mark some output as <![CDATA[ .. ]]> so that it |
| does not get interpreted by the XML parser. This was suggested by |
| Mathias Bogaert like a long list of other fixes. [*] |
| |
| - Corrected a bug in CyclicBuffer.resize method that would not update the |
| next insertion point. Thanks to Ole Bulbuk for accurately reporting |
| the bug. [*] |
| |
| - The LoggingEvent class now supports serialization of priorities |
| derived from the org.apache.log4j.Priority class. [*] |
| |
| - Improved the search method for finding the "log4j.properties" file in |
| the static initializer of Category class. Thanks to Calvin Chan for |
| supplying a better method. [*] |
| |
| - The code handling the FCQN (formerly instanceFQN) parameter was |
| cleaned up. There is now a well-established and simple manner for |
| sub-classes of Category (or wrapper classes) to define the FCQN |
| variable: just define a static variable, say FCQN, consisting of |
| the fully qualified class name of the subclass or wrapper, supply |
| this variable as an argument to forcedLog method if and when |
| the sub-class or wrapper invokes that method. [*] |
| |
| - Made the instanceFCQN an instance variable instead of a class |
| static in Category.java. In related move, the Category constructor |
| now takes an additional argument setting the instanceFCQN. This |
| makes life less miserable for Category subclasses. [*] |
| |
| - Corrected a bug in the OptionConverter.instantiateByClassName |
| method that would not return the defaultValue in case of error. Thanks |
| to Matthieu Verbert for identifying this bug. |
| |
| - Corrected the missing stack trace in e-mails generated by the |
| SMTPAppender when using certain Layouts. [*] |
| |
| - Updated the "Adding Conversion Characters to PatternLayout" |
| document to reflect the latest changes to the code. Also added the |
| org/apache/log4j/examples/appserver directory containing the |
| associated example code. [*] |
| |
| - Added the BufferSize option to the AsyncAppender. [*] |
| |
| - Eliminated the SecurityExceptions thrown in Applets. Thanks Timur |
| Zambalayev for reporting this bug. [*] |
| |
| - Fixed the erroneously thrown IOInterruptedException when the AsyncAppender |
| was closed. Thanks to Tom Palmer for accurately reporting this bug. [*] |
| |
| January 12th, 2001 |
| |
| - Release of version 1.0.4 (the 20th major release) |
| |
| - Corrected a serious bug in Hierarchy.java that would cause a |
| NullPointerException depending on the order of instantiation of |
| categories. Thanks to Wolfram Gewohn for reporting this bug. [*] |
| |
| - Corrected a bug in the getOptionsStrings method of SMTPAppender |
| that omitted to mention the EvaluatorClass option. Thanks to Mark |
| Balster for reporting this bug. [*] |
| |
| January 11th, 2001 |
| |
| - Release of version 1.0.3 (the 20th major release) |
| |
| - Fixed a NullPointerException occurring in AsyncAppender after |
| invoking Category.shutdown. Thanks to Frank-Olaf Lohmann for |
| reporting this bug. [*] |
| |
| - Modified the OptionConverter.selectAndConfigure method to take an |
| extra argument of type Hierarchy. This method is used internally |
| and should not affect most users. [*/**] |
| |
| - Added the warn method to LogLog which is used internally by log4j |
| to report on itself. [*] |
| |
| - Displaced a number of HTML files under the docs directory. The new |
| structure is compatible with the jakarta site and results in a |
| more consistent navigation experience. [*] |
| |
| - Made a few improvements in the javadocs. [*] |
| |
| January 11th, 2001 |
| |
| - Release of version 1.0.2 (the 20th major release) |
| |
| - Added the missing build.inc file to the distribution. No code |
| changed. |
| |
| January 10th, 2001 |
| |
| - Release of version 1.0.1 (the 20th major release) |
| |
| - This version corrects some documentation and build script bugs; |
| code has not changed. |
| |
| January 8th, 2001 |
| |
| - Release of version 1.0 (the 20th major release) |
| |
| - Package hierarchy now starts at org.apache.log4j. [***] |
| |
| The following perl command can help in the transition: |
| |
| > perl -p -i.bak -e "s/org.log4j/org.apache.log4j/;" file1.java .. fileN.java |
| |
| - Added the fatal() family of methods to the Category |
| class. Moreover, the EMERG priority has been removed from the |
| Priority class. This priority has been replaced by the FATAL |
| priority that is more widely accepted. This change will |
| require EMERG log statements to be replaced by FATAL log |
| statements. Assuming EMERG log statements are rare, this should |
| have a small but bearable impact on existing client code. |
| |
| Moreover, the Unix Syslog priorities ALERT, CRIT and NOTICE are no |
| longer recognized. Support for these priorities was minimal and |
| few users should suffer from these changes. [**] |
| |
| - Removed the methods setRootPriority, getRootPriority as these |
| methods were redundant and had been previously deprecated. [**] |
| |
| - Removed the DOM Level 2 dependency in DOMConfigurator. This makes |
| log4j XML configurable using Sun's parser or Apache's Xerces. [*] |
| |
| - The static initializer of the Category class now takes the |
| log4j.configuration system property to search for its configuration |
| file. The type of the configurator used to parse the configuration |
| file depends on the value of the log4j.configuration system |
| property. [*] |
| |
| - Enhanced the PropertyConfigurator and DOMConfigurator to support |
| customisation of independent Hierarchy instances. The |
| org.apache.log4j.net.SocketServer has been enhanced to take |
| advantage of this functionality. The old code of SocketServer has |
| been moved to SimpleSocketServer. [**] |
| |
| - Enhanced the PropertyConfigurator to support variable substitution |
| for all options *values* (but not keys!). [*] |
| |
| - Categories are now aware of the Hierarchy they are linked to. This |
| will provide a basis for several performance enhancements planned |
| for the future. [*] |
| |
| - Added support for object rendering. It is now possible to register |
| an object renderer for a given object type. When the given object |
| needs to be logged log4j will invoke the corresponding renderer to |
| transform the object into a String. |
| |
| As a result of this enhancement, all the String forms of all the |
| printing methods such as debug(String), info(String) have been |
| removed as they are no longer necessary. This change should be |
| backward compatible but requires recompilation of old client |
| code. Thanks to Michael Smith for noting the recompilation |
| requirement. [**] |
| |
| - Added support for user defined category factories in the |
| PropertyConfigurator. Thus, it is now possible to configure log4j |
| with a properties file and still use custom Category |
| sub-classes. The DOMConfigurator had already a finer grain |
| support. [*] |
| |
| - Added the SMTPAppender that in case of an error or fatal event |
| sends an e-mail containing latest N logging events in its buffer, |
| where N is chosen by the user. [*] |
| |
| - Added the method getInstance(Class) to the Category class. [*] |
| |
| - Corrected a bug in configureAndWatch method of configurators that |
| would configure log4j only after an unnecessary delay. [*] |
| |
| November 30, 2000 |
| |
| - Release of version 0.9.1 (the 19th public release) |
| |
| - Corrected a typo making NTEventLogAppender.dll register the wrong |
| category message file. Thanks to Peter Hayes for accurately |
| reporting this bug. [*] |
| |
| - The DOMConfigurator and PropertyConfigurator can now automatically |
| detect modified configuration files and re-read them. [*] |
| |
| - Added AsyncAppender which buffers log requests and serves them |
| at a later time. AsyncAppender can increase logging performance |
| tremendously if logging operations are interspersed with long |
| and blocking non CPU-intensive operations, typically I/O or network |
| access. For CPU intensive applications, using the AsyncAppender |
| will actualy degrade logging performance by 10 to 25 percent. [*] |
| |
| - The log4j.dtd has been modified to allow appenders to refer to |
| other appenders by IDREF. [*] |
| |
| - The DOMConfigurator has been modified to take advantage of ID/IDREF |
| attributes when referring to appenders. This change requires a |
| DOM Level-2 API compliant parser. DOM Level-2 java bindings are |
| available at |
| http://www.w3.org/TR/1999/WD-DOM-Level-2-19990923/java-binding.html. |
| |
| - Added the configure(String filename) method to DOMConfigurator. |
| This method requires the presence of a JAXP compatible parser. |
| |
| At this time, the only DOM2 and JAXP compatible parser seems to be |
| the Apache xerces parser. |
| |
| - Added the PriorityMatchFilter allowing filtering by exact priority |
| match. This was a common request by users. [*] |
| |
| - The configuration of a category is now an atomic operation. This |
| ensures that log requests are not lost while configuration is in |
| progress. Anders Kristensen was to first to observe the potential |
| problems in non-atomic configurations. [*] |
| |
| November 20th, 2000 |
| |
| - Release of version 0.9.0 (the 18th public release) |
| |
| - The "log4j" element has been renamed to "configuration" in the |
| log4j DTD. This change requires that log4j configuration files |
| written in XML be modified. Since the log4j element figures only |
| once in the XML file, this change should take little time. [**] |
| |
| - ResourceBundles are now category instance specific and no longer |
| class static. Moreover, like other properties resource bundles |
| are inherited from the category hierarchy. [**] |
| |
| - The jar files log4j.jar and log4j-full.jar now contain versioning |
| information in their respective manifest files. [*] |
| |
| - Corrected an inconsistency in the NTEventLogAppender which broke it. |
| |
| - Fixed a bug where configuration files were not parsed correctely |
| due to trailing spaces in option values as returned by |
| java.util.Properties. Trailing spaces are now removed from option |
| values. This bug was quite disconcerting because the |
| trailing spaces cannot be seen without careful examination of the |
| configuration file. [*] |
| |
| - Added the XMLLayout. |
| |
| The output of the XMLLayout consists of a series of log4j:event |
| elements. It does not output a complete XML file. The output is designed to |
| be included as an external entity to form a well-formed XML file. [*] |
| |
| - Added a new abstract class org.log4j.helpers.DateLayout. The TTCCLayout |
| now extends DateLayout. [*] |
| |
| - Corrected a rather subtle performance bug in the buffer management code |
| in PatternLayout. Thanks to Vladislav Dutov and Constantine |
| A. Plotnikov for for insisting on the correction of this bug. [*] |
| |
| - Created a new package called org.log4j.spi. This new package |
| holds classes that are hidden from the casual user but are needed |
| to extend log4j. [*] |
| |
| - Added org.log4j.varia.ExternallyRolledFileAppender to handle |
| externally triggered file rollovers. [*] |
| |
| - Added support for multiple hierarchy trees. [*] |
| |
| - PatternLayout can now be subclassed to support new conversion |
| patterns. [*] |
| |
| - Extended the DOMConfigurator and the log4j DTD to properly handle |
| sub-classing of Category and Priority classes. |
| |
| There have been also minor adjustments to other classes to handle |
| sub-classing. These changes should be invisible to users. |
| |
| All categories except the root category can be sub-classed and also |
| assigned priorities sub-classing org.log4j.Priority. |
| |
| The root category always exists and CANNOT be subclassed. |
| |
| The ProppertyConfigurator remains unchanged. Thus, it does not |
| handle extensions of the Category class. [*] |
| |
| - Added filter support in appenders. The DOMConfigurator and the |
| log4j.dtd have been enhanced to support filters. [*] |
| |
| - Added error handling support to appenders. The DOMConfigurator and the |
| log4j.dtd have been enhanced to support filters. [*] |
| |
| - Added support for correct interpretation of location information in |
| IBM's Visual Age environment. Thanks to Wolf Siberski for supplying |
| the relevant patch. [*] |
| |
| - Added getAdditivity method to Category. This feature was requested |
| by Constantin Mitran. (mitran at ecircle.de) [*] |
| |
| August 27, 2000 |
| |
| - Release of version 0.8.5b. |
| |
| - Corrected multiple bugs in default initialization code of |
| Category class. Thanks to Jeff Turner for identifying and supplying |
| corrective patches. [*] |
| |
| August 24, 2000 |
| |
| - Release of version 0.8.5a. |
| |
| - Added the %n conversion character to PatternLayout so that a line |
| separator can be specified in a platform independent way. [*] |
| |
| - In 0.8.5 internal Priority integer values were decoupled from the |
| Unix Syslog values. This broke SyslogAppedder. A new function |
| Priority.toSyslogInt is introduced to solve this bug. [*] |
| |
| Corrected a bug where the internal prtar tzvf iority integer |
| |
| August 23, 2000 |
| |
| - Release of version 0.8.5. |
| |
| - All log4j internal output is now prepended with the string |
| "log4j: ". This makes is easier to differentiate log4j internal |
| logs from messages output by other sources. [*] |
| |
| - Sub-classes of Category class must now specify their fully |
| qualified name when constructing logging events. This allows the %C |
| conversion specifier in PatternLayout to work properly even with |
| sub-classes or wrappers of Category. [*] |
| |
| - Added the method disableDebug to BasicConfigurator. This method |
| disables all print requests of debug priority regardless its |
| category. Similar methods disableInfo, disable, disableAll and |
| enableAll have also been added. Disable type methods can be |
| overriden by setting the log4j.disableOverride system property. |
| |
| Calling BasicConfigurator.disableInfo is equivalent to the now |
| deprecated flagAsShippedCode method. [*] |
| |
| - Given the above changes, the system property |
| log4j.shippedCodeFlagOverride is no longer honored. [**] |
| |
| - It is now possible to sub-class Category. The sub-classes may |
| continue to adhere to the category hierarchy. This was a frequently |
| requested feature. [*] |
| |
| - Corrected a problem with the additivity flag being ignored in |
| categories without appenders. This bug was discovered by Anders |
| Kristensen. [*] |
| |
| - Added a method BasicConfigurator.resetConfiguration to reset the |
| log4j environment. This method should be used sparingly. [*] |
| |
| - At the initialization of the Category class, the file |
| log4j.properties will now be searched from the search path used to |
| load classes. If the file can be found, then it is fed to the |
| PropertyConfigurator.configure(java.net.URL) method. [*] |
| |
| - Failing to access system properties within the static initializer |
| of BasicConfigurator class is no longer reported as an error but as |
| a debug message. Thanks to Gilles Schlienger for reporting this |
| problem with applets. [*] |
| |
| - Corrected a bug which caused infinite loops when using conversion |
| patterns with a single element, fortunately under very rare |
| circumstances. This bug was first reported by Igor Potraev, the |
| author of log4p. It was independently reported by Joe Haberl from |
| IBM Global Services. [*] |
| |
| - Added a mechanism to lazily remove references to dead threads in |
| the NDC class. Indeed, in previous versions calling NDC.pop within |
| a thread but forgetting to call to NDC.remove before exiting (that |
| thread) resulted in a memory leak. [*] |
| |
| - Corrected a huge memory leak in SocketAppender. This leak was due |
| to the ObjectOutputStream indefinitely holding a reference for each |
| written to the stream. Thanks to Dan MacDonald for very accurately |
| describing this bug. [*] |
| |
| - The log and l7dlog methods in Category no longer ignore the shipped |
| code flag. This bug was reported by Mario Schomburg. [*] |
| |
| - Added missing NDC information to LoggingEvent.writeObject |
| method. [*] |
| |
| - Corrected handling of SocketException in SocketNode. Thanks to |
| Gerald Gutierez (ggutierez@emobiledata.com) for reporting this and |
| the previous problem. [*] |
| |
| - Phased out custom shell scripts to build java documentation and jar |
| files in favor of Jakarta's ANT. It was becoming a nuisance to keep |
| the ANT build file in sync with the custom shell scripts. [*] |
| |
| |
| May 11, 2000 |
| |
| - Release of version 0.8.4d. |
| |
| - The NT EventViewer no longer complains about missing message 4096. |
| |
| - Minor corrections in documentation. |
| |
| - Added missing icons GIFs into the distribution. |
| |
| - SocketNode now attempts to close the socket when exiting. Thanks to |
| Moses Hohman (mmhohman@rainbow.uchicago.edu) for noting this. |
| |
| - Removed the com.ibm.log4j from the javadoc directory. This seems to |
| confuse VAJ. Thanks to Steve Ashcroft for reporting this problem. |
| |
| May 5, 2000 |
| |
| - Release of version 0.8.4c. |
| |
| - As a result of the infinite loop problem (see next item), added |
| over 800 new test cases to stress-test the code in CategoryFactory |
| class where category creation occurs. [*] |
| |
| - Under certain rare circumstances the Category.getInstance method |
| entered an infinite loop. Thanks to Mario Schomburg from IBM Global |
| Services / Hannover for identifying this problem and proposing a |
| patch. [*] |
| |
| - DOMConfigurator and the log4j.dtd were out of sync on the type of |
| the priority directive. As a result, priority directives all |
| defaulted to DEBUG. Thanks to Peter (petervt@users.sourceforge.net) |
| for accurately reporting this bug. [*] |
| |
| - Minor additions to the FAQ. [*] |
| |
| - Added the NumberCruncher example showing how the NDC class can be |
| used to distinguish output from different clients. [*] |
| |
| - Added the %x conversion specifier to the TTCC_CONVERSION_PATTERN in |
| the PatternLayout class. This is consistent expected output of |
| Trivial.java example. Thanks to Jerome (schrom@users.sourceforge.net) |
| for reporting this bug. [*] |
| |
| May 3, 2000 |
| |
| - Release of version 0.8.4b. |
| |
| - The value of the additivity option would not be parsed properly by |
| the ProperytConfigurator if the line containing the option |
| contained trailing spaces. [*] |
| |
| - Release of version 0.8.4a. |
| |
| - The localized logging methods (l7dlog) omitted priority based |
| evaluation and erroneously logged all requests. [*] |
| |
| May 1, 2000 |
| |
| - Release of version 0.8.4. |
| |
| - The close method was added to the Appender interface allowing |
| appender implementations to release any resources they may have |
| allocated. [*] |
| |
| - The package naming scheme of changed from "com.ibm.log4j.*" to |
| "org.log4j.*". The new naming reflects the open source nature of |
| the project and is consistent with the URL http://www.log4j.org. [***] |
| |
| - Added internationalization support. See the newly introduced l7dlog |
| methods in Category class. [*] |
| |
| - In the FileAppender, the File option now admits variable |
| substitution. For example, if "java.home" system property is set |
| to /home/xyz and the File option is given the value |
| "%{java.home}/test.log", then File option will be interpreted as |
| "/home/xyz/test.log". |
| |
| Thanks to Avy Sharell (sharell@online.fr) for contributing this |
| feature. [*] |
| |
| - SocketAppender is now officially part of the package. It is capable |
| of sending logging events to a remote SocketNode. The SocketNode |
| logs events according to server (local) policy. For example, a |
| client can log events to a local file and also send them to a |
| remote server (a SocketNode). This server can log the event to any |
| number of files, to the console, to any number of TextPaneAppenders |
| and even re-transmit the event to another server, and so forth. |
| |
| This paradigm is common in most logging systems, e.g. Syslog and NT |
| Event Log. Many thanks to Andrew Harrison for showing a way to |
| actually implement the paradigm. [*] |
| |
| - The Category.callAppenders method now accepts a LoggingEvent |
| instead of creating one itself. This was necessary to accommodate |
| events generated at a remote client. [*] |
| |
| - LoggingEvent class changed slightly to support remote logging. The |
| category field (a Category) has been replaced by the categoryName |
| field (a String). [*] |
| |
| April 14, 2000 |
| |
| Release of version 0.8.3b |
| |
| - Corrected a bug in Category.removeAppender(String) which would |
| never remove the desired appender. Thanks to Moses Hohman for |
| reporting this bug. |
| |
| Release of version 0.8.3a |
| |
| - Corrected a bug RollingFileAppender which would throw an uncaught |
| exception in case output file could not be opened for |
| writing. Thanks to Vinay Aggarwal for signaling this problem. |
| |
| April 13, 2000 |
| |
| - Release of version 0.8.3. |
| |
| - The log4j.override key defined in BasicConfigurator has been |
| renamed to log4j.shippedCodeFlagOverride. [**] |
| |
| - The getCurrentCategories method in the Category class would not |
| return the correct value. Thanks to Timothy Potter |
| (tpotter@agency.com) for reporting this problem. [*] |
| |
| - Appenders now admit a priority threshold as an option. All requests |
| with a priority lower than the appender's threshold priority are |
| ignored by the appender. [*] |
| |
| - Integrated Christopher Taylor's DOMConfigurator parsing XML |
| configuration files. [*] |
| |
| - The jar file log4j-net.jar has been replaced by log4j-full.jar. It |
| contains DOMConfigurator.class in addition to the com.ibm.log4j.net |
| package. [**] |
| |
| - Added support for the ANT build tool. Thanks to Christopher Taylor |
| for supplying the build.xml file. ANT is available form |
| http://jakarta.apache.org. [*] |
| |
| - FileAppender's File option now accepts the values "System.out" or |
| "System.err". If one these values is suppiled in a configuration |
| file then the output is directed to the corresponding stream. |
| Moreover, the default constructor of FileAppender no longer sets |
| System.out as an output target nor does it define a default |
| layout. [*] |
| |
| - Added caller class (C), caller file name (F), caller line number |
| (L), caller method name (M) conversion specifiers to the |
| PatternLayout class. |
| |
| The category conversion specifier now takes an optional precision |
| modifier allowing the user to control the number of right most |
| components in the category name that will be printed. |
| |
| Corrected a bug occuring when the caller file name and line number |
| information were unavilable due to JIT compilation. In that case, |
| the PatternLayout would not properly use the rest of the available |
| location information. [*] |
| |
| The above enhancements and bug-fixes originate from comments by |
| Nelson Minar (nelson@monkey.org). |
| |
| March 23, 2000 |
| |
| - Release of version 0.8.2. |
| |
| - The SimpleLayout and TTCCLayout are replaced by the PatternLayout |
| in the log4j.jar file to keep its size small. These two layouts are |
| still part of the package. |
| |
| - The PatternLayout class is introduced. This new layout is |
| configurable using a conversion pattern which is parsed at |
| runtime. This allows the user to choose the output layout without |
| writing any code and only at a marginal performance cost compared |
| to the dedicated layouts such as SimpleLayout and TTCCLayout. The |
| PatternLayout also allows the user to determine minimum and maximum |
| field lengths. |
| |
| The PatternLayout was written by Jim Cakalic |
| (jim_cakalic@na.biomerieux.com). [*] |
| |
| - All internal components now use LoggingEvent instances to specifiy |
| logging information. |
| |
| - Corrected a problem with a missing variable initialization in |
| SyslogAppender. This caused NullPinterException to be thrown when |
| logging exceptions. |
| |
| Added a default constructor to SyslogAppender. The lack of this |
| constructor caused PropertyConfigurator to throw a |
| java.lang.InstantiationException when the appender type was set to |
| be SyslogAppender. |
| |
| Thanks to Yves Bossel (ybossel@opengets.cl) for accurately |
| identifying these bugs. |
| |
| Modified some other related option handling code in |
| SyslogAppender. [*] |
| |
| - Made NDC.get public access instead of default access. Thanks to |
| Y. J. Chun (monac@softonnet.com) for reporting this problem. [*] |
| |
| - PropertyConfigurator now parses the additivity option for |
| categories. [*] |
| |
| - Corrected the value of the ADDITIVITY_PREFIX constant to match the |
| documented value, that is "log4j.additivity". [**] |
| |
| - Corrected a really bad bug where System.out would be closed when |
| PropertyConfigurator.configure was called. Thanks to Christopher |
| Taylor (cstaylor@pacbell.net) for tracking and reporting this bug. [*] |
| |
| - The PropertyConfiguator now prints debug messages if the flag |
| "log4j.configDebug" is defined in the configuration |
| file. Previously, only if the system property "log4j.configDebug" |
| was set would debug messages be printed. A question by Shawn |
| Kircher (skircher@vninet.com) induced this change. [*] |
| |
| - In AbsoluteTimeDateFormat, DateTimeDateFormat and ISO8601DateFormat |
| the separator between the seconds and milliseconds has been changed |
| to comma from full stop, in order to be compliant with ISO8601's |
| preferred sign. Thanks to Jim Cakalic |
| (jim_cakalic@na.biomerieux.com) for pointing out this discrepancy |
| with the standard. [*] |
| |
| - Corrected a bug where RollingFileAppender would not work |
| properly on Windows systems. Thanks to Heinz Richter |
| (heinz.richter@ecmwf.int) for noting this problem. |
| |
| February 19, 2000 |
| |
| - Release of version 0.8.1. |
| |
| - Core classes are now independent of the format of the options |
| file. Configurable core classes implement the OptionHandler |
| interface. OptionHandlers allows configurators to learn the |
| relevant option names. The configurator feeds option values to the |
| OptionHandler which configures itself. |
| |
| As a result of these changes, the Init class has been broken down |
| to two separate classes: the BasicConfigurator and the |
| PropertiesConfigurator. [**] |
| |
| An XML configurator for 0.8.0 has been already written by |
| Christopher Taylor (cstaylor@pacbell.net). |
| |
| - Added multiple appender support per category. The appenders follow |
| the category hierarchy, i.e. a child category inherits the |
| appenders of its parents. |
| |
| - Added an assert() method to the Category class. Steven Marcus |
| (srnm@awaretechnologies.com) requested this addition. [*] |
| |
| - Atomatic stack printing is no longer supported. This was an unused |
| and unreliable feature which unnecessarily complicated the |
| code. [*] |
| |
| - log4j now emits a single warning message when no appender to write to |
| could be found. This is typically the case when the user forgets |
| to configure the log4j environment. This change was suggested by |
| Jim Cakalic (jim_cakalic@na.biomerieux.com). [*] |
| |
| - RollingFileAppender adds file roll over capability--implemented by |
| Heinz Richter (heinz.richter@ecmwf.int). [*] |
| |
| - Corrected a bug where a java.lang.NoClassDefFoundError would be |
| thrown because com.ibm.log4j.helpers.SyslogTracerPrintWriter was |
| not included in log4j.jar. Thanks to Jim Cakalic (jim_cakalic@na.biomerieux.com) |
| for signaling this bug. [*] |
| |
| February 9, 2000 |
| |
| - Release of version 0.8.0. |
| |
| - There has been an important API changes. The Log, NOPLog and ILog |
| classes have been removed. Their functionality has been migrated to |
| the Category class. [***] |
| |
| In this release, instead of writing |
| |
| ILog.debug(CAT, "Some message."); |
| |
| one will write |
| |
| CAT.debug("Some message."); |
| |
| Arndt Schoenewald <arndt@ibm23093i821.mc.schoenewald.de> observed that |
| one could use the Category objects directly for logging. |
| |
| - It is no longer possible to instantiate Category objects directly. |
| Instead, one would use the factory method |
| Category.getInstance(String name). [***] |
| |
| There category instantiation code was moved to CateogryFactory |
| class. This class has package visibility and remains hidden from |
| the user. |
| |
| This stylistic improvement was suggested by Luke Blanshard |
| (luke@quiq.com). |
| |
| - The Init class offers methods to initialize the log4j |
| environment. The Init.flagAsShippedCode method replaces the NOPLog |
| class. |
| |
| - Changes in the documentation to reflect the API changes. |
| |
| - The NDC.cloneStack and inherit methods now tolerate null-stacks. [*] |
| |
| |
| January 29, 2000 |
| |
| - Release of version 0.7.5. |
| |
| - TTCCLayout now takes a java.text.DateFormat object as a |
| parameter. The task of formatting the date is delegated to this |
| object. |
| |
| Added four classes extending the java.text.DateFormat class. These |
| are RelativeTimeDateFormat, AbsoluteTimeDateFormat, |
| DateTimeDateFormat and ISO8601DateFormat classes. |
| |
| Thanks to Arndt Schoenewald <arndt@ibm23093i821.mc.schoenewald.de> |
| for suggesting the ISO8601 date format. |
| |
| These four classes can be parametrized with a particular |
| TimeZone. The TTCCLayout class now accepts a new configuration file |
| option called "TimeZone". |
| |
| These four DateFormats are less malleable than the |
| java.text.SimpleDateFormat but they are also much faster. |
| |
| As a consequence of these changes, the setRelativeTime, |
| setDatePrinting methods in TTCCLayout have been removed along with |
| the associated configuration file options RelativeTime, |
| DatePrinting and TimePrinting. [**] |
| |
| The current code is inspired by code contributed by |
| Heinz Richter (heinz.richter@ecmwf.int). |
| |
| - The Log.emerg method has been deprecated. If you use statements of |
| EMERG priority, please use the Log.log form instead. [**] |
| |
| - Added getDepth and setMaxdepth methods to the NDC class. This makes |
| it easier to manage the nested context depth especially when |
| callees push but forget to pop. |
| |
| - Moved the documentation in com/ibm/log4j/package.html to |
| com/ibm/log4j/overview.html. Many users were failing to read the |
| com/ibm/log4j/package.html description due to the unfortunate |
| layout of the text. Hopefully more people will read the package |
| overview in its present location. |
| |
| - Added the com.ibm.log4j.net package for doing remote logging using |
| TCP sockets. This is still experimental code. |
| |
| - Added new debug, .., emerg methods that do not require a category |
| parameter. They assume the "root" category, that is the decision to |
| whether print or not is made by comparing the statement's priority |
| with the default priority. [*] |
| |
| January 21, 2000 |
| |
| - Release of version 0.7.4. |
| |
| - Added a new ILog.init method accepting an Appender and a |
| configuration file as parameters. |
| |
| - FileAppender's setWriter and setFile methods where not instantiating |
| a new tracer. This caused stack traces to be lost! SyslogAppender |
| had a similar problem. [*] |
| |
| - The FileAppender and SyslogAppender where not calling the layout's |
| readConfig method to set layout specific options. Thanks to Heinz |
| Richter (heinz.richter@ecmwf.int) for reporting this bug. [*] |
| |
| - Corrected a bug in Log.log() method where the appender was always |
| called with Priority.DEBUG. Thanks to Oliver Boehm |
| (Oliver.Boehm@abaxx.de) for reporting this bug. [*] |
| |
| January 14, 2000 |
| |
| - Release of version 0.7.3. |
| |
| - Added Syslog compatibility. One can now choose (at runtime) between |
| remote syslog logging or file logging. [*] |
| |
| Syslog logging performance, although not appalling, is significantly |
| slower than file logging. |
| |
| - Priority class was enriched with the previously missing priorities |
| NOTICE, ALERT and CRIT. The internal constants were also aligned with |
| the syslog counterparts. [*] |
| |
| - Added the Log.log method to support the new priorities. [*] |
| |
| - TracerPrintWriter is now an independent class instead of being a |
| nested top-level class in Tracer. [*] |
| |
| - A number of writers, namely the SyslogWriter, SyslogQuietWriter, |
| SyslogTracerPrintWriter, were added to the helper package. [*] |
| |
| - Log.force method was removed. The various Appender.doAppend |
| implementations take over its functionality. [*] |
| |
| - FileAppender and SyslogAppender now use QuietWriter. QuietWriter is |
| a FilterWriter which hides exceptions and instead emits a single |
| warning message to System.err. [*] |
| |
| - The layout is now an initialization parameter to the appender |
| type. Previously, the layout and the appender where independent |
| parameters to the Log constructor. [**] |
| |
| - Many small improvements and corrections in the documentation. |
| Syslog related documentation remains sparse. |
| |
| - ILog.init() and ILog.init(String configFile) have been changed to |
| call ILog.init(,,,) with "com.ibm.log4j.Log.class" as the first |
| parameter. This makes it easier for people to get familiar with log4j. [**] |
| |
| - Added missing files to the make directory. These files are useful |
| for those wishing to use the log4j make environment. Thanks to "Lee |
| Hall" <LHall@JavaFoundry.com> for reporting this omission. [*] |
| |
| Until recently the make environment failed to compile RMI stubs in |
| a single run. This nagging problem has been corrected thanks to |
| help from Thomas Eirich (IBM Zurich Research Lab). |
| |
| January 4, 2000 |
| |
| - Release of version 0.7.2. |
| |
| - Some users have been rightly complaining about the verbosity |
| TTCCLayout's date output. The full date output is now shortened to |
| "dd MMM YYYY HH:mm:ss.SSS" for example, "06 Nov 1994 08:49:37.459" |
| In addition, users may now choose to print only time information, |
| as in "08:49:37.459". [*] |
| |
| - The package now uses Writer instead of OutputStream as its output |
| target. This makes the log4j code smaller and easier to |
| understand at the cost of a slight performance degradation. As a |
| result of this change a few method names in FileAppender class were |
| changed. [**] |
| |
| - Preliminary experiments with SyslogAppedner and SyslogLayout show |
| that syslog compatibility is not far away. The difficultly is |
| adding syslog compatibility without making radical changes to the |
| current log4j architecture. |
| |
| - Corrected a bug in the NOPLog.createInstance method which always |
| created a Log singleton even if the system property "log4j.logType" |
| was set to NOPLog. Thanks to Robert Gottofrey |
| (Robert.Gottofrey@wdr.com) for reporting this bug and the |
| associated test case. |
| |
| - Removed the inconsistent "Layout" configuration option in |
| Log.readConfig(). This change should be transparent to most |
| users. [*/**] |
| |
| December 20, 1999 |
| |
| - Release of version 0.7.1. |
| |
| - The LogCreationManager class has been removed. Its functionality |
| has been transfered to the createInstance and getInstance methods |
| in the Log and NOPLog classes. The new way of creating instances is |
| both simpler and less error prone although just as flexible. [**] |
| |
| As a result of these changes, the init family of methods in the |
| ILog class have been adjusted to the new way of creating the log |
| singleton. |
| |
| - The Appender interface has been introduced. The method of writing a |
| log statement into an output stream can now be varied by using a |
| different Appender. The new FileAppender offers the same |
| functionality that was previously part of the Log class. [**] |
| |
| - Changed the time format used in TTCCLayout to be of the form "Day, |
| dd MMM YYYY HH:mm:ss.SSS GMT" for example, "Sun, 06 Nov 1994 |
| 22:49:37.459 GMT". This format is almost the same as the format |
| specified in RFC 1123 and also the format recommended in RFC |
| 2616. The only difference is the additional milliseconds |
| information. [*] |
| |
| - The layout specific options were not read from the configuration |
| file due to a missing instruction. Many thanks to Vikram Sridharan |
| (Vikram.Sridharan@alysis.com) to patiently pointing out this |
| omission to an unbelieving maintainer. [*] |
| |
| December 16, 1999 |
| |
| - Release of version 0.7.0. |
| |
| - Version 0.7.0 and above will be distributed under the IBM Public |
| License (IPL). The IPL is an approved open source license (see |
| http://www.opensource.org/licenses/ for a list). It grants similar |
| rights to the previous ALPHAWORKS license agreement, in particular, |
| the right to redistribute and to modify the package. |
| |
| - The Log class can now be parameterized with a Layout object. |
| Layouts determine the format of what is printed, where as the Log |
| class decides when to print and to where. [**] |
| |
| As a result of this modularization, the CGULog and NOPCGULog |
| classes no longer exists. CGULog class has been replaced with the |
| TTCCLayout (Time Thread Context Category). This should make it |
| easier to create new log output formats. |
| |
| Some time in the near future, the Log class will be further broken |
| down to allow different strategies for writing to output streams. |
| |
| - Renamed com.ibm.util.log hierarchy to to com.ibm.log4j. I wanted to |
| do this for some time. I feel release 0.7.0 was the last |
| opportunity to do so. I am sorry for the the trouble caused by this |
| change. [**/***] |
| |
| - New NDC class. This class implements nested diagnostic contexts as |
| suggested by Neil Harrison in the article "Patterns for Logging |
| Diagnostic Messages" part of the book "Pattern Languages of Program |
| Design 3" edited by Martin et al. Nested diagnostic contexts is a |
| nifty feature that was missing up to now. [*] |
| |
| The StressNDC test class seems to break JDK 1.2.2 beta on AIX. On |
| Linux and NT using sun's JDK 1.2.2 it seem to work OK. In any case, |
| tests done with StressNDC and associated perl script seem to |
| indicate that the NDC class is bug-free. |
| |
| - Corrected a date formatting bug in CGULog class where on some |
| environments the wrong month was printed. Thanks to Christopher |
| Williams (Christopher_Williams@mail.northgrum.com) for signaling |
| this bug. Also changed the month format from a number to a three |
| letter abbreviation such as "Jan", "Feb", ..., "Dec". The new |
| format is unambiguous regardless of local date format. [*] |
| |
| December 8, 1999 |
| |
| - Release of version 0.6.2. |
| |
| - Clearer documentation with still much room for improvement. |
| |
| - Corrected a bug in the Tracer class which always used the Unix line |
| separator instead of the system specific separator. Thanks to |
| Vikram Sridharan (Vikram.Sridharan@alysis.com) for singaling this |
| bug. [*] |
| |
| - Corrected a runaway comment which gulped the CGULog.readConfig |
| method. [*] |
| |
| - Added the init family of methods to the ILog class to ease the |
| setup of a basic logging environment. Thanks to Mark Donszelmann |
| (Mark.Donszelmann@cern.ch) for this enhancement. [*] |
| |
| - Just an hour after releasing version 0.6.1 detected and corrected a |
| bug where the Tracer class would correctly print Exception stack |
| trace but not the type of the Exception. Replaced the |
| distribution on www.zurich.ibm.com without changing the version |
| number. I hope nobody is using the intermediary (and buggy) release |
| of 0.6.1. [*] |
| |
| November 16, 1999 |
| |
| - Release of log4j version 0.6.1. |
| |
| - Better documentation with still much room for improvement. |
| |
| - For consistence sake, added setDefaultPriority and |
| getDefaultPriority methods to the Category class and deprecated |
| setDefaultPriority in the Log.class. [**] |
| |
| - Corrected a major bug where if two categories were homonyms the |
| second instance would not be properly initialized. |
| |
| - Increased the speed of Exception logging from about 4000 |
| microseconds to about 1000. It seems that for some people Exception |
| logging is performance critical. Improved implementation is a |
| variant of Nocolai's (XNH@crisplant.com) implementation. [*] |
| |
| November 9, 1999 |
| |
| - Release of log4j 0.6.0 with incomplete documentation. |
| |
| - Added a stress test program to debug the new Category class. It |
| turns out that the test program was as hard to get right as the |
| Category class. Given the favorable results of the stress test I am |
| quite confident that the new class is now bug free. This assumption |
| has been proven to be wrong. See above. |
| |
| - Created a new class called Category to manipulate categories |
| instead of plain Strings. The new class is just as easy to use. |
| However, the evaluation of whether to log or not to log is at least |
| 10 times faster. The NOP class performance remain unaffected by the |
| change. (You can't improve on the performance of an empty function |
| call.) |
| |
| Many thanks to Alex Blewitt "Alex.Blewitt@ioshq.com" for his |
| valuable comments. He was the first to observe that finding Strings |
| in a hash table was an expensive operation. |
| |
| This change will require some recoding on your part. See the FAQ |
| for more details. [***] |
| |
| - Modified the force in Log and CGULog method to use a byte[] buffer |
| instead of a StringBuffer. The old code was clearer but the new one |
| is at least 25% faster. [*] |
| |
| - Added regression testing. |
| |
| - We now enforce a policy where the OutputStream set by |
| setOutputStream is a user managed resource whereas the OutputStream |
| opened using setLogFile is the Log class' responsibility. |
| |
| The setLogFile method now closes any previous OutputStream if only |
| if opened through setLogFile. If the previous OutputStream was |
| opened by the user and set through setOutputStream the previous |
| OutputStream is untouched. |
| |
| Similarly, setOutputStream will close any previous OutputStream if |
| and only if it was opened using setLogFile. |
| |
| - Added a new method logOutputStreamExists to the Log class allowing |
| the programmer to check if there is already an opened stream before |
| trying to set a new one. A stream can be opened as a byproduct of |
| reading the configuration file. |
| |
| - Changed the behavior of the (private) Log.Append method in case of |
| failure to write to the OutputStream. |
| |
| Previously, in case of failure, we reverted to System.err. Now, we |
| emit a warning message and discard all future log messages. The |
| new behavior is consistent with our current unreliable logging |
| semantics. The change prevents an otherwise functional program |
| from failing because the terminal is flooded with logging messages. |
| |
| - Renamed the iLog to ILog to remain consistent with our class naming |
| scheme. The initial intention was to add ILog and deprecate |
| iLog. However, I am running CVS on a fat16 partition, causing |
| serious problems when files differ only in case. |
| |
| - Corrected a bug where the LogFileName was not remembered. Thanks to |
| Jens for signaling this bug. |
| |
| October 28, 1999 |
| |
| - Release of log4j v0.5a |
| |
| - Now the programmer can choose to truncate the log file instead of |
| always appending to it. This functionality was first requested and |
| intially implemented by "Jens Uwe Pipka" jens.pipka@gmx.de. [*] |
| |
| - setLogFile now opens the requested file instead of having the |
| Append function open it later. Cleaned up some related code in the |
| Append function. Although nobody has requested it, there is still |
| no method to close the log file. This is harder to implement |
| reliably than it sounds. [*] |
| |
| - Simplified setLogOutputStream so that it does no longer return the |
| previously set OutputStream. [*] |
| |
| October 27, 1999 |
| |
| - Released log4j v0.5 |
| |
| - Joe Walker (joe@eireneh.com) observed that the |
| LogCreationManager.getSingleton mechanism was cumbersome. There is |
| now a new class iLog (indirect Log) which hides the need to call |
| getSingleton. Performance testing on my 233Mhz Thinkpad shows that |
| this indirection has small performance impact on non-logged calls |
| in the order of 40 nanoseconds. The impact on logged calls is |
| negligible. [*] |
| |
| - Added a jar file to the distribution. The jar file contains only |
| the files you would need to use log but not other classes needed |
| for testing nor examples. |
| |
| - Corrected a bug where CGUNOPLog was not integrated to the Makefile. |
| |
| - Added new public methods isDebugEnabled and isInfoEnabled to allow |
| programmers to check whether a debug/info statement will be logged |
| without incurring the cost of message parameter construction. This |
| addition was suggested by Luke Blanshard Luke@quiq.com. [*] |
| |
| - Renamed the private method evaluate to isEnabled. Also made it |
| final with no apparent speed gains. In addition, made the |
| Log.force method public. [*] |
| |
| - New syntactic sugar debug, ..., emerg, methods to log objects. [*] |
| |
| - Modified the interface to deal with Throwables and not just |
| Exceptions. My thanks to Luke Blanshard for signaling this "bug". [*] |
| |
| - Added more tests to the LogPerformance class. In particular, to |
| test the influence of indirect debug calls. |
| |
| - Added a "make" mini-tutorial for those who want to modify the code. |
| |
| - License updated to standard alphaWorks license allowing |
| modifications to source code. However, this license explicitly |
| requires that modifications be communicated back to alphaWorks. |
| |
| October 15, 1999 |
| |
| - Initial availability on alphaWorks. |
| |
| Refer to the FAQ for the lineage of the package. |
| |
| |