ChangeLog
Revision 1.2 (?)
  • Add LoggerListener support. (PD)

  • Add support for any arbitrary logger wrapper class. (SC)

  • Add support for the LF5 GUI logging target. (SW)

  • Remove the circular dependency on Avalon Framework. (BL)

  • Ensure all source files contain the blessed version of the license. (BL)

  • Makes sure target arrays contain no nulls and a few other cleanups. (PD)

Revision 1.1 (September 1, 2002)
  • Added SMTPOutputLogTarget to enable logging to email addresses. (MC)

  • Several bug fixes. Submitted By: David Gray (EP)

  • Changed the default log format so that the log entry times are formatted using a human friendly format. (LM)

  • Rotate before write. (EP)

  • Added RotateStrategyByDate to enable daily, weekly, and monthly rotation of log files. Submitted By: Bernhard Huber (EP)

Revision 1.0.1 (January 31, 2001)
  • Fixed spelling in the documentation files. (PD)

  • Fix javadoc warnings from "@returns" tags used instead of "@return". (PD)

  • added new constructors to produce better readable file names in the File Strategy classes. (GP)

  • Added fixes to AsyncLogTarget: Make sure that the LogTarget delegated to cannot disrupt thread by throwing an exception. Remove uneeded step from documentation. (PD)

  • Many improvements to PatternFormatter including: Made it possible to specify the format of date in the auxilliary parameter of the format for dates. Cached the date and DateFormatter objects so that they are not created every time a LogEvent is formatted. Added a getRTime() method to format relative time. Just delegates to getTime at the moment for backwards compatability. (PD)

  • Made sure that additivity is transitive (in Logger) - even when you only inherit your loggers from your parent. (PD)

  • Added isPriorityEnabled() method to Logger to determine if specified priority is enabled. (PD)

  • Various build improvements. (LM)

Revision 1.0 (October 26, 2001)
  • Remove references to Testlet (since we migrated to JUnit). (BL)

  • Fixed EOL issues in test so that line formatting works across all systems (rather than just unix). (PD)

  • Added in a clearer javadoc class description in PatternFormatter. (PD)

  • Made Hierarchy setDefaultLogTargets() which is like setDefaultLogTarget() but accepts an array. (PD)

  • Use default log format when use default constructor in AvalonFormatter comaptibility. (EP)

  • Various build improvements. (BL)

Revision 1.0b5 (September 17, 2001)
  • Updated unit tests to use JUnit rather than Testlet. (EP)

  • Deprecate OutputStreamLogger and replace with LoggerOutputStream. (PD)

  • Added JMS support for JMS Log messages. (PD)

  • Added file rotation strategies, including patches from Bernhard Huber and Carsten Ziegeler (PD)

  • Implemented a database log target. (PD)

  • Used synchronization to make targets more threads safe. (PD)

  • Fix masquerading attack security hole. (PD)

  • Incorporate additivity feature similar to Log4j. This is needed as getLogTargets() is deprecated for security reasons (allowed masq) and yet this functionality is still needed. Added unit tests to verify it behaves as expected. (PD)

  • Made LogEvent serializable. The format may change slightly before release. (PD)

  • Passed Hierarchy object as ErrorHandler. Hierarchy delegates to another ErrorHandler which allows ErrorHandler to be pluggable without resetting all ErrorHandlers each time an ErrorHandler is changed. (PD)

  • Incorporated delegation of Error Handling to ErrorHandler. Logging components receive an ErrorHandler by implementing ErrorAware. Added AbstractTarget that provided basic functionality of open/close and error handling almost always needed by LogTargets. Refactored all existing targets to work with this method. (PD)

  • Made ContextMap serializable. After deserializing it defaults to readonly. This assumes that Context only contains serializable elements. (PD)

  • Update build process to the proposed standard. (BL)

  • Update build process to notify the user of missing jars, and perform many other checks (PD)

