1##################################################
2 Revision history for Log::Log4perl
3##################################################
4
51.40 (2012/11/30)
6   *    (ms) Denis Ibaev added support for DBI appender attributes.
7   *    (ms) Chris Weyl put in a workaround for a DBD::CSV bug that
8             tripped our test suite.
9   *    (ms) Tim Bunce provided a patch using Carp::confess() instead of die()
10             on the "Root Logger not initialized" message which pops up
11             during global construction to make it easier to find the 
12             offending code.
13   *    (ms) Cygwin masks MSWin32-ishness by setting $^O to "cygwin" and not
14             to "Win32". Modified check to catch both.
15   *    (ms) Fixed unescaped brace in regex that perl 5.17.4 was complaining 
16             about.
17
181.39 (2012/10/27)
19   *    (ms) Markus Benning reported that logcroak/confess/die stringify
20             their arguments, which gets in the way when throwing data
21             structures as exceptions. Added flag $STRINGIFY_DIE_MESSAGE.
22   *    (ms) [rt.cpan.org #80086] David Morel pointed out misleading 
23             documentation in the Limiter composite appender. Fixed docs
24             and added C<appender_method_on_flush> parameter to support
25             appender flush calls by the limiter.
26   *    (ms) [rt.cpan.org #79960] Fabrice Gabolde asked for %X{x} to be 
27             interpolated as NULL for the database appender if its value is 
28             undef. The DBI appender now inits PatternLayout with the 
29             undef_column_name parameter set to undef (defaults to "[undef]").
30   *    (ms) Updated license/copyright/author sections in all files using 
31             licensizer and .licensizer.yml.
32   *    (ms) Skipped log file recreation test on Win32 as it won't remove
33             busy files anyway.
34
351.38 (2012/09/23)
36   *    (ms) Bob Kleemann reported that logdie() in wrapper classes
37             printed incorrect caller lines. Fixed by adding 
38             caller_depth_offset() utility to Log4perl.pm.
39   *    (ms) Meir Guttman reported a use case for logging messages
40             with dynamic levels on log4perl-devel@lists.sourceforge.net.
41             Added to manual page.
42   *    (ms) Implemented suggestion by Neil Hooey to check for and report
43             undefined message elements before they're assembled in Appender.pm
44             and a warning is issued without a proper code location:
45             https://github.com/mschilli/log4perl/issues/15
46   *    (ms) [rt.cpan.org #78734] Added spell check on filter parameter names
47
481.37 (2012/05/30)
49   *    (ms) [rt.cpan.org #75655] Meir Guttman found the module to make
50             Log::Log4perl::Appender::ScreenColoredLevels work on Win32,
51             updated docs.
52   *    (ms) [rt.cpan.org #76827] UTF-8 encoded configuration files are
53             now supported (see Log::Log4perl::Config).
54   *    (ms) [rt.cpan.org #77501] Unescaped left brace in regex is deprecated
55             with perl 5.17. Times we live in. 
56
571.36 (2012/02/21)
58   *    (ms) [rt.cpan.org #74833] Reini Urban fixed "defined @array" for
59             perl 5.16
60   *    (ms) [rt.cpan.org #74836] Cope with Carp's questionable decision to
61             add a trailing dot to its messages.
62
631.35 (2012/01/03)
64   *    (ms) [rt.cpan.org #73462] Changed logwarn/logcluck/logcarp/error_warn 
65             to warn() unconditionally and send the message to log4perl which
66             will log it only if the log level conditions are met.
67   *    (ms) [rt.cpan.org #73598] Gerda Shank reported test suite problems
68             with DBD::CSV-0.26. Bumped up to DBD::CSV-0.33 if installed.
69
701.34 (2011/11/04)
71   *    (ms) InternalDebug now replaces all instances of INTERNAL_DEBUG,
72             not just the first one.
73   *    (ms) Added test case for get_logger() with a ref() on the actual
74             object instead of on a static category. Updated docs.
75   *    (ms) %d{e} in PatternLayout now returns epoch seconds
76   *    (ms) [RT 72056] Messages blocked by an appender threshold are no
77             longer passed on to the L4p::Appender::Buffer as undefined
78             entries.
79
801.33 (2011/05/31)
81   *    (ms) [RT 67132] Applied patch by Darin McBride to allow for
82             empty syswrite messages in the file appender.
83   *    (ms) [RT 68105] Fixed init-hash handling of subroutine references,
84             reported by Frew Schmidt.
85   *    (ms) Mike Schwern noticed confusing DESTROY calls to clean up loggers 
86             and appenders (http://stackoverflow.com/questions/5914088 and
87             https://github.com/mschilli/log4perl/issues/7), so I put on my 
88             hazmat suit and cleaned it up. Now perl's garbage collector takes 
89             care of disposing of logger and appender carcasses.
90   *    (ms) Added Log::Log4perl->remove_logger($logger) to remove a logger
91             from the system.
92
931.32 (2011/02/26)
94   *    (ms) Fixed %T caller_depth with wrapper_register(), reported
95             by David Christensen.
96   *    (ms) [RT 63053] Fixed for qw() {} deprecated (Todd Rinaldo)
97   *    (ms) [RT 62674] Fixed call to deprecated form of UNIVERSAL::can (Karen
98             Etheridge).
99   *    (ms) [RT 62896] Log::Log4perl::Appender::ScreenColoredLevels now 
100             inherits from Log::Log4perl::Appender::Screen and therefore
101             supports the utf8 flag.
102   *    (ms) [RT 64318] Andrew Sayers provided a better error message for
103             "threshold needs to be uppercase".
104   *    (ms) CharleyDixon fixed LOGWARN when :no_extra_logdie_message is 
105             in use to no longer exit().
106
1071.31 (2010/10/27)
108  *     (ms) Fixed the number of skipped tests for Windows for previous fix
109             of [RT 60665].
110
1111.30 (2010/08/30)
112   *    (ms) [RT 60665] HUP handlers are stacked on top of each other now,
113             to make sure that multiple file appenders recreate multiple
114             files and not just one (patch provided by Karen Etheridge).
115   *    (ms) [RT 60197] Fixed uninitialized value warnings with
116             the multiline appender and provided a test case (patch provided
117             by Karen Etheridge)
118   *    (ms) [rt.cpan.org #59617] Fixed system-wide threshold without appender
119             thresholds. Bug reported by Dmitry Bigunyak.
120   *    (ms) [rt.cpan.org #24884] Using require() instead of incomplete
121             logic in L4p::Util::module_available(). local __DIE__
122             handler takes care of user-defined __DIE__ handlers 
123             ignoring $^S (suggested by Eric Wilhelm and others).
124   *    (ms) [rt.cpan.org #60386] Fixed init_and_watch() which 
125             double-bumped the caller_level and led to uninitialized 
126             values in the pattern layout. Thanks to Mitja Bartsch for 
127             the report.
128   *    (ms) Applied patch by Karsten Silkenbäumer to add an optional
129             $log_dispatch_level to create_custom_level(). Updated 
130             documentation.
131
1321.29 (2010/06/16)
133   *    (ms) Added documentation on how to use Log4perl's :easy macros
134             with Catalyst in Log::Log4perl::Catalyst.
135   *    (ms) wrapper_register() now deals with caller_depth automatically.
136             Backwards compatibility with old wrapper classes using 
137             caller_depth directly is provided. Documentation has been 
138             updated.
139   *    (ms) Felix Antonius Wilhelm Ostmann reported Resurrector.pm 
140             crashes, fixed as suggested by setting the %INC value to 
141             the module path.
142   *    (ms) Another caller_depth fix in Log::Log4perl::Catalyst.
143   *    (ms) Fixed logdie() caller_depth bug reported by Rob Retter.
144   *    (ms) [RT 56145] Saving errstr in DBI appender to survive ping()
145   *    (ms) Added INTERNAL_DEBUG env variable to test suite triggering
146             all _INTERNAL_DEBUG statements to be printed for better
147             error diagnosis on misbehaving systems.
148
1491.28 (2010/02/24)
150   *    (ms) Fixed caller stack with Buffer composite appender
151   *    (ms) Fixed 'local caller_depth' error in various places. First
152             localizing a variable and then increasing it is incorrect,
153             as this ignores previous settings. The correct way of
154             increasing the caller level is: 'local depth = depth + 1'.
155   *    (ms) Added Log::Log4perl::Catalyst for use in Catalyst applications.
156
1571.27 (2010/02/07)
158   *    (ms) ***WARNING: This might break backward compatibility 
159                         with some wrapper classes. 
160             [RT 52913] Fixed category fetching in
161             wrapper classes (reported by Martin Evans). Wrapper classes
162             now need to call Log::Log4perl->wrapper_register to adapt
163             get_logger() category fetching. Detailed docs under 
164             "Using Log::Log4perl with wrapper functions and classes"
165   *    (ms) Made meta tag compatible with MakeMaker versions < 6.50
166        (ms) [RT 52083] Fixed manifest glitch from 1.26 (reported by
167             Lars Thegler).
168   *    (ms) Added note to FAQ on 'no init happened' warnings for API 
169             initializations, as suggested by Malcolm Nooning.
170   *    (ms) Applied patch by Christopher Mckay which sets
171             Log4perl::Logger::INITIALIZED only if it's fully initialized.
172   *    (ms) Emmanuel Rodriguez suggested changing TestBuffer's reset() 
173             method to leave the logger population alone. Added clear()
174             to accomodate the need for a single buffer reset.
175   *    (ms) Xavier Caron added %p{1} to allow abbreviated priority
176             strings in the pattern layout.
177   *    (ms) Redid composite appenders to address problems with incorrect
178             caller() data. L4p now supports a $cache parameter to be 
179             passed to the log() function, which stores the completely
180             rendered message and can be passed to log_cached() later on.
181
1821.26 (2009/11/22)
183    *   (ms) [RT 50495] Perl code in the config file is now evaluated/
184             compiled after the configuration parser has done its work, 
185             opening up Perl subroutines to all configuration parsers, not
186             just PropertyConfigurator. Configuration subs for cspecs, 
187             filter, warp_message and appender triggers are sheltered. 
188             The previous, flawed implementation surfaced while using 
189             a 'trigger' category, reported by Olivier Bilodeau.
190    *   (ms) [RT 50090] Added non-portable linebreaks to PatternLayout
191             (requested by Zdeněk Juran).
192    *   (ms) [RT 50094] Docfix for PatternLayout in main manpage (spotted
193             by Peter Rabbitson).
194    *   (ms) [RT 28679] Added exists() to "Threshold" keyword uppercase 
195             check.
196    *   (ms) Took out Class::Prototyped testcase after it got all weird
197             and introduced backward-incompatible changes.
198
1991.25 (2009/09/27)
200    *   (ms) Appender::File is now closing (or sysclosing) the file
201             on file_close() instead of just undef'ing the handle.
202    *   (ms) Added l4p-tmpl helper script to help whipping up a new
203             log4perl configuration file.
204    *   (ms) Fixed uninitialized warning on XML configuration files,
205             reported by jbkilian on the sourceforge mailing list.
206    *   (ms) Applied patch [RT 43426] by AFF <aff@cpan.org> to have 
207             appender_thresholds_adjust return number of appenders changed.
208    *   (ms) [RT 34400] New :nostrict target which allows redefining a 
209             category within a Log4perl configuration file without error
210             or even a warning.
211    *   (ms) [RT 34401] Applied patch by Jae Gangemi, who fixed
212             code references in @INC on Win32 systems. 
213    *   (ms) [RT 32259] Patternlayout now supports %R, which returns the
214             number of milliseconds elapsed from last logging event to
215             the current logging event (thanks to Emmanuel Rodriguez for
216             the patch).
217    *   (ms) [RT 30899] Color configuration and attribute support 
218             added to ScreenColoredLevels appender by Jason Kohles.
219    *   (ms) [RT 28987] If UNIVERSAL is available, appender existence is
220             now verified by checking can() on the appender's new() 
221             method (applied modified patch by Gabriel Berriz).
222
2231.24 (2009/07/08)
224    *   (ms) Fixed bug with Log::Log4perl::Util::tmpfile_name which 
225             surfaced on VMS, reported by Ben Humphreys.
226    *   (ms) Fixed system-wide threshold to no longer lower appender 
227             thresholds. Bug reported by Jean-Denis Muys.
228    *   (ms) Added benchmark to determine impact of eval-free handlers
229    *   (ms) Merged with eval_free branch. Now there are no more 
230             eval("") statements left in the code, making it much easier 
231             to debug. Performance on init() is about the same, performance 
232             on init_and_watch() (noops and logged statements alike) is 
233             25% slower but still in the range of 400,000/sec on my 
234             1.80Ghz CPU.
235
2361.23 (2009/05/12)
237    *   (ms) DBI-1.608 removed a DBD::File 'feature' that allowed leaving
238             out parameters in a bound execute(). This caused the test
239             suite to fail (http://groups.google.com/group/perl.cpan.testers/browse_thread/thread/af1f5c875165c387). Fixed the test cases to pass the correct 
240             number of parameters every time.
241    *   (ms) Better error message in the DBI appender on bad SQL, missing
242             bind parameters, or other execute() errors.
243    *   (ms) Made DBI test suite more robust against preexisting conditions
244    *   (ms) Added force_next_check() for init_and_watch(), cleaned up
245             Config::Watcher code.
246    *   (ms) Fixed test suite to run on Strawberry Perl on Win32 (reported
247             by kmx on https://rt.cpan.org/Ticket/Display.html?id=45983)
248    *   (ms) Added 'utf8' option to screen appender and easy mode, some of
249             it suggested in 
250             http://rt.cpan.org/Public/Bug/Display.html?id=36673 by
251             Shantanu Bhadoria.
252
2531.22 (2009/05/02)
254    *   (ms) is_xxx() returned true prior to L4p initialization. Fixed it
255             and adapted test suite.
256    *   (ms) Added test cases on syswrite in recreate mode
257    *   (ms) Applied patch by Jens Berthold <log4perl@jebecs.de> to
258             avoid semaphore cleanup in spawned children.
259    *   (ms) Added %m{chomp} feature, 'message_chomp_before_newline' option,
260             and documentation on newlines and logging messages, all 
261             suggested by Tim Bunce (see PatternLayout).
262
2631.21 (2009/03/16)
264    *   (ms) Documentation typos fixed, reported by Breno G. de Oliveira
265             [rt.cpan.org #42428].
266    *   (ms) Fixed DBI appender error message, bug reported by DavidZ.
267    *   (ms) Fixed [rt.cpan.org #43740] reported by Martin Koehler. Now using 
268             proper POSIX return code EEXISTS instead of error message 
269             depending on English locale.
270
2711.20 (2008/12/09)
272    *   (ms) Using semctl to reset the value of the semaphore in the 
273             Synchronized appender to prevent "Numerical result out of 
274             range" problem caused by an unbalanced SEM_UNDO when
275             incrementing it. Reported by John Little.
276    *   (ms) Added parameters in curly braces to cspecs in PatternLayout.
277    *   (ms) As explained in  http://rt.cpan.org/Ticket/Display.html?id=41505
278             the latest LWP release (5.822) got rid of all of its internal
279             debugging functions, making infiltrate_lwp() and its test
280             case useless. Disabling it for LWP>=5.822.
281 
2821.19 (2008/10/22)
283    *   (ms) Applied patch by Peter Rabbitson, which fixes the caller() 
284             level when calling get_logger() on a subclass of Log4perl.
285    *   (ms) Added documentation on is_xxx() methods and clarified that
286             it doesn't necessarily mean that a message gets logged if
287             they're returning true (requested by Conway Allen via 
288             [rt.cpan.org #39085].
289    *   (ms) Applied patch by Lee Johnson to appender_by_name() to allow
290             for undefined appender names without issuing a warning,
291             which was occurring with Catalyst::Log4perl.
292    *   (ms) Added docs on numerical levels and level strings in 
293             Log::Log4perl::Level.
294    *   (ms) Applied patch by Anthony Foiani for support of literal 
295             text in DateFormat format strings.
296
2971.18 (2008/08/23)
298    *   (ms) Added explanation that categories and loggers are the same
299             thing (thanks to Rabbit).
300    *   (ms) Fixed t/053Resurrect to work with 5.005_03
301    *   (ms) Added preinit_callback function for init_and_watch()
302    *   (ms) Applied patch by Andy Grundman which speeds up is_LEVEL()
303             calls by skipping unnecessary string concatenations 
304             (http://rt.cpan.org/Ticket/Display.html?id=38537).
305    *   (ms) Applied patch by Jae Gangemi addding a no_warning option to the
306             socket appender
307             (http://rt.cpan.org/Ticket/Display.html?id=34399).
308
3091.17 (2008/07/19)
310    *   (ms) Fixed test suite to run on Strawberry Perl on Win32.
311    *   (ms) Added 'l4p' as a valid prefix in configuration files (equal
312             to 'log4j' and 'log4perl' now).
313
3141.16 (2008/05/15)
315    *   (ms) Changed appender destruction during cleanup to show warning
316             messages thrown by destructors. Previously L4p ignored these
317             messages which caused failed DB flushes to go unnoticed with
318             the DB appender.
319    *   (ms) Added explanation for Log4perl messages during global 
320             destruction to FAQ.
321    *   (ms) Corrected 'Trapper' listing in FAQ, thanks to Christian Reiber.
322    *   (ms) Applied patch by Mitchell Perilstein for 5.005it and the
323             two-argument binmode() that 5.005 doesn't support.
324             (http://rt.cpan.org/Ticket/Display.html?id=34051)
325    *   (ms) Applied patch by Emmanuel Rodriguez (POTYL) doing away with 
326             hard-coded line numbers in 024WarnDieCarp.t to make it work
327             cpan2rpm for building RPM packages 
328             (http://rt.cpan.org/Public/Bug/Display.html?id=35370)
329    *   (ms) Fixed recreate_check_interval = 0 bug reported by 
330             Bill Moseley.
331    *   (ms) Added 'header_text' parameter to the file appender to 
332             have it write a header every time it opens (or re-opens)
333             a new log file (suggested by Steven Lembark).
334
3351.15 (2008/02/10)
336    *   (ms) appender_thresholds_adjust() with a parameter of 0 now
337             does nothing (requested by Oliver Koch).
338    *   (kg) Added 'defer_connection' to Socket appender so it's more useful
339             under Apache.
340    *   (ms) [rt.cpan.org #32738] fixed caller_depth for error_warn()
341             (reported by Felix Antonius Wilhelm Ostmann)
342    *   (ms) [rt.cpan.org #32942] fixed get_logger() for subclassed Log4perl
343             (reported by Felix Antonius Wilhelm Ostmann)
344
3451.14 (2007/11/18)
346    *   (ms) Fixed test suite bug which surfaced in Darwin because temporary
347             files contain '++' which freaked out the sloppy regex match.
348    *   (ms) Better handling of empty config files (reported by Robert Raisch)
349    *   (ms) Rewrote the Synchronized appender to use semaphores exclusivly
350             (got rid of IPC::Shareable).
351    *   (ms) Added Log::Log4perl::Util::Semaphore for easy semop handling
352    *   (ms) Fixed t/026FileApp.t to work on MSWin32.
353
3541.13 (2007/10/11)
355    *   (ms) Another doc fix by Craig
356    *   (ms) Applied Fedora 7 patches
357    *   (ms) Added create_at_logtime option to file appender
358    *   (ms) Added trace level color (yellow) in ScreenColoredLevels
359             appender as suggested by Arvind Jayaprakash in
360             https://sourceforge.net/tracker/index.php?
361                 func=detail&aid=1791445&group_id=56939&atid=482388
362
3631.12 (2007/06/23)
364    *   (ms) Added Log::Log4perl::Resurrector to resurrect commented-out
365             Log4perl statements in all subsequently loaded modules (allows
366             for deploying L4p-enabled CPAN modules without requiring L4p).
367    *   (ms) Added ALWAYS easy mode macro (level=OFF)
368    *   (ms) Fixed logconfess() frame level bug reported by Ali Mesdaq.
369             Added test case.
370
3711.11 (2007/05/29)
372    *   (ms) Added PatternLayout::Multiline code by Cory Bennett to 
373             render multiline messages.
374    *   (ms) Added log level TRACE (lets through even more messages
375             than DEBUG) (suggested by Craig).
376    *   (ms) Added 'syswrite' flag to file appender to have it use
377             'syswrite' instead of 'print', avoiding buffered or
378             interleaving messages originating from different processes
379             (thanks to Evan Miller).
380
3811.10 (2007/03/27)
382    *   (kg) Nikita Dedik pointed out that Saturday is missing from 
383             @Log::Log4perl::DateFormat::WEEK_DAYS
384    *   (ms) Scott Cline noticed a potential problem with the DBI
385             appender reconnection logic in 'buffered' mode. Applied
386             a patch.
387    *   (ms) Changed DBI reconnect logic to perform even if the DB
388             is pingable again.
389    *   (ms) Applied code by Valerio Valdez Paolini with modifications
390             to PropertyConfigurator.pm to allow pulling values from
391             the property configurator by path.
392
3931.09 (2007/02/07)
394    *   (ms) Added $^S check to FAQ, as suggested by J. David Blackstone.
395    *   (ms) Applied Robert Jacobson's patch for the "DDD" formatter
396             in L4p::DateFormats, which now formats the day-of-year values
397             numerically and precedes them with zeroes if necessary.
398    *   (ms) Added %M{x} PatternLayout notation as requested by
399             Ankur Gupta.
400    *   (ms) Another Win32 test suite fix, no longer deleting an open
401             file but moving it aside (rt.cpan:23520).
402
4031.08 2006/11/18
404    *   (ms) Applied test suite patch by Lars Thegler for 
405             ancient perl 5.005_03.
406    *   (ms) Applied patch by Jeremy Bopp to fix test suite running
407             under Cygwin.
408    *   (ms) Fixed documentation bug in L4p:Appender::File,
409             s/recreate_signal/recreate_check_signal. Thanks to
410             Todd Chapman and Robert Jacobson for reporting this.
411    *   (ms) Fixed init(), which now deletes any config file watchers 
412             left over from previous init_and_watch() calls. Reported
413             by Andreas Koenig who saw sporadic errors in the test suite, 
414             thanks!
415
4161.07 2006/10/11
417    *   (ms) Removed checks for unlink() in t/017Watch.t since they
418             failed on win32.
419    *   (ms) Fixed doc bug in Appender::File reported by Robert
420             Jacobson.
421    *   (ms) Added FAQ on why to use Log4perl and not another
422             logging system on CPAN.
423    *   (ms) Fixed %M, %L, etc. level in logcarp/cluck/croak/confess
424             (thanks to Ateeq Altaf)
425    *   (ms) Autocorrecting rootlogger/rootLogger typo
426    *   (ms) Better warning on missing loggers in config sanity check
427
4281.06 2006/07/18
429    *   (ms) Applied patch by Robert Jacobson to fix day-of-year in
430             DateFormat, which was off by one.
431    *   (ms) Added FAQ on syslog
432    *   (ms) umask values for the file appender are now also accepted 
433             in octal form (0xxx).
434    *   (ms) The file appender now accepts owner/group settings of
435             newly created log files.
436    *   (ms) Fixed appender cleanup, a bug caused composite appenders
437             to be cleaned up during global destruction, which caused an
438             ugly segfault with the Synchronized appender on FreeBSD.
439
4401.05 2006/06/10
441    *   (ms) Added recreate signal handler to L4p::Appender::File for
442             newsyslog support. Two new FAQ entries on dealing with 
443             newsyslog and log files being removed by external apps.
444    *   (ms) L4p::Config::Watch no longer sets the global $SIGNAL_CAUGHT by
445             default but uses an instance variable instead to prevent
446             clobbering L4p's config and watch mechanism.
447    *   (ms) die() on undefined configuration (rt 18103 by justice8@wanadoo.fr)
448    *   (ms) Hugh Esco submitted a FAQ on where to put logfiles
449    *   (ms) Applied patch provided by Chia-liang Kao to suppress an error
450             message and skip tests in the suite when DBI is missing.
451
4521.04 2006/02/26
453    *  (ms) Duplicate log4perl directives, which previously just overwrote
454            existing ones, are no longer permitted and cause the config
455            parser to throw an error.
456    *  (ms) If a conversion pattern was specified twice in a config
457            file, the output was "ARRAY(0x804da00)" (bug reported by
458            Bill Mason). Now, gobbling up property configurator values
459            into an array is limited to appender properties and
460            excludes the conversion pattern.
461    *  (ms) Multiple calls to import (usually happens if 'use L4p' gets
462            called twice within the same namespace) caused nasty warnings,
463            bug reported by Greg Olszewski. Fixed by ignoring subsequent
464            calls from the same package to import().
465    *  (ms) Changed rendering of logdie/warn/cluck/croak/... messages
466            to fix a bug reported by Martin J. Evans.
467    *  (ms) Added a L4p::Appender::String appender to handle the
468            rendering internally.
469    *  (ms) Documentation patch by Matisse Enzer on increased/
470            decreased log levels.
471    *  (ms) Fixed stack trace level of logcarp()
472    *  (ms) Carl Franks reported that the test suite failed on WinXP SP2
473            because of a hardcoded /tmp - fixed by File::Spec->tempdir().
474    *  (ms) Added reconnect_attempts and reconnect_sleep parameters to 
475            DBI appender.
476    *  (ms) Bugfix for rt.cpan.org #17886 (tmp files in test suite)
477
4781.03 (2006/01/30)
479    * (ms) Some perl-5.6.1 installations have a buggy Carp.pm. Skipping
480           4 test cases for these. Reported by Andy Ford and Matisse Enzer.
481    * (ms) The DBI appender now reconnects on stale DB connections.
482    * (ms) Fixed Win32 test bug as reported in 
483           http://rt.cpan.org/Ticket/Display.html?id=17436 by barbie.
484           Instead of deleting a file still in use by an appender (which
485           Windows doesn't like), the file gets now truncated.
486
4871.02 (2005/12/10)
488    * (ms) Adapted t/006Config-Java.t to cope with Win32 path separators
489    * (ms) Corrected typo in Chainsaw FAQ, reported by Bernd Dirksen.
490    * (ms) Brian Edwards noticed that (Screen, File) were missing a
491           base class declaration, causing $logger->add_appender() to
492           fail. Fixed with test case.
493    * (ms) Log::Log4perl::Appender::File now handles the case where the
494           logfile suddenly disappears.
495    * (ms) Fixed section indentation in main man page
496    * (ms) Converted Ceki's last name to UTF-8 (a historic step!)
497
4981.01 (09/29/2005)
499    * (ms) Added 'utf8' and 'binmode' flags to Log::Log4perl::Appender::File
500           per suggestion by Jonathan Warden.
501    * (ms) Made test cases 003Layout.t and 033UsrCspec.t resilient against
502           broken ActiveState 5.8.4 and 5.8.7.
503    * (ms) Skipped failing test cases for 5.005, looks like the caller() level
504           in carp() is wrong, but not worth fixing.
505    * (ms) Fixed the bug with the caller level of the first 
506           log message sent after init_and_watch() detected a change. Added
507           test case to 027Watch2.t.
508    * (ms) Added FAQ on UTF-8.
509    * (ms) Applied patch by David Britton, improving performance during
510           the init() call.
511    * (ms) Fixed bug https://rt.cpan.org/Ticket/Display.html?id=14776
512           to prevent it from modifying $_. Thanks to Steffen Winkler.
513
5141.00 (08/13/2005)
515    * (ms) Added tag qw(:no_extra_logdie_message) to suppress duplicate
516           die() messages in scripts using simple configurations and LOGDIE().
517           Added logexit() as an alternative way.
518    * (ms) Fixed bug with logcarp/croak/cluck, which were using the 
519           wrong Carp level.
520    * (kg) Fixing bug in Appender::Limit regarding $_ scope
521    * (ms) corrected typo in Synchronized.pm found by Rob Redmon.
522    * (ms) Fixed bug with Appender::File reported by Michael Smith. Checking
523           now if print() succeeds, catching errors with full disks and
524           ulimit'ed environments.
525    * (ms) Added LOGCARP(), LOGCLUCK(), LOGCONFESS(), LOGCROAK() macros
526           in :easy mode (suggested by Jud Dagnall).
527    * (ms) $INITIALIZED now gets reset during logger cleanup.
528
5290.52 (05/08/2005)
530    * (ms) Jonathan Manning <jmanning@alisa-jon.net> provided a patch
531           for DateFormat.pm to fix 3-letter month abbreviations and a
532           shortcut to simulate Apache's log format.
533    * (kg) Ola Finsbraaten provided a patch to provide a better error
534           message when a logger is defined twice in a config.
535
5360.51 (01/08/2005)
537    * (ms) Jon Bjornstad noticed that the file appender wasn't including
538           $! in the die() exception thrown if open_file() fails. Added it.
539    * (ms) Added umask option to file appender
540    * (ms) Fix to L4p::Util::module::available() for Win32
541           compliance by Roger Yager <roger.yager@eyestreet.com>
542    * (ms) Added check to L4p::Util::module_available() returning true
543           if the pm file is available in %INC, indicating that it has
544           already been loaded. This fixes a problem when running L4p
545           in a PAR binary.
546    * (ms) Added remove_appender() and eradicate_appender() method to 
547           Logger.pm, test cases and documentation on the main Log4perl 
548           page.
549    * (ms) Added a generic buffered composite appender, L4p::Appender::Buffer,
550           buffering messages until a trigger condition is met.
551
5520.50 (12/08/2004)
553    * (ms) Added ':resurrect' source filter, which uncomments all lines
554           starting with "###l4p". Can be used for hidden L4p statements,
555           which are then activated by calling 
556           'use Log::Log4perl qw(:resurrect)'.
557    * (ms) Fixed Win32 test suite bug: File::Spec->catfile() returns '/'
558           as a path separator on both Unix and Win32, while Log4perl's
559           layouts (derived from caller() info) use '\' on Win32 and '/' 
560           on Unix. Changed tests to only verify file name, not path.
561    * (ms) Added 'appender_by_name()' to retrieve an appender defined
562           in the configuration file by name later.
563    * (ms) Added FAQ on "stubbing out" L4p macros in environments
564           that don't have L4p installed.
565    * (ms) Added convenience function appender_thresholds_adjust() to adjust 
566           thresholds of chosen (or all) appenders
567    * (ms) Got rid of Test::Simple dependency
568    * (ms) Moved autoflush setting in L4p::Appender::File from log()
569           to file_open(), running only once, not with every message.
570    * (ms) Applied doc fixes suggested by Jon Bjornstad.
571    * (ms) Added ScreenANSIColor appender to colorize messages based on
572           their priority. See Log::Log4perl::Appender::ScreenANSIColor.
573
5740.49 (11/07/2004)
575    * (ms) init_and_watch() no longer die()s on reloading syntactically 
576           wrong configuration files but issues a warning and then 
577           reloads the last working config.
578    * (ms) init() now also accepts an open file handle (passed in as a
579           glob) to a configuration file or a ref to an IO::File object.
580    * (ms) Jos I. Boumans <kane@xs4all.net> and 
581           Chris Winters <chris@cwinters.com> reported an error thrown
582           by L4p in their app SPOPS: During global construction. Looks
583           like the Logger object's internal hash is cleared and then
584           the is_<level> method gets called, resulting in a runtime
585           exception. Added proposed remedy checking if the called
586           method is defined by ref.
587    * (ms) Added check to init_and_watch if obtaining the mod
588           timestamp failed.
589
5900.48 (08/20/2004)
591    * (ms) fixed bug reported by Chip Salzenberg <chip@pobox.com>: logdie()
592           and logwarn() are now compliant with the warn() and die() 
593           standard which suppresses the "at file line x" message if
594           the message ends with a "\n".
595    * (ms) New interface for custom config parsers. 
596           Log::Log4perl::Config::BaseConfigurator now provides a base class
597           for new config parsers. Init can now be called like
598           Log::Log4perl->init($parser) with a parser object, which is
599           derived from Log::Log4perl::Config::BaseConfigurator and 
600           provides a parse() method (no arguments). The file (or whatever)
601           to be parsed can be set by calling $parser->text(\@lines) or 
602           $parser->file($name) before calling L4p->init($parser).
603           The Property, DOM and LDAP configurators have been
604           adapted, check their implementation for details.
605    * (ms) Added integrity check for Log4perl configurations: Log4perl
606           now issues a warning if a configuration doesn't define any
607           appenders. Should anyone not like this, it can be turned
608           off by setting $L4p::Config::CONFIG_INTEGRITY_CHECK = 0
609           before calling init().
610    * (ms) Fixed bug reported by Johannes Kilian <jok@vitronic.com>
611           with __DIE__ handler and "PatternLayout" shortcut. Replaced
612           'eval { require ... }' by L4p::Util::module_available in
613           L4p::Config.pm.
614    * (ms) Did away with $IS_LOADED internal variable.
615    * (ms) Fixed bug with L4p::INITIALIZED vs. L4P::Logger::INITIALIZED,
616           added t/020Easy2.t.
617    * (ms) Added adm/cvskwexp script to check if we're running into CVS
618           trouble because of <dollar>Log keyword expansion.
619
6200.47 (07/11/2004)
621    * (ms) Added suggestion by Hutton Davidson <Davidson.Hutton@ftid.com>
622           to make the socket appender more forgiving. New option
623           "silent_recovery" will silently ignore errors and recover
624           if possible on initiallly dead socket connections.
625    * (ms) Fixed bug with initialized() -- checking once caused
626           subsequent calls to return true.
627    * (ms) run t/045Composite.t only if Storable is installed -- earlier
628           perl versions (like 5.6.1) don't have it by default.
629    * (ms) fixed test case in t/020Easy.t for buggy perl 5.6.1
630    * (ms) added Log::Log4perl::infiltrate_lwp() to make LWP::UserAgent 
631           play in the L4p framework upon request.
632    * (ms) perl 5.00503 mysteriously core dumps in t/017Watch.t, seems like 
633           this was introduced in 0.46. Disabled these tests for now
634           if we're on 5.00503 to avoid installation hickups. Longer term,
635           need to investigate.
636
6370.46 (06/13/2004)
638    * (ms) removed superfluous eval() in Log4perl.pm, reported anonymously
639           on the CPAN bugtracker.
640    * (ms) Added a cleanup() function to Logger.pm which is used by an
641           END {} block in Logger.pm to tear down all Loggers/Appenders
642           before global destruction kicks in. In addition, Kevin found 
643           that the eval "" is the cause of an Appender memleak. Moved
644           assignment variable out of the eval to plug the leak.
645           Added $Log::Log4perl::CHATTY_DESTROY_METHODS, which shows 
646           what L4p objects are destroyed and when.
647    * (ms) Kevin's idea is in now, on localizing $? in the L4p global END {} 
648           block. It prevents logdie() et. al from exiting with unwanted
649           exit codes when global cleanup / global destruction modifies $?,
650           as seen by Tim with the Email appender.
651    * (ms) Dave Viner <dviner@yahoo-inc.com> added isLevelEnabled() methods
652           as aliases to is_level().
653
6540.45 (05/23/2004)
655    * (ms) fix for t/045Composite.t on perl 5.6.1 by Jeff Macdonald 
656           <jeff.macdonald@e-dialog.com> (specify number of test cases,
657           getting rid of no_plan).
658    * (ms) Dennis Gregorovic <dgregor@redhat.com> provided a patch to 
659           protect applications who are tinkering with $/. It is set
660           to "\n" now locally when L4p is reading the conf file. Added
661           a test case to t/004Config.t.
662    * (ms) Fixed a documentation error with initialized(), pointed 
663           out by Victor Felix <vfelix@tigr.org>.
664
6650.44 (04/25/2004)
666    * (ms) added filename() method to L4P::Appender::File as suggested 
667           by Lee Carmichael <lecar_red@yahoo.com>
668    * (ms) added RRDs appender Log::Log4perl::Appender::RRDs and testcases
669    * (ms) fixed Log::Log4perl::Appender to check if a an appender package
670           has already been loaded and skip 'require' in this case. 
671           Packages injected via Class::Prototyped caused an error with this.
672    * (ms) Extended the FAQ's "How can I write my own appender?" on
673           how to dynamically create new appenders via Class::Prototyped.
674
6750.43 (03/22/2004)
676    * (ms) Applied patch by Markus Peter <warp@spin.de> for 'pipe'
677           mode in Log::Log4perl::Appender::File
678    * (ms) Added composite appender Log::Log4perl::Appender::Limit to
679           limit message delivery to adjustable time windows.
680    * (ms) Fixed last 033UsrCspec.t test case to run on Win32 as well
681           (path fixed).
682    * (ms) Lars Thegler <lars@thegler.dk> provided a patch to keep 
683           compatibility with 5.005_03.
684    * (ms) Added a patch to avoid warnings on undefined MDC values referenced
685           via %X in PatternLayout. Now, the string "[undef]" is used. Bug
686           was reported by Ritu Kohli <Ritu.Kohli@ubs.com>
687
6880.42 (02/14/2004)
689    * (kg) added filters to XML DOMConfig and DTD
690    * (ms) Fixed caller level to cspecs by adding one
691    * (ms) Added init_once() and documentation
692    * (ms) Worked around the perl bug that triggers __DIE__ handlers
693           even if die() occurs within an eval(). So if you did
694             BEGIN { $SIG{__DIE__} = sub { print "ouch!"; die }; }
695             use Log::Log4perl;
696           and Time::HiRes wasn't available, the 
697             eval { require Time::HiRes }
698           in PatternLayout.pm triggered the __DIE__ handler. Now there's
699           a function module_available() in L4p::Util to check if a 
700           module is installed.
701    * (ms) Fixed %M cspec in PatternLayout in case a logging
702           method is called within one (or more) eval {} block(s). 
703           caller(n+m) will be called repeatedly if necessary
704           to get the next real subroutine. Anonymous subroutines will 
705           still be called __ANON__, but this can be overridden by 
706           defining
707               local *__ANON__ = "subroutine_name";
708           in them explicitely (thanks, Perlmonks :).
709
7100.41 (12/12/2003)
711    * (ms) Applied documentation update for Synchronized appender, suggested
712      by David Viner E<lt>dviner@yahoo-inc.comE<gt>
713    * (ms) Added option to Log::Log4perl::Layout::PatternLayout to 
714      enable people to provide their own timer functions.
715
7160.40 (11/11/2003)
717    * (ms) perl 5.005_03 fix for l4p::Appender::Synchronized
718    * (ms) Fixed a bug in 0.39 (thanks to James King for finding) which
719      caused composite appenders like Synchronized to just use 
720      SimpleLayout. With the fix, composite appenders are now relaying
721      messages unmodified to their delegates, which can then apply 
722      any layout they desire.
723    * (ms) Added file_open(), file_close() and file_switch() to 
724      l4p::Appender::File
725
7260.39 (10/23/2003)
727    * (kg) fixed bug in interaction between Logger::Level and Level::is_valid
728      so that now you can do $logger->level('INFO') instead of just $INFO.
729    * (ms) Added logic for 'composite appenders'. Appenders can now be
730      configured to relay messages to other appenders. Added 
731      Log::Log4perl::Appender::Synchronized, an appender guaranteeing 
732      atomic logging of messages via semaphores.
733    * (ms) Added basic substitution to PropertyConfigurator. Now you can
734      define variables (like in "name=value") and subsequent patterns
735      of "${name}" will be replaced by "value" in the configuration file.
736    * (kg) Followed Mike's lead and added variable substitution to the 
737      DOMConfigurator.
738    * (ms) Added Log::Log4perl::Appender::Socket as a simple Socket
739      appender featuring connection recovery.
740
7410.38 (09/29/2003)
742    * (kg) fixed bug where custom_levels beneath DEBUG didn't work
743    * (ms) fixed 5.00305 incompatibility reported by 
744      Brett Rann <brettrann@mail.com> (constants with leading _).
745    * (ms) Log::Log4perl->easy_init() now calls ->reset() first to make sure
746      it's not duplicating the existing logging environment. Thanks
747      to William McKee <william@knowmad.com> for bringing this up.
748    * (ms) fixed bug with error_die() - printed the wrong function/line/file.
749      Reported by Brett Rann <brettrann@mail.com>.
750    * (ms) added %T to PatternLayout as a stack traced as suggested by
751      Brett Rann <brettrann@mail.com>.
752
7530.37 (09/14/2003)
754    * (kg) adjusting tests for XML::Parser 2.32 having broken
755      XML::DOM 1.42 and lower
756    * (ms) Added signal handling to init_and_watch
757    * (ms) renamed l4p-internal DEBUG constant to avoid confusion with
758      DEBUG() and $DEBUG as suggested by Jim Cromie <jcromie@divsol.com>.
759    * (ms) Applied patch by Mac Yang <mac@proofpoint.com> for 
760      Log::Log4perl::DateFormat to calculate the timezone for the 'Z'
761      conversion specifier.
762
7630.36 (07/22/2003)
764    * (ms) Matthew Keene <mkeene@netspace.net.au> suggested to have
765      an accessor for all appenders currently defined -- added 
766      appenders() method
767    * (ms) Test case 041SafeEval.t didn't share $0 explicitely and
768      created some warnings, fixed that with (jf)'s help.
769    * (ms) Added performance improvements suggested by
770      Kyle R. Burton <mortis@voicenet.com>. is_debug/is_info/etc.
771      are now precompiled, similar to the debug/info/etc. methods.
772    * (ms) Added a fix to have is_debug()/is_info()/etc. pay
773      attention to on-the-fly config file changes via init_and_watch().
774    * (ms) Fixed bug that reloaded the config under init_and_watch()
775      every time the check period expired, regardless if the config
776      file itself had changed. Added test case.
777
7780.35 06/21/2003
779    * (kg) got rid of warnings during make test in 014ConfErrs.t
780           added user-defined hooks to JavaMap
781    * Jim Cromie <jcromie@divsol.com> provided a patch to get
782      rid of deprecated our-if syntax in Level.pm
783    * (ms) removed test case for RollingFileAppender because of recent
784      instability. Added dependency for Log::Dispatch::RollingFile 1.10
785      in Log/Log4perl/JavaMap/RollingFileAppender.pm.
786
7870.34 06/08/2003
788    * (ms) James FitzGibbon <james.fitzgibbon@target.com> noticed a major
789           bug in Log::Log4perl::Appender::File and provided a patch. Problem
790           was that 0.33 was reusing the same file handle for every opened file,
791           causing all messages to end up in the same file.
792
7930.33 05/30/2003
794    * (kg) CPAN rt#2636, coordinating XML::DOM version required across modules
795           and unit tests
796    * (ms) Removed Log::Dispatch dependency, added standard 
797           Log::Log4perl::Appender appenders File and Screen. 
798           Log::Dispatch is still supported for backwards compatibility
799           and special purpose appenders implemented within this hierarchy.
800
8010.32 05/17/2003
802    * (ms) Added fix to Makefile.PL to compensate for MakeMaker bug
803           in perl < 5.8.0, causing man pages below Log::Log4perl::Config 
804           not to be installed. Thanks to Mathieu Arnold <mat@mat.cc> 
805           for bringing this up.
806    * (ms) 0.31 had a Win32 test suite glitch, replaced getpwuid() 
807           (not implemented) by stat() for Safe test.
808
8090.31 05/08/2003
810    * (kg) fixed bug Appender::DBI where it was consuming the message
811           array before other appenders could get to it
812    * (ms) changed config_and_watch to ignore clock differences between
813           system time and file system time (helpful with skewed NFS 
814           systems). Added Log::Log4perl::Config::Watch.
815    * James FitzGibbon <james.fitzgibbon@target.com>: Added support for
816           optionally restricting eval'd code to Safe compartments. 
817    * (ms) allow/deny code in configuration files should now be controlled 
818           via the accessor Log::Log4perl::Config->allow_code(0/1).
819           $Log::Log4perl::ALLOW_CODE_IN_CONFIG_FILE is still supported
820           for backwards compatibility.
821
8220.30 03/14/2003
823    * (ms) Added Log4perl custom filter logic and standard filter set
824    * (kg) Added url support to init(), finally documenting it
825    * (kg) Finished implementation of DOMConfigurator allowing xml configs.
826    * (ms) Corrected DateFormat inconsistencies as reported by
827           Roger Perttu <roger.perttu@easit.se>
828
8290.29 01/30/2003
830    * (kg) Removing debugging from 0.28, big woops
831    * (kg) Fixing 036JSyslog.t, Syslog implementations are too often broken
832           to base any results on.
833    * (kg) Fixing XML-DOM tests, Data::Dumper doesn't return data exactly the
834           same way.
835
8360.28 (01/28/2003)
837    * (ms) '#' in the conf file are now interpreted as comment starters only
838           if they're at the start of a line with optional whitespace. 
839           The previous setting (comments starting anywhere) had problems 
840           with code containing '#''s, like in layout.cref = sub { $#_ = 1 }
841    * (ms) warp_message accepts code refs or function names
842    * (kg) Split config bits into PropertyConfigurator and implemented
843           DOMConfigurator for XML configs.
844    * (kg) Adding appender.warp_message parameter as a help to DBI 
845           appender
846    * (kg) Added NoopLayout to help DBI appender
847    * (ms) Added message output filters:
848           log({filter => \&filter, value => $value})
849    * (kg) t/024WarnDieCarp was assuming / as directory separator, failed
850           on Win32
851    * (kg) implemented JavaMaps for NTEventLogAppender, SyslogAppender
852    * (kg) found and addressed circular ref problem in Logger->reset
853    * (kg) moved TestBuffer under Appender/ directory along with DBI
854    * (kg) fixed docs, Pattern layout, %f not supported, s/b %F
855    * (kg) added Log::Log4perl::Appender::DBI to implement JDBCAppender
856    * (ms) Every value in the config file can now be a perl function,
857           dynamically replaced by its return value at configuration
858           parse time
859    * (ms) NDC now prints entire stack, not just
860           top element (as mandated by Log4j)
861    * (ms) Allow trailing spaces after a line-breaking '\' in the 
862           config file to be fault-tolerant on cut-and-pasted code
863
8640.27 12/06/2002
865    * (ms) Updated FAQ with "Recipes of the Week"
866    * (ms) Added Log::Log4perl::NDC (Nested Diagnostic Contexts) and
867           Log::Log4perl::MDC (Mapped Diagnostic Contexts)
868    * (ms) LOGDIE and LOGWARN added to stealth loggers
869    * (ms) Logging methods ($lo->debug(), $lo->info() ...) now return
870           a value, indicating the number of appenders that the message
871           was propagated to. If the message was suppressed due to level
872           constraints, undef is returned. Updated manpage (new section
873           "return values").
874    * (ms) Fixed bug reported by Francisco Olarte Sanz. 
875           <folarte@peoplecall.com>: ISO date format and documentation mixed 
876           up MM with mm in the simple date format
877    * (kg) User-defined conversion specifiers for PatternLayout in
878           configuration file and as C API
879    * (kg) implementing map to log4j.RollingFileAppender
880    * (kg) trying out oneMessagePerAppender parameter
881    * (kg) changed unit tests to use File::Spec 
882
8830.26 11/11/2002
884    * (kg) enabled %l (was missing from PatternLayout::define)
885    * (kg) got rid of "Use of uninitialized value in join or string" message
886           when some of $logger->debug(@array) when some of @array are undef 
887    * (ms) Stealth loggers and documentation
888    * (kg) Better error message for case reported by Hai Wu
889    * (ms) Added Log/Log4perl/FAQ.pm, which the homepage links to
890    * (ms) Took dependency on Test::More and Test::Simple out of the PPD file 
891           because of a problem with Activestate 5.6.1 reported 
892           by James Hahn <jrh3@att.com> 
893    * (ms) Added Log::Dispatch equivalent levels to the Log4perl loggers,
894           which are passed on the Log::Dispatch appenders now according
895           to the priority of the message instead of the default "DEBUG" 
896           setting
897    * (ms) Added %P process ID to PatternLayout as suggested by
898           Paul Harrington <Paul-Harrington@deshaw.com>. Also added 
899           %H as hostname
900    * (kg) Added %min.max formatter to PatternLayout
901    * (ms) Updated docs for Log::Log4perl::DateFormat
902
9030.25 10/06/2002
904    * (ms) backwards-compatibility with perl 5.00503
905    * (ms) added system-wide threshold, fixed java-app thresholds
906    * (kg) Nested configuration structures for appenders like L::D::Jabber
907    * (ms) ::Log4perl::Appender::threshold() accepts strings or integer
908           levels (as submitted by Aaron Straup Cope <asc@vineyard.net>)
909    * (ms) Fixed logdie/logwarn caller(x) offset bug reported by 
910           Brian Duffy <Brian.Duffy@DFA.STATE.NY.US>
911    * (ms) dies now on PatternLayout without ConversionPattern (helps detecting
912           typos in conf files)
913
9140.24 09/26/2002
915    * (kg) Fix for init_and_watch and test cases
916    * (ms) Added documentation for Log::Log4perl::Config
917    * (ms) Added log4perl.additivity.loggerName conf file syntax
918    * (ms) Assume Log::Log4perl::Layout prefix of 'relative'
919           layout class names in conf file (say 'SimpleLayout'
920           instead of 'Log::Log4perl::Layout::SimpleLayout').
921    * (ms) accidently appending a ';' at the end of an appender
922      class in a conf file now spits out a reasonable error message
923    * (ms) added a by_name() method to TestBuffer to retrieve an
924           instance of the TestBuffer population by name instead of
925           relying on the order of creation via POPULATION[x] 
926           (for testing only).
927    * (kg) Win32 compatibility fixes
928
9290.23 09/14/2002
930    * Both Log4perl/log4perl is now accepted in conf file
931    * Added documentation to Log::Log4perl::Appender
932    * Made Time::HiRes optional. If it's missing, PatternLayout will
933      just use full seconds as %r.
934    * SimpleDateFormat "%d{HH:SS}", including predefined formats (DATE etc.)
935    * Added another cut-and-paste example to the docs (EXAMPLE)
936    * Added new logdie/logwarn/error_warn/error_die/logcarp/
937      logcluck/logcroak/logconfess functions written by 
938      Erik Selberg <erik@selberg.com>
939    * Added PatternLayout documentation
940    * Changed suppression of duplicate newline in log message algorithm
941    * Custom levels and inc_level/dec_level/more_logging/less_logging
942      added by Erik Selberg <erik@selberg.com>
943    * Append to logfile by default if Log::Dispatch::File is used
944      (previously clobbered by default)
945    * Kevin's init_and_watch fix
946
9470.22 8/17/2002
948    * Threshold settings of appenders: 
949        $appender->threshold($ERROR);
950        log4j.appender.A.Threshold = ERROR
951    * Chris R. Donnelly <cdonnelly@digitalmotorworks.com>
952      submitted two patches: 
953      - extended init() to take obj references (added, also added a test
954        case and documentation)
955      - fixed %F and %L if Log4perl is used by a wrapper class (accepted,
956        but changed variable name to Log::Log4perl::caller_depth as
957        a tribute to Log::Dispatch::Config, added test case 022Wrap
958        and documentation
959
9600.21 8/08/2002
961    * Synopsis shows code samples in Log4perl.pm/README
962    * Slight Log4j incompatibility but useful: %F{n} lets you
963      limit the number of entries the source file path is logged
964    * Erik W. Selberg (erik@selberg.com) suggested having PatternLayout.pm
965      suppress another \n if the messages already contains a \n and the
966      format requires a %n. Done.
967    * Erik W. Selberg (erik@selberg.com) suggested loggers should take
968      any number of messages and concatenate them. Done.
969    * Fixed double-init problem and added a test case. Now the entire
970      configuration is cleared before the second init(). However, this
971      surfaced a problem with init_and_watch: If a program obtains
972      references to one or more loggers, rewriting the configuration
973      file during program execution and re-initing makes these reference
974      point to loggers which hold obsolete configurations. Fixed that by
975      code in debug(), info(), etc. which *replaces* (shudder) the
976      logger reference the program hands in to them with a new one of
977      the same category. This happens every time if 'init_and_watch' has
978      been enabled. However, this introduces a small runtime penalty.
979      This is different from the original log4j, which does some
980      half-assed re-initialization, because Java isn't expressive enough
981      to allow for it. Making this thread-safe might be tough, though. 
982    * Added DEBUG statements to Logger.pm and Config.pm to trace execution
983      (debugging won't work because of "eval"s). Both files define a 
984      constant named DEBUG towards the top of the file, which will
985      have perl optimize away the debug statements in case it's set to 0.
986    * A warning is issued now (once) if init() hasn't been called or
987      no appenders have been defined.
988    * Added ':levels' target to Log::Log4perl to import $DEBUG, $ERROR,
989      etc. levels (just like 'use Log::Log4perl::Level' works).
990    * Added ':easy' target to allow for simple setup
991    * Code references can be passed in as log messages to avoid parameter
992      passing penalty
993
9940.20 7/23/2002
995    * Strip trailing spaces in config file
996    * Accept line continuations in properties file
997    * Refactored Logger.pm for speed, defined the logging behavior when 
998      the logger is created, not when a message is logged
999    * Fixing test suites so that SimpleFormat newline is accounted for
1000    * Fixed a bug with root inheritance where the category name wasn't
1001      coming through
1002    * added init_and_watch
1003
10040.19 07/16/2002
1005    * Added Log::Log4perl::Appender::TestBuffer back in the distribution, otherwise
1006      regression test suite would fail.
1007
10080.18 07/16/2002
1009    * Failed attempt to fix the Log::Dispatch::Buffer problem.
1010
10110.17 07/11/2002
1012    * Updated documentation according to Dave Rolsky's suggestions
1013    * Lots of other documentation fixes
1014    * Fixed bug in renderer, %M was displayed as the logger function
1015      bumped up the level by 1
1016    * Fixed %% bug
1017
10180.16 07/10/2002
1019    * Updated documentation for CPAN release
1020    * Applied Kevin's patch to limit it to one Log::Dispatcher
1021
10220.15 07/10/2002
1023    * There were name conflicts in Log::Dispatch, because we used *one*
1024      Log::Dispatch object for the *all* loggers in the Log::Log4perl
1025      universe (it still worked because we were using log_to() for
1026      Log::Dispatch to send messages to specific appenders only). Now
1027      every logger has its own Log::Dispatch object. Logger.pm doesn't
1028      call Kevin's anti-dupe logic anymore -- is this ok? Maybe there's
1029      some leftovers which need to be cleaned up.
1030    * Kevin fixed t/014ConfErrs.t after last night's Appender.pm change
1031
10320.14 07/09/2002
1033    * (!) Added new class Log::Log4perl::Appender as a wrapper around
1034      Log::Dispatch::*. Layouts are no longer attached to the loggers,
1035      but to the appenders instead. $app->layout($layout) sets the
1036      layout. $logger->add_appender($app) is the new syntax to add
1037      an appender to a logger. The $logger->layout method is gone
1038      for that reason.
1039    * Added documentation on categories
1040    * Added documentation on Log::Log4perl::Appender,
1041      Log::Log4perl::Layout::SimpleLayout,
1042      Log::Log4perl::Layout::PatternLayout.
1043
10440.13 07/09/2002
1045    * in the config files, 'debug' is not a level, 'DEBUG' is
1046    * expanded the layouts so that we can add subclassess, added
1047      SimpleLayout, note that api usage changes
1048      -$logger->layout('buf',"The message is here: %m");
1049      +$logger->layout(new
1050      Log::Log4perl::Layout::PatternLayout('buf',"The message is
1051      here: %m"));
1052    * did benchmarks, see doc/benchmark*, t/013Bench.t
1053    * further tweaked errors for bad configuration, added a test for those
1054
10550.12 07/08/2002
1056    * Log::Log4perl::Logger->get_logger now accessible via 
1057      Log::Log4perl->get_logger()
1058    * Log::Log4perl::Config->init now accessible via 
1059      Log::Log4perl->init()
1060    * Adapted test cases to new shortcuts
1061    * Constrained some files to 80 chars width
1062    * Added test case t/009Deuce.t for two appenders in one category
1063      via the config file
1064    * Changed default layout in case there's none defined (SimpleLayout)
1065    * Implemented dictatory date format for %d: yyyy/MM/dd hh:mm:ss
1066
10670.11 07/07/2002
1068    * added documentation to Log/Log4perl.pm
1069    * added is_debug/is_error/is_info etc. functions to Logger.pm,
1070      test cases to t/002Logger.t
1071
10720.10 07/05/2002
1073    * %p should return level name of the calling function, so 
1074      $logger->warn('bad thing!!') should print 'WARN - bad thing'
1075      even if the category is set to debug, so took level_str out of
1076      Logger.pm (kg)
1077
10780.09 07/03/2002
1079    * %p should return level name, not number, adding level_str to Logger.pm (kg)
1080    * Level.pm - discriminating: priorities are 1-4, levels are
1081      'info','debug',etc (kg)
1082
10830.08  07/03/2002
1084    * Non-root loggers are working now off the config file
1085
10860.07  07/02/2002
1087    * Updated documentation
1088    * removed "diagnostics"
1089
10900.06  07/01/2002
1091    * Bug discovered by Kevin Goess <cpan@goess.org>, revealed
1092      in 004-Config.t: Wrong layout used if Appender is inherited.
1093      Fixed.
1094    * Changed Log::Log4perl::Appender::TestBuffer to keep track of the
1095      object population -- so we can easily reference them
1096      in the Log::Log4perl test cases. Got rid of get_buffer().
1097    * Added a reset() method to Log::Log4perl and Log::Log4perl::Logger
1098      for easier testing. It resets all persistent loggers to 
1099      the inital state.
1100    * Added documentation
1101
11020.05  06/30/2002
1103    * Fixed bug with mapped priorities between java/Log::Dispatch
1104    * Java/Perl integration with conf file
1105
11060.04  06/30/2002
1107    * Layout tests
1108    * %r to layout
1109    * Added lib4j configuration file stuff and tests
1110
11110.03  06/30/2002
1112    * Layout
1113    * Curly braces in Layout first ops
1114
11150.02  06/30/2002
1116    * Created Logger and test cases
1117
11180.01  06/22/2002
1119    * Where it all began
1120
1121TODO List:
1122##################################################
1123    * Layout.pm: '%t'
1124    * Wild idea: Could we possibly utilize the compiler
1125      frontend to eliminate log statements that are not going to be
1126      triggered? This would be a HUGE performance increase!
1127    * get_logger() thread safety (two try to create it at the same time)
1128    * Thread safety with re-reading the conf file (watch)
1129    * log4j.logger.blah = INHERITED, app
1130