Date: Tue, 09 Jan 2001 04:24:41 +0100 From: Ceki Gulcu firstname.lastname@example.org To: email@example.com Subject: log4j version 1.0 Greetings everyone, I am pleased to announce log4j version 1.0, the 20th public release of log4j and the first under the Apache banner. For those unfamiliar with the name, log4j is a popular logging package written in Java. log4j allows you to log to a file, a java.io.Writer, a remote server, NT Event Log or a syslog daemon. The package is designed so that log statements can remain in shipped code without incurring a high performance cost. One distinctive feature of log4j is the notion of hierarchical categories. Using categories, it is possible to select (at runtime) which log statements are output at arbitrary granularity. Users can choose to implement their own log formats and output strategies. This release brings a number of new features along with bug fixes. The most important change is that log4j is now part of the Jakarta project of the Apache Software Foundation. Consequently, the package hierarchy now starts at org.apache.log4j instead of org.log4j. I have also taken advantage of this release to drop the EMERG priority and replace it with FATAL which is more widely understood. This version fixes all known bugs. It also adds a number of features such as the SMTPAppender, HTMLLayout, JMSAppender and ObjectRenderers. The PropertyConfigurator has been enhanced to support variable substitution for all option values, support for specifying the category factory and object renderers. Just as importantly, both the DOMConfigurator and the PropertyConfigurator can be used to configure any given hierarchy not just the default one. The HISTORY file reads: [*] 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.
I am pleased to announce log4j version 1.0, the 20th public release of log4j and the first under the Apache banner.
- Release of version 1.0 (the 20th public release) - Package hierarchy now starts at org.apache.log4j. [***] - Added the fatal() family of methods to the Category class. Moreoever, 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 mininal and few users should suffer from these changes. [**/***] - Removed the methods setRootPriority, getRootPriority as these methods were redundant and had been previously deprecated. [**] - Dropped the DOM Level 2 dependency in DOMConfigurator. This makes log4j XML configurable using Sun's parser or Apache's Xerces. [*] - Enhanced the PropertyConfigurator and DOMConfigurator to support customization of independent Hierarchies. 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 option *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 perfectly backward compatible. [*] - 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. [*] - Addeed 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. [*] Best regards, Ceki Gulcu
This article was originally published on Tuesday Jan 9th 2001