Revision 1.0b4 (August 6, 2001)
  • Added ContextMap, updated whitepaper to describe the feature. Deprecated ContextStack in the process as it encouraged bad practices and has been supersceded by ContextMap. (PD)

  • Added ExtendedPatternFormatter to allow log messages to be formatted with caller method and thread ids. (PD)

  • Fixed bug in OutputStreamLogger so that it does not append a '\n' at end of stream. (PD)

  • Added Target SafeFileTarget that opens file and then closes file each time a log entry is written. (PD)

  • Added basic unit tests for the logkit formatters, stream and file output targets, priority and logTarget inheritance and utility code. (PD)

  • Rework existing logtargets so that they are thread safe, perform better error management and improve usability. Old style targets have been deprecated as have any "unsafe" methods. (PD)

  • Added extra constructor to PatternFormatter so that format string is specified at construction time. Deprecated no arguements constructor and setFormat() method. (PD)

  • Added StackIntrospector class that is amalgamation of utility code supplied by Stuart Roebuck (stuart.roebuck@adolos.co.uk) and Sylvain Wallez (sylvain.wallez@anyware-tech.com). (PD)

  • Right justified fields are cropped on the left. ie [%-20.20{context}] changes from outputting "[org.apache.log.forma]" to "[mat.PatternFormatter]". (SR)

  • Made Hierarchy.log() deal gracefully with a null exception parameter. (PD)

  • Added stylesheet to convert Stylebook markup to DocBook markup. (BL)

  • Deprecated AvalonFormatter and created a new Formatter inside Avalon project. (BL)

  • Changed the documentation build process to use Cocoon to build the site. (BL)

  • Deprecated FilterTarget it was rarely (never?) used and offers only minor advantages over directly using sub-classes. (PD)

  • Added XMLFormatter to enable writing logs in XML format. (PD)

  • Made priority serializable. (PD)

Revision 1.0b3 (July 22, 2001)
  • Added setPriority() method to Priority filter to allow modification of filter properties at runtime. (PD)

  • Deprecated Logger.getCategory as it violates the Inversion Of Control principle. (PD)

  • Enhanced FileOutputLogTarget to enable it to be used to append to a file, rather than overwrite. (PD)

Revision 1.0b2 (June 4, 2001)
  • Beta 2 release. (BL)

  • Update documentation so that you can get started easily. (PD)

  • Fixed logical error in PriorityFilter. The code _used_ to allow anything up to a priority level (i.e. if priority was set to ERROR, then it would allow DEBUG, INFO, and WARN). Now it operates correctly (i.e. if priority was set to ERROR, then it will allow ERROR and FATAL_ERROR). (BL)

Revision 1.0b1 (May 11, 2001)
  • First public release. (PD)

  • Renamed LogEntry to LogEvent. This was done as Entry was a misnomer. It was a misnomer as each Entry could in fact never be placed in logs or placed in multiple logs. It is up to the LogTargets how to treat the event and whether or not to convert the event into an entry. Updated all interfaces that referred to entry to refer to event. (PD)

  • Added getCurrentContextStack() to ContextStack class and made the method with same name in LogKit delegate to ContextStack.getCurrentContextStack() (PD)

  • Added getDefaultLogEngine() to LogEngine and made the method with same name in LogKit delegate to LogEngine.getDefaultLogEngine() (PD)

  • Made Priority a class in place of Priority.Enum class. Converted constants to use this interface. Added getPriorityForName() method and made LogKit method of same name delegate to it. (PD)

  • Made ContextStack contain objects other than strings. (PD)

  • Made each hierarchy extend from a root Logger about category "". Also put default log target into this Logger. Thus no longer *need* getDefaultLogTarget method in LogEngine/LogKit - thus it was removed. (PD)

  • Made each logger cache a version of logTargets. Combine this with the root logger containing default log target means that you no longer have to recursively check parents to get LogTargets or check the engine. This is considerably faster. (PD)

  • Made "category" behave identically to logTarget inheritance wise. Each logger caches priority when it is inherited from parents. This is slightly faster than old version. (PD)

  • Merged "Category" object into Logger. This required adding getPriority to Logger and making Logger.getCategory() return name of category rather than Category object. (PD)

  • Protected logger manipulation by synchronized sections (PD)

  • Made ServletOutputTarget not filter - leave that to a separate FilterTarget (PD)

  • Moved instance variables to private instead of protected were appopriate. This allows to decrease maintanence cost just in case someone inherits from one of our classes. (PD)

  • Removed the hashtable that stored log targets as it can be easily done by users of LogKit and wasn't serving any real purpose. (PD)

  • Renamed LogEngine to Hierarchy to match Log4j and allow easy cross migration (PD)