##################################################
Revision history for Log::Log4perl
##################################################
0.20 7/23/2002
* Strip trailing spaces in config file
* Accept line continuations in properties file
* Refactored Logger.pm for speed, defined the logging behavior when
the logger is created, not when a message is logged
* Fixing test suites so that SimpleFormat newline is accounted for
* Fixed a bug with root inheritance where the category name wasn't coming
through
* added init_and_watch
0.19 07/16/2002
* Added Log::Log4perl::TestBuffer back in the distribution, otherwise
regression test suite would fail.
0.18 07/16/2002
* Failed attempt to fix the Log::Dispatch::Buffer problem.
0.17 07/11/2002
* Updated documentation according to Dave Rolsky's suggestions
* Lots of other documentation fixes
* Fixed bug in renderer, %M was displayed as the logger function
bumped up the level by 1
* Fixed %% bug
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::Log4perl::TestBuffer 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
* permission problems, init() creates the files, maybe read later by
different uid, no way to set umask?
* what happens when init() is called twice?
Kevin:
##################################################
* Dave Rolsky says: A couple other things: The JavaMap docs mention that SocketAppender
has no Log::Dispatch equivalent. You could create an IO::Socket object and pass
it to Log::Dispatch::Handle.
* I think we should not install Log::Log4perl::TestBuffer, 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
* revisit CategoryFactory idea, give the user opportunity to override
log levels with their own?
OK 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::Log4perl::TestBuffer: 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
##################################################