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