The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
##################################################
Revision history for Log::Log4perl
##################################################

0.16 07/10/2002
    * Updated documentation for CPAN release
    * Applied Kevin's patch to limit it to one Log::Dispatcher

0.15 07/10/2002
    * There were name conflicts in Log::Dispatch, because we used *one*
      Log::Dispatch object for the *all* loggers in the Log::Log4perl
      universe (it still worked because we were using log_to() for
      Log::Dispatch to send messages to specific appenders only). Now
      every logger has its own Log::Dispatch object. Logger.pm doesn't
      call Kevin's anti-dupe logic anymore -- is this ok? Maybe there's
      some leftovers which need to be cleaned up.
    * Kevin fixed t/014ConfErrs.t after last night's Appender.pm change

0.14 07/09/2002
    * (!) Added new class Log::Log4perl::Appender as a wrapper around
      Log::Dispatch::*. Layouts are no longer attached to the loggers,
      but to the appenders instead. $app->layout($layout) sets the
      layout. $logger->add_appender($app) is the new syntax to add
      an appender to a logger. The $logger->layout method is gone
      for that reason.
    * Added documentation on categories
    * Added documentation on Log::Log4perl::Appender,
      Log::Log4perl::Layout::SimpleLayout,
      Log::Log4perl::Layout::PatternLayout.

0.13 07/09/2002
    * in the config files, 'debug' is not a level, 'DEBUG' is
    * expanded the layouts so that we can add subclassess, added
      SimpleLayout, note that api usage changes
      -$logger->layout('buf',"The message is here: %m");
      +$logger->layout(new
      Log::Log4perl::Layout::PatternLayout('buf',"The message is
      here: %m"));
    * did benchmarks, see doc/benchmark*, t/013Bench.t
    * further tweaked errors for bad configuration, added a test for those

0.12 07/08/2002
    * Log::Log4perl::Logger->get_logger now accessible via 
      Log::Log4perl->get_logger()
    * Log::Log4perl::Config->init now accessible via 
      Log::Log4perl->init()
    * Adapted test cases to new shortcuts
    * Constrained some files to 80 chars width
    * Added test case t/009Deuce.t for two appenders in one category
      via the config file
    * Changed default layout in case there's none defined (SimpleLayout)
    * Implemented dictatory date format for %d: yyyy/mm/dd hh:mm:ss

0.11 07/07/2002
    * added documentation to Log/Log4perl.pm
    * added is_debug/is_error/is_info etc. functions to Logger.pm,
      test cases to t/002Logger.t

0.10 07/05/2002
    * %p should return level name of the calling function, so 
      $logger->warn('bad thing!!') should print 'WARN - bad thing'
      even if the category is set to debug, so took level_str out of
      Logger.pm (kg)

0.09 07/03/2002
    * %p should return level name, not number, adding level_str to Logger.pm (kg)
    * Level.pm - discriminating: priorities are 1-4, levels are
      'info','debug',etc (kg)

0.08  07/03/2002
    * Non-root loggers are working now off the config file

0.07  07/02/2002
    * Updated documentation
    * removed "diagnostics"

0.06  07/01/2002
    * Bug discovered by Kevin Goess <cpan@goess.org>, revealed
      in 004-Config.t: Wrong layout used if Appender is inherited.
      Fixed.
    * Changed Log::Dispatch::Buffer to keep track of the
      object population -- so we can easily reference them
      in the Log::Log4perl test cases. Got rid of get_buffer().
    * Added a reset() method to Log::Log4perl and Log::Log4perl::Logger
      for easier testing. It resets all persistent loggers to 
      the inital state.
    * Added documentation

0.05  06/30/2002
    * Fixed bug with mapped priorities between java/Log::Dispatch
    * Java/Perl integration with conf file

0.04  06/30/2002
    * Layout tests
    * %r to layout
    * Added lib4j configuration file stuff and tests

0.03  06/30/2002
    * Layout
    * Curly braces in Layout first ops

0.02  06/30/2002
    * Created Logger and test cases

0.01  06/22/2002
    * Where it all began

TODO:
##################################################
    * I wonder if it might not be a mistake to have the base level be
      '0', might be safer to make it '1', less chance of those
      false-but-is-defined errors I think that's what log4j uses
    * Should we canonicalize on a level is a string and a priority is an
      int? might make maintenance easier

Kevin:
##################################################
    * I think we should not install Log::Dispatch::Buffer, we only use
      it for our test cases, we shouldn't infringe on the Log::Dispatch
      namespace, should we?
    * test cases should use platform independend directory separator
      (Mac's pre-OSX ':'?) DONE need level validation on Logger::level()
      DONE Create new module negotiating between Java-style config files
      and perl-style appenders
    * Module for reading XML-style config files
    * Please use 80 chars max line width
DONE (is gone) redo level_str() hack
DONE (Dispatch singleton) question - are appenders created just once if
they're reused in the config file?

Mike:
##################################################
    * Documentation on Layout class changes
    * %% bug in Layout.pm -- write test case
    * Documentation of Log::Log4perl::Logger and Log::Log4perl::Config
    * Tune performance of level() lookups (Mike, check out the log4j
      statement: "As a side note, let me mention that in log4j child
      loggers link only to their existing ancestors. In particular, the
      logger named com.foo.Bar is linked directly to the root logger,
      thereby circumventing the unused com or com.foo loggers. This
      significantly increases performance and reduces log4j's memory
      footprint. "
    * Layout.pm: 'd' (partially implemented), 't', 'x', 'X'
    * Signal to re-read the conf file.
    * Additivity flag -- set/get as API and in cfg file
    * README tests (Pod::Tests or something)
    * Thread safety
    * Pass the config file in as a string or a file handle
    * Just had a wild idea: Could we possibly utilize the compiler
      frontend to eliminate log statements that are not going to be
      triggered? This would be a HUGE performance increase!
DONE Log::Dispatch wrapper for perl modules just like JavaMap?
DONE Warning in testcase 002
DONE Added Log::Log4perl::Appender class to wrap Log::Dispatch::*
DONE Log::Dispatch::Buffer: Delete from MANIFEST
DONE Log::Log4perl->init()
DONE Several appenders in one config line: log4j.rootLogger=debug, stdout, R
DONE Define default if there's no layout:
  http://jakarta.apache.org/log4j/docs/api/org/apache/log4j/SimpleLayout.html

##################################################