1################################################## 2 Revision history for Log::Log4perl 3################################################## 4 51.15 (2008/02/10) 6 * (ms) appender_thresholds_adjust() with a parameter of 0 now 7 does nothing (requested by Oliver Koch). 8 * (kg) Added 'defer_connection' to Socket appender so it's more useful 9 under Apache. 10 * (ms) [rt.cpan.org #32738] fixed caller_depth for error_warn() 11 (reported by Felix Antonius Wilhelm Ostmann) 12 * (ms) [rt.cpan.org #32942] fixed get_logger() for subclassed Log4perl 13 (reported by Felix Antonius Wilhelm Ostmann) 14 151.14 (2007/11/18) 16 * (ms) Fixed test suite bug which surfaced in Darwin because temporary 17 files contain '++' which freaked out the sloppy regex match. 18 * (ms) Better handling of empty config files (reported by Robert Raisch) 19 * (ms) Rewrote the Synchronized appender to use semaphores exclusivly 20 (got rid of IPC::Shareable). 21 * (ms) Added Log::Log4perl::Util::Semaphore for easy semop handling 22 * (ms) Fixed t/026FileApp.t to work on MSWin32. 23 241.13 (2007/10/11) 25 * (ms) Another doc fix by Craig 26 * (ms) Applied Fedora 7 patches 27 * (ms) Added create_at_logtime option to file appender 28 * (ms) Added trace level color (yellow) in ScreenColoredLevels 29 appender as suggested by Arvind Jayaprakash in 30 https://sourceforge.net/tracker/index.php? 31 func=detail&aid=1791445&group_id=56939&atid=482388 32 331.12 (2007/06/23) 34 * (ms) Added Log::Log4perl::Resurrector to resurrect commented-out 35 Log4perl statements in all subsequently loaded modules (allows 36 for deploying L4p-enabled CPAN modules without requiring L4p). 37 * (ms) Added ALWAYS easy mode macro (level=OFF) 38 * (ms) Fixed logconfess() frame level bug reported by Ali Mesdaq. 39 Added test case. 40 411.11 (2007/05/29) 42 * (ms) Added PatternLayout::Multiline code by Cory Bennett to 43 render multiline messages. 44 * (ms) Added log level TRACE (lets through even more messages 45 than DEBUG) (suggested by Craig). 46 * (ms) Added 'syswrite' flag to file appender to have it use 47 'syswrite' instead of 'print', avoiding buffered or 48 interleaving messages originating from different processes 49 (thanks to Evan Miller). 50 511.10 (2007/03/27) 52 * (kg) Nikita Dedik pointed out that Saturday is missing from 53 @Log::Log4perl::DateFormat::WEEK_DAYS 54 * (ms) Scott Cline noticed a potential problem with the DBI 55 appender reconnection logic in 'buffered' mode. Applied 56 a patch. 57 * (ms) Changed DBI reconnect logic to perform even if the DB 58 is pingable again. 59 * (ms) Applied code by Valerio Valdez Paolini with modifications 60 to PropertyConfigurator.pm to allow pulling values from 61 the property configurator by path. 62 631.09 (2007/02/07) 64 * (ms) Added $^S check to FAQ, as suggested by J. David Blackstone. 65 * (ms) Applied Robert Jacobson's patch for the "DDD" formatter 66 in L4p::DateFormats, which now formats the day-of-year values 67 numerically and precedes them with zeroes if necessary. 68 * (ms) Added %M{x} PatternLayout notation as requested by 69 Ankur Gupta. 70 * (ms) Another Win32 test suite fix, no longer deleting an open 71 file but moving it aside (rt.cpan:23520). 72 731.08 2006/11/18 74 * (ms) Applied test suite patch by Lars Thegler for 75 ancient perl 5.005_03. 76 * (ms) Applied patch by Jeremy Bopp to fix test suite running 77 under Cygwin. 78 * (ms) Fixed documentation bug in L4p:Appender::File, 79 s/recreate_signal/recreate_check_signal. Thanks to 80 Todd Chapman and Robert Jacobson for reporting this. 81 * (ms) Fixed init(), which now deletes any config file watchers 82 left over from previous init_and_watch() calls. Reported 83 by Andreas Koenig who saw sporadic errors in the test suite, 84 thanks! 85 861.07 2006/10/11 87 * (ms) Removed checks for unlink() in t/017Watch.t since they 88 failed on win32. 89 * (ms) Fixed doc bug in Appender::File reported by Robert 90 Jacobson. 91 * (ms) Added FAQ on why to use Log4perl and not another 92 logging system on CPAN. 93 * (ms) Fixed %M, %L, etc. level in logcarp/cluck/croak/confess 94 (thanks to Ateeq Altaf) 95 * (ms) Autocorrecting rootlogger/rootLogger typo 96 * (ms) Better warning on missing loggers in config sanity check 97 981.06 2006/07/18 99 * (ms) Applied patch by Robert Jacobson to fix day-of-year in 100 DateFormat, which was off by one. 101 * (ms) Added FAQ on syslog 102 * (ms) umask values for the file appender are now also accepted 103 in octal form (0xxx). 104 * (ms) The file appender now accepts owner/group settings of 105 newly created log files. 106 * (ms) Fixed appender cleanup, a bug caused composite appenders 107 to be cleaned up during global destruction, which caused an 108 ugly segfault with the Synchronized appender on FreeBSD. 109 1101.05 2006/06/10 111 * (ms) Added recreate signal handler to L4p::Appender::File for 112 newsyslog support. Two new FAQ entries on dealing with 113 newsyslog and log files being removed by external apps. 114 * (ms) L4p::Config::Watch no longer sets the global $SIGNAL_CAUGHT by 115 default but uses an instance variable instead to prevent 116 clobbering L4p's config and watch mechanism. 117 * (ms) die() on undefined configuration (rt 18103 by justice8@wanadoo.fr) 118 * (ms) Hugh Esco submitted a FAQ on where to put logfiles 119 * (ms) Applied patch provided by Chia-liang Kao to suppress an error 120 message and skip tests in the suite when DBI is missing. 121 1221.04 2006/02/26 123 * (ms) Duplicate log4perl directives, which previously just overwrote 124 existing ones, are no longer permitted and cause the config 125 parser to throw an error. 126 * (ms) If a conversion pattern was specified twice in a config 127 file, the output was "ARRAY(0x804da00)" (bug reported by 128 Bill Mason). Now, gobbling up property configurator values 129 into an array is limited to appender properties and 130 excludes the conversion pattern. 131 * (ms) Multiple calls to import (usually happens if 'use L4p' gets 132 called twice within the same namespace) caused nasty warnings, 133 bug reported by Greg Olszewski. Fixed by ignoring subsequent 134 calls from the same package to import(). 135 * (ms) Changed rendering of logdie/warn/cluck/croak/... messages 136 to fix a bug reported by Martin J. Evans. 137 * (ms) Added a L4p::Appender::String appender to handle the 138 rendering internally. 139 * (ms) Documentation patch by Matisse Enzer on increased/ 140 decreased log levels. 141 * (ms) Fixed stack trace level of logcarp() 142 * (ms) Carl Franks reported that the test suite failed on WinXP SP2 143 because of a hardcoded /tmp - fixed by File::Spec->tempdir(). 144 * (ms) Added reconnect_attempts and reconnect_sleep parameters to 145 DBI appender. 146 * (ms) Bugfix for rt.cpan.org #17886 (tmp files in test suite) 147 1481.03 (2006/01/30) 149 * (ms) Some perl-5.6.1 installations have a buggy Carp.pm. Skipping 150 4 test cases for these. Reported by Andy Ford and Matisse Enzer. 151 * (ms) The DBI appender now reconnects on stale DB connections. 152 * (ms) Fixed Win32 test bug as reported in 153 http://rt.cpan.org/Ticket/Display.html?id=17436 by barbie. 154 Instead of deleting a file still in use by an appender (which 155 Windows doesn't like), the file gets now truncated. 156 1571.02 (2005/12/10) 158 * (ms) Adapted t/006Config-Java.t to cope with Win32 path separators 159 * (ms) Corrected typo in Chainsaw FAQ, reported by Bernd Dirksen. 160 * (ms) Brian Edwards noticed that (Screen, File) were missing a 161 base class declaration, causing $logger->add_appender() to 162 fail. Fixed with test case. 163 * (ms) Log::Log4perl::Appender::File now handles the case where the 164 logfile suddenly disappears. 165 * (ms) Fixed section indentation in main man page 166 * (ms) Converted Ceki's last name to UTF-8 (a historic step!) 167 1681.01 (09/29/2005) 169 * (ms) Added 'utf8' and 'binmode' flags to Log::Log4perl::Appender::File 170 per suggestion by Jonathan Warden. 171 * (ms) Made test cases 003Layout.t and 033UsrCspec.t resilient against 172 broken ActiveState 5.8.4 and 5.8.7. 173 * (ms) Skipped failing test cases for 5.005, looks like the caller() level 174 in carp() is wrong, but not worth fixing. 175 * (ms) Fixed the bug with the caller level of the first 176 log message sent after init_and_watch() detected a change. Added 177 test case to 027Watch2.t. 178 * (ms) Added FAQ on UTF-8. 179 * (ms) Applied patch by David Britton, improving performance during 180 the init() call. 181 * (ms) Fixed bug https://rt.cpan.org/Ticket/Display.html?id=14776 182 to prevent it from modifying $_. Thanks to Steffen Winkler. 183 1841.00 (08/13/2005) 185 * (ms) Added tag qw(:no_extra_logdie_message) to suppress duplicate 186 die() messages in scripts using simple configurations and LOGDIE(). 187 Added logexit() as an alternative way. 188 * (ms) Fixed bug with logcarp/croak/cluck, which were using the 189 wrong Carp level. 190 * (kg) Fixing bug in Appender::Limit regarding $_ scope 191 * (ms) corrected typo in Synchronized.pm found by Rob Redmon. 192 * (ms) Fixed bug with Appender::File reported by Michael Smith. Checking 193 now if print() succeeds, catching errors with full disks and 194 ulimit'ed environments. 195 * (ms) Added LOGCARP(), LOGCLUCK(), LOGCONFESS(), LOGCROAK() macros 196 in :easy mode (suggested by Jud Dagnall). 197 * (ms) $INITIALIZED now gets reset during logger cleanup. 198 1990.52 (05/08/2005) 200 * (ms) Jonathan Manning <jmanning@alisa-jon.net> provided a patch 201 for DateFormat.pm to fix 3-letter month abbreviations and a 202 shortcut to simulate Apache's log format. 203 * (kg) Ola Finsbraaten provided a patch to provide a better error 204 message when a logger is defined twice in a config. 205 2060.51 (01/08/2005) 207 * (ms) Jon Bjornstad noticed that the file appender wasn't including 208 $! in the die() exception thrown if open_file() fails. Added it. 209 * (ms) Added umask option to file appender 210 * (ms) Fix to L4p::Util::module::available() for Win32 211 compliance by Roger Yager <roger.yager@eyestreet.com> 212 * (ms) Added check to L4p::Util::module_available() returning true 213 if the pm file is available in %INC, indicating that it has 214 already been loaded. This fixes a problem when running L4p 215 in a PAR binary. 216 * (ms) Added remove_appender() and eradicate_appender() method to 217 Logger.pm, test cases and documentation on the main Log4perl 218 page. 219 * (ms) Added a generic buffered composite appender, L4p::Appender::Buffer, 220 buffering messages until a trigger condition is met. 221 2220.50 (12/08/2004) 223 * (ms) Added ':resurrect' source filter, which uncomments all lines 224 starting with "###l4p". Can be used for hidden L4p statements, 225 which are then activated by calling 226 'use Log::Log4perl qw(:resurrect)'. 227 * (ms) Fixed Win32 test suite bug: File::Spec->catfile() returns '/' 228 as a path separator on both Unix and Win32, while Log4perl's 229 layouts (derived from caller() info) use '\' on Win32 and '/' 230 on Unix. Changed tests to only verify file name, not path. 231 * (ms) Added 'appender_by_name()' to retrieve an appender defined 232 in the configuration file by name later. 233 * (ms) Added FAQ on "stubbing out" L4p macros in environments 234 that don't have L4p installed. 235 * (ms) Added convenience function appender_thresholds_adjust() to adjust 236 thresholds of chosen (or all) appenders 237 * (ms) Got rid of Test::Simple dependency 238 * (ms) Moved autoflush setting in L4p::Appender::File from log() 239 to file_open(), running only once, not with every message. 240 * (ms) Applied doc fixes suggested by Jon Bjornstad. 241 * (ms) Added ScreenANSIColor appender to colorize messages based on 242 their priority. See Log::Log4perl::Appender::ScreenANSIColor. 243 2440.49 (11/07/2004) 245 * (ms) init_and_watch() no longer die()s on reloading syntactically 246 wrong configuration files but issues a warning and then 247 reloads the last working config. 248 * (ms) init() now also accepts an open file handle (passed in as a 249 glob) to a configuration file or a ref to an IO::File object. 250 * (ms) Jos I. Boumans <kane@xs4all.net> and 251 Chris Winters <chris@cwinters.com> reported an error thrown 252 by L4p in their app SPOPS: During global construction. Looks 253 like the Logger object's internal hash is cleared and then 254 the is_<level> method gets called, resulting in a runtime 255 exception. Added proposed remedy checking if the called 256 method is defined by ref. 257 * (ms) Added check to init_and_watch if obtaining the mod 258 timestamp failed. 259 2600.48 (08/20/2004) 261 * (ms) fixed bug reported by Chip Salzenberg <chip@pobox.com>: logdie() 262 and logwarn() are now compliant with the warn() and die() 263 standard which suppresses the "at file line x" message if 264 the message ends with a "\n". 265 * (ms) New interface for custom config parsers. 266 Log::Log4perl::Config::BaseConfigurator now provides a base class 267 for new config parsers. Init can now be called like 268 Log::Log4perl->init($parser) with a parser object, which is 269 derived from Log::Log4perl::Config::BaseConfigurator and 270 provides a parse() method (no arguments). The file (or whatever) 271 to be parsed can be set by calling $parser->text(\@lines) or 272 $parser->file($name) before calling L4p->init($parser). 273 The Property, DOM and LDAP configurators have been 274 adapted, check their implementation for details. 275 * (ms) Added integrity check for Log4perl configurations: Log4perl 276 now issues a warning if a configuration doesn't define any 277 appenders. Should anyone not like this, it can be turned 278 off by setting $L4p::Config::CONFIG_INTEGRITY_CHECK = 0 279 before calling init(). 280 * (ms) Fixed bug reported by Johannes Kilian <jok@vitronic.com> 281 with __DIE__ handler and "PatternLayout" shortcut. Replaced 282 'eval { require ... }' by L4p::Util::module_available in 283 L4p::Config.pm. 284 * (ms) Did away with $IS_LOADED internal variable. 285 * (ms) Fixed bug with L4p::INITIALIZED vs. L4P::Logger::INITIALIZED, 286 added t/020Easy2.t. 287 * (ms) Added adm/cvskwexp script to check if we're running into CVS 288 trouble because of <dollar>Log keyword expansion. 289 2900.47 (07/11/2004) 291 * (ms) Added suggestion by Hutton Davidson <Davidson.Hutton@ftid.com> 292 to make the socket appender more forgiving. New option 293 "silent_recovery" will silently ignore errors and recover 294 if possible on initiallly dead socket connections. 295 * (ms) Fixed bug with initialized() -- checking once caused 296 subsequent calls to return true. 297 * (ms) run t/045Composite.t only if Storable is installed -- earlier 298 perl versions (like 5.6.1) don't have it by default. 299 * (ms) fixed test case in t/020Easy.t for buggy perl 5.6.1 300 * (ms) added Log::Log4perl::infiltrate_lwp() to make LWP::UserAgent 301 play in the L4p framework upon request. 302 * (ms) perl 5.00503 mysteriously core dumps in t/017Watch.t, seems like 303 this was introduced in 0.46. Disabled these tests for now 304 if we're on 5.00503 to avoid installation hickups. Longer term, 305 need to investigate. 306 3070.46 (06/13/2004) 308 * (ms) removed superfluous eval() in Log4perl.pm, reported anonymously 309 on the CPAN bugtracker. 310 * (ms) Added a cleanup() function to Logger.pm which is used by an 311 END {} block in Logger.pm to tear down all Loggers/Appenders 312 before global destruction kicks in. In addition, Kevin found 313 that the eval "" is the cause of an Appender memleak. Moved 314 assignment variable out of the eval to plug the leak. 315 Added $Log::Log4perl::CHATTY_DESTROY_METHODS, which shows 316 what L4p objects are destroyed and when. 317 * (ms) Kevin's idea is in now, on localizing $? in the L4p global END {} 318 block. It prevents logdie() et. al from exiting with unwanted 319 exit codes when global cleanup / global destruction modifies $?, 320 as seen by Tim with the Email appender. 321 * (ms) Dave Viner <dviner@yahoo-inc.com> added isLevelEnabled() methods 322 as aliases to is_level(). 323 3240.45 (05/23/2004) 325 * (ms) fix for t/045Composite.t on perl 5.6.1 by Jeff Macdonald 326 <jeff.macdonald@e-dialog.com> (specify number of test cases, 327 getting rid of no_plan). 328 * (ms) Dennis Gregorovic <dgregor@redhat.com> provided a patch to 329 protect applications who are tinkering with $/. It is set 330 to "\n" now locally when L4p is reading the conf file. Added 331 a test case to t/004Config.t. 332 * (ms) Fixed a documentation error with initialized(), pointed 333 out by Victor Felix <vfelix@tigr.org>. 334 3350.44 (04/25/2004) 336 * (ms) added filename() method to L4P::Appender::File as suggested 337 by Lee Carmichael <lecar_red@yahoo.com> 338 * (ms) added RRDs appender Log::Log4perl::Appender::RRDs and testcases 339 * (ms) fixed Log::Log4perl::Appender to check if a an appender package 340 has already been loaded and skip 'require' in this case. 341 Packages injected via Class::Prototyped caused an error with this. 342 * (ms) Extended the FAQ's "How can I write my own appender?" on 343 how to dynamically create new appenders via Class::Prototyped. 344 3450.43 (03/22/2004) 346 * (ms) Applied patch by Markus Peter <warp@spin.de> for 'pipe' 347 mode in Log::Log4perl::Appender::File 348 * (ms) Added composite appender Log::Log4perl::Appender::Limit to 349 limit message delivery to adjustable time windows. 350 * (ms) Fixed last 033UsrCspec.t test case to run on Win32 as well 351 (path fixed). 352 * (ms) Lars Thegler <lars@thegler.dk> provided a patch to keep 353 compatibility with 5.005_03. 354 * (ms) Added a patch to avoid warnings on undefined MDC values referenced 355 via %X in PatternLayout. Now, the string "[undef]" is used. Bug 356 was reported by Ritu Kohli <Ritu.Kohli@ubs.com> 357 3580.42 (02/14/2004) 359 * (kg) added filters to XML DOMConfig and DTD 360 * (ms) Fixed caller level to cspecs by adding one 361 * (ms) Added init_once() and documentation 362 * (ms) Worked around the perl bug that triggers __DIE__ handlers 363 even if die() occurs within an eval(). So if you did 364 BEGIN { $SIG{__DIE__} = sub { print "ouch!"; die }; } 365 use Log::Log4perl; 366 and Time::HiRes wasn't available, the 367 eval { require Time::HiRes } 368 in PatternLayout.pm triggered the __DIE__ handler. Now there's 369 a function module_available() in L4p::Util to check if a 370 module is installed. 371 * (ms) Fixed %M cspec in PatternLayout in case a logging 372 method is called within one (or more) eval {} block(s). 373 caller(n+m) will be called repeatedly if necessary 374 to get the next real subroutine. Anonymous subroutines will 375 still be called __ANON__, but this can be overridden by 376 defining 377 local *__ANON__ = "subroutine_name"; 378 in them explicitely (thanks, Perlmonks :). 379 3800.41 (12/12/2003) 381 * (ms) Applied documentation update for Synchronized appender, suggested 382 by David Viner E<lt>dviner@yahoo-inc.comE<gt> 383 * (ms) Added option to Log::Log4perl::Layout::PatternLayout to 384 enable people to provide their own timer functions. 385 3860.40 (11/11/2003) 387 * (ms) perl 5.005_03 fix for l4p::Appender::Synchronized 388 * (ms) Fixed a bug in 0.39 (thanks to James King for finding) which 389 caused composite appenders like Synchronized to just use 390 SimpleLayout. With the fix, composite appenders are now relaying 391 messages unmodified to their delegates, which can then apply 392 any layout they desire. 393 * (ms) Added file_open(), file_close() and file_switch() to 394 l4p::Appender::File 395 3960.39 (10/23/2003) 397 * (kg) fixed bug in interaction between Logger::Level and Level::is_valid 398 so that now you can do $logger->level('INFO') instead of just $INFO. 399 * (ms) Added logic for 'composite appenders'. Appenders can now be 400 configured to relay messages to other appenders. Added 401 Log::Log4perl::Appender::Synchronized, an appender guaranteeing 402 atomic logging of messages via semaphores. 403 * (ms) Added basic substitution to PropertyConfigurator. Now you can 404 define variables (like in "name=value") and subsequent patterns 405 of "${name}" will be replaced by "value" in the configuration file. 406 * (kg) Followed Mike's lead and added variable substitution to the 407 DOMConfigurator. 408 * (ms) Added Log::Log4perl::Appender::Socket as a simple Socket 409 appender featuring connection recovery. 410 4110.38 (09/29/2003) 412 * (kg) fixed bug where custom_levels beneath DEBUG didn't work 413 * (ms) fixed 5.00305 incompatibility reported by 414 Brett Rann <brettrann@mail.com> (constants with leading _). 415 * (ms) Log::Log4perl->easy_init() now calls ->reset() first to make sure 416 it's not duplicating the existing logging environment. Thanks 417 to William McKee <william@knowmad.com> for bringing this up. 418 * (ms) fixed bug with error_die() - printed the wrong function/line/file. 419 Reported by Brett Rann <brettrann@mail.com>. 420 * (ms) added %T to PatternLayout as a stack traced as suggested by 421 Brett Rann <brettrann@mail.com>. 422 4230.37 (09/14/2003) 424 * (kg) adjusting tests for XML::Parser 2.32 having broken 425 XML::DOM 1.42 and lower 426 * (ms) Added signal handling to init_and_watch 427 * (ms) renamed l4p-internal DEBUG constant to avoid confusion with 428 DEBUG() and $DEBUG as suggested by Jim Cromie <jcromie@divsol.com>. 429 * (ms) Applied patch by Mac Yang <mac@proofpoint.com> for 430 Log::Log4perl::DateFormat to calculate the timezone for the 'Z' 431 conversion specifier. 432 4330.36 (07/22/2003) 434 * (ms) Matthew Keene <mkeene@netspace.net.au> suggested to have 435 an accessor for all appenders currently defined -- added 436 appenders() method 437 * (ms) Test case 041SafeEval.t didn't share $0 explicitely and 438 created some warnings, fixed that with (jf)'s help. 439 * (ms) Added performance improvements suggested by 440 Kyle R. Burton <mortis@voicenet.com>. is_debug/is_info/etc. 441 are now precompiled, similar to the debug/info/etc. methods. 442 * (ms) Added a fix to have is_debug()/is_info()/etc. pay 443 attention to on-the-fly config file changes via init_and_watch(). 444 * (ms) Fixed bug that reloaded the config under init_and_watch() 445 every time the check period expired, regardless if the config 446 file itself had changed. Added test case. 447 4480.35 06/21/2003 449 * (kg) got rid of warnings during make test in 014ConfErrs.t 450 added user-defined hooks to JavaMap 451 * Jim Cromie <jcromie@divsol.com> provided a patch to get 452 rid of deprecated our-if syntax in Level.pm 453 * (ms) removed test case for RollingFileAppender because of recent 454 instability. Added dependency for Log::Dispatch::RollingFile 1.10 455 in Log/Log4perl/JavaMap/RollingFileAppender.pm. 456 4570.34 06/08/2003 458 * (ms) James FitzGibbon <james.fitzgibbon@target.com> noticed a major 459 bug in Log::Log4perl::Appender::File and provided a patch. Problem 460 was that 0.33 was reusing the same file handle for every opened file, 461 causing all messages to end up in the same file. 462 4630.33 05/30/2003 464 * (kg) CPAN rt#2636, coordinating XML::DOM version required across modules 465 and unit tests 466 * (ms) Removed Log::Dispatch dependency, added standard 467 Log::Log4perl::Appender appenders File and Screen. 468 Log::Dispatch is still supported for backwards compatibility 469 and special purpose appenders implemented within this hierarchy. 470 4710.32 05/17/2003 472 * (ms) Added fix to Makefile.PL to compensate for MakeMaker bug 473 in perl < 5.8.0, causing man pages below Log::Log4perl::Config 474 not to be installed. Thanks to Mathieu Arnold <mat@mat.cc> 475 for bringing this up. 476 * (ms) 0.31 had a Win32 test suite glitch, replaced getpwuid() 477 (not implemented) by stat() for Safe test. 478 4790.31 05/08/2003 480 * (kg) fixed bug Appender::DBI where it was consuming the message 481 array before other appenders could get to it 482 * (ms) changed config_and_watch to ignore clock differences between 483 system time and file system time (helpful with skewed NFS 484 systems). Added Log::Log4perl::Config::Watch. 485 * James FitzGibbon <james.fitzgibbon@target.com>: Added support for 486 optionally restricting eval'd code to Safe compartments. 487 * (ms) allow/deny code in configuration files should now be controlled 488 via the accessor Log::Log4perl::Config->allow_code(0/1). 489 $Log::Log4perl::ALLOW_CODE_IN_CONFIG_FILE is still supported 490 for backwards compatibility. 491 4920.30 03/14/2003 493 * (ms) Added Log4perl custom filter logic and standard filter set 494 * (kg) Added url support to init(), finally documenting it 495 * (kg) Finished implementation of DOMConfigurator allowing xml configs. 496 * (ms) Corrected DateFormat inconsistencies as reported by 497 Roger Perttu <roger.perttu@easit.se> 498 4990.29 01/30/2003 500 * (kg) Removing debugging from 0.28, big woops 501 * (kg) Fixing 036JSyslog.t, Syslog implementations are too often broken 502 to base any results on. 503 * (kg) Fixing XML-DOM tests, Data::Dumper doesn't return data exactly the 504 same way. 505 5060.28 (01/28/2003) 507 * (ms) '#' in the conf file are now interpreted as comment starters only 508 if they're at the start of a line with optional whitespace. 509 The previous setting (comments starting anywhere) had problems 510 with code containing '#''s, like in layout.cref = sub { $#_ = 1 } 511 * (ms) warp_message accepts code refs or function names 512 * (kg) Split config bits into PropertyConfigurator and implemented 513 DOMConfigurator for XML configs. 514 * (kg) Adding appender.warp_message parameter as a help to DBI 515 appender 516 * (kg) Added NoopLayout to help DBI appender 517 * (ms) Added message output filters: 518 log({filter => \&filter, value => $value}) 519 * (kg) t/024WarnDieCarp was assuming / as directory separator, failed 520 on Win32 521 * (kg) implemented JavaMaps for NTEventLogAppender, SyslogAppender 522 * (kg) found and addressed circular ref problem in Logger->reset 523 * (kg) moved TestBuffer under Appender/ directory along with DBI 524 * (kg) fixed docs, Pattern layout, %f not supported, s/b %F 525 * (kg) added Log::Log4perl::Appender::DBI to implement JDBCAppender 526 * (ms) Every value in the config file can now be a perl function, 527 dynamically replaced by its return value at configuration 528 parse time 529 * (ms) NDC now prints entire stack, not just 530 top element (as mandated by Log4j) 531 * (ms) Allow trailing spaces after a line-breaking '\' in the 532 config file to be fault-tolerant on cut-and-pasted code 533 5340.27 12/06/2002 535 * (ms) Updated FAQ with "Recipes of the Week" 536 * (ms) Added Log::Log4perl::NDC (Nested Diagnostic Contexts) and 537 Log::Log4perl::MDC (Mapped Diagnostic Contexts) 538 * (ms) LOGDIE and LOGWARN added to stealth loggers 539 * (ms) Logging methods ($lo->debug(), $lo->info() ...) now return 540 a value, indicating the number of appenders that the message 541 was propagated to. If the message was suppressed due to level 542 constraints, undef is returned. Updated manpage (new section 543 "return values"). 544 * (ms) Fixed bug reported by Francisco Olarte Sanz. 545 <folarte@peoplecall.com>: ISO date format and documentation mixed 546 up MM with mm in the simple date format 547 * (kg) User-defined conversion specifiers for PatternLayout in 548 configuration file and as C API 549 * (kg) implementing map to log4j.RollingFileAppender 550 * (kg) trying out oneMessagePerAppender parameter 551 * (kg) changed unit tests to use File::Spec 552 5530.26 11/11/2002 554 * (kg) enabled %l (was missing from PatternLayout::define) 555 * (kg) got rid of "Use of uninitialized value in join or string" message 556 when some of $logger->debug(@array) when some of @array are undef 557 * (ms) Stealth loggers and documentation 558 * (kg) Better error message for case reported by Hai Wu 559 * (ms) Added Log/Log4perl/FAQ.pm, which the homepage links to 560 * (ms) Took dependency on Test::More and Test::Simple out of the PPD file 561 because of a problem with Activestate 5.6.1 reported 562 by James Hahn <jrh3@att.com> 563 * (ms) Added Log::Dispatch equivalent levels to the Log4perl loggers, 564 which are passed on the Log::Dispatch appenders now according 565 to the priority of the message instead of the default "DEBUG" 566 setting 567 * (ms) Added %P process ID to PatternLayout as suggested by 568 Paul Harrington <Paul-Harrington@deshaw.com>. Also added 569 %H as hostname 570 * (kg) Added %min.max formatter to PatternLayout 571 * (ms) Updated docs for Log::Log4perl::DateFormat 572 5730.25 10/06/2002 574 * (ms) backwards-compatibility with perl 5.00503 575 * (ms) added system-wide threshold, fixed java-app thresholds 576 * (kg) Nested configuration structures for appenders like L::D::Jabber 577 * (ms) ::Log4perl::Appender::threshold() accepts strings or integer 578 levels (as submitted by Aaron Straup Cope <asc@vineyard.net>) 579 * (ms) Fixed logdie/logwarn caller(x) offset bug reported by 580 Brian Duffy <Brian.Duffy@DFA.STATE.NY.US> 581 * (ms) dies now on PatternLayout without ConversionPattern (helps detecting 582 typos in conf files) 583 5840.24 09/26/2002 585 * (kg) Fix for init_and_watch and test cases 586 * (ms) Added documentation for Log::Log4perl::Config 587 * (ms) Added log4perl.additivity.loggerName conf file syntax 588 * (ms) Assume Log::Log4perl::Layout prefix of 'relative' 589 layout class names in conf file (say 'SimpleLayout' 590 instead of 'Log::Log4perl::Layout::SimpleLayout'). 591 * (ms) accidently appending a ';' at the end of an appender 592 class in a conf file now spits out a reasonable error message 593 * (ms) added a by_name() method to TestBuffer to retrieve an 594 instance of the TestBuffer population by name instead of 595 relying on the order of creation via POPULATION[x] 596 (for testing only). 597 * (kg) Win32 compatibility fixes 598 5990.23 09/14/2002 600 * Both Log4perl/log4perl is now accepted in conf file 601 * Added documentation to Log::Log4perl::Appender 602 * Made Time::HiRes optional. If it's missing, PatternLayout will 603 just use full seconds as %r. 604 * SimpleDateFormat "%d{HH:SS}", including predefined formats (DATE etc.) 605 * Added another cut-and-paste example to the docs (EXAMPLE) 606 * Added new logdie/logwarn/error_warn/error_die/logcarp/ 607 logcluck/logcroak/logconfess functions written by 608 Erik Selberg <erik@selberg.com> 609 * Added PatternLayout documentation 610 * Changed suppression of duplicate newline in log message algorithm 611 * Custom levels and inc_level/dec_level/more_logging/less_logging 612 added by Erik Selberg <erik@selberg.com> 613 * Append to logfile by default if Log::Dispatch::File is used 614 (previously clobbered by default) 615 * Kevin's init_and_watch fix 616 6170.22 8/17/2002 618 * Threshold settings of appenders: 619 $appender->threshold($ERROR); 620 log4j.appender.A.Threshold = ERROR 621 * Chris R. Donnelly <cdonnelly@digitalmotorworks.com> 622 submitted two patches: 623 - extended init() to take obj references (added, also added a test 624 case and documentation) 625 - fixed %F and %L if Log4perl is used by a wrapper class (accepted, 626 but changed variable name to Log::Log4perl::caller_depth as 627 a tribute to Log::Dispatch::Config, added test case 022Wrap 628 and documentation 629 6300.21 8/08/2002 631 * Synopsis shows code samples in Log4perl.pm/README 632 * Slight Log4j incompatibility but useful: %F{n} lets you 633 limit the number of entries the source file path is logged 634 * Erik W. Selberg (erik@selberg.com) suggested having PatternLayout.pm 635 suppress another \n if the messages already contains a \n and the 636 format requires a %n. Done. 637 * Erik W. Selberg (erik@selberg.com) suggested loggers should take 638 any number of messages and concatenate them. Done. 639 * Fixed double-init problem and added a test case. Now the entire 640 configuration is cleared before the second init(). However, this 641 surfaced a problem with init_and_watch: If a program obtains 642 references to one or more loggers, rewriting the configuration 643 file during program execution and re-initing makes these reference 644 point to loggers which hold obsolete configurations. Fixed that by 645 code in debug(), info(), etc. which *replaces* (shudder) the 646 logger reference the program hands in to them with a new one of 647 the same category. This happens every time if 'init_and_watch' has 648 been enabled. However, this introduces a small runtime penalty. 649 This is different from the original log4j, which does some 650 half-assed re-initialization, because Java isn't expressive enough 651 to allow for it. Making this thread-safe might be tough, though. 652 * Added DEBUG statements to Logger.pm and Config.pm to trace execution 653 (debugging won't work because of "eval"s). Both files define a 654 constant named DEBUG towards the top of the file, which will 655 have perl optimize away the debug statements in case it's set to 0. 656 * A warning is issued now (once) if init() hasn't been called or 657 no appenders have been defined. 658 * Added ':levels' target to Log::Log4perl to import $DEBUG, $ERROR, 659 etc. levels (just like 'use Log::Log4perl::Level' works). 660 * Added ':easy' target to allow for simple setup 661 * Code references can be passed in as log messages to avoid parameter 662 passing penalty 663 6640.20 7/23/2002 665 * Strip trailing spaces in config file 666 * Accept line continuations in properties file 667 * Refactored Logger.pm for speed, defined the logging behavior when 668 the logger is created, not when a message is logged 669 * Fixing test suites so that SimpleFormat newline is accounted for 670 * Fixed a bug with root inheritance where the category name wasn't 671 coming through 672 * added init_and_watch 673 6740.19 07/16/2002 675 * Added Log::Log4perl::Appender::TestBuffer back in the distribution, otherwise 676 regression test suite would fail. 677 6780.18 07/16/2002 679 * Failed attempt to fix the Log::Dispatch::Buffer problem. 680 6810.17 07/11/2002 682 * Updated documentation according to Dave Rolsky's suggestions 683 * Lots of other documentation fixes 684 * Fixed bug in renderer, %M was displayed as the logger function 685 bumped up the level by 1 686 * Fixed %% bug 687 6880.16 07/10/2002 689 * Updated documentation for CPAN release 690 * Applied Kevin's patch to limit it to one Log::Dispatcher 691 6920.15 07/10/2002 693 * There were name conflicts in Log::Dispatch, because we used *one* 694 Log::Dispatch object for the *all* loggers in the Log::Log4perl 695 universe (it still worked because we were using log_to() for 696 Log::Dispatch to send messages to specific appenders only). Now 697 every logger has its own Log::Dispatch object. Logger.pm doesn't 698 call Kevin's anti-dupe logic anymore -- is this ok? Maybe there's 699 some leftovers which need to be cleaned up. 700 * Kevin fixed t/014ConfErrs.t after last night's Appender.pm change 701 7020.14 07/09/2002 703 * (!) Added new class Log::Log4perl::Appender as a wrapper around 704 Log::Dispatch::*. Layouts are no longer attached to the loggers, 705 but to the appenders instead. $app->layout($layout) sets the 706 layout. $logger->add_appender($app) is the new syntax to add 707 an appender to a logger. The $logger->layout method is gone 708 for that reason. 709 * Added documentation on categories 710 * Added documentation on Log::Log4perl::Appender, 711 Log::Log4perl::Layout::SimpleLayout, 712 Log::Log4perl::Layout::PatternLayout. 713 7140.13 07/09/2002 715 * in the config files, 'debug' is not a level, 'DEBUG' is 716 * expanded the layouts so that we can add subclassess, added 717 SimpleLayout, note that api usage changes 718 -$logger->layout('buf',"The message is here: %m"); 719 +$logger->layout(new 720 Log::Log4perl::Layout::PatternLayout('buf',"The message is 721 here: %m")); 722 * did benchmarks, see doc/benchmark*, t/013Bench.t 723 * further tweaked errors for bad configuration, added a test for those 724 7250.12 07/08/2002 726 * Log::Log4perl::Logger->get_logger now accessible via 727 Log::Log4perl->get_logger() 728 * Log::Log4perl::Config->init now accessible via 729 Log::Log4perl->init() 730 * Adapted test cases to new shortcuts 731 * Constrained some files to 80 chars width 732 * Added test case t/009Deuce.t for two appenders in one category 733 via the config file 734 * Changed default layout in case there's none defined (SimpleLayout) 735 * Implemented dictatory date format for %d: yyyy/MM/dd hh:mm:ss 736 7370.11 07/07/2002 738 * added documentation to Log/Log4perl.pm 739 * added is_debug/is_error/is_info etc. functions to Logger.pm, 740 test cases to t/002Logger.t 741 7420.10 07/05/2002 743 * %p should return level name of the calling function, so 744 $logger->warn('bad thing!!') should print 'WARN - bad thing' 745 even if the category is set to debug, so took level_str out of 746 Logger.pm (kg) 747 7480.09 07/03/2002 749 * %p should return level name, not number, adding level_str to Logger.pm (kg) 750 * Level.pm - discriminating: priorities are 1-4, levels are 751 'info','debug',etc (kg) 752 7530.08 07/03/2002 754 * Non-root loggers are working now off the config file 755 7560.07 07/02/2002 757 * Updated documentation 758 * removed "diagnostics" 759 7600.06 07/01/2002 761 * Bug discovered by Kevin Goess <cpan@goess.org>, revealed 762 in 004-Config.t: Wrong layout used if Appender is inherited. 763 Fixed. 764 * Changed Log::Log4perl::Appender::TestBuffer to keep track of the 765 object population -- so we can easily reference them 766 in the Log::Log4perl test cases. Got rid of get_buffer(). 767 * Added a reset() method to Log::Log4perl and Log::Log4perl::Logger 768 for easier testing. It resets all persistent loggers to 769 the inital state. 770 * Added documentation 771 7720.05 06/30/2002 773 * Fixed bug with mapped priorities between java/Log::Dispatch 774 * Java/Perl integration with conf file 775 7760.04 06/30/2002 777 * Layout tests 778 * %r to layout 779 * Added lib4j configuration file stuff and tests 780 7810.03 06/30/2002 782 * Layout 783 * Curly braces in Layout first ops 784 7850.02 06/30/2002 786 * Created Logger and test cases 787 7880.01 06/22/2002 789 * Where it all began 790 791TODO (not assigned to anybody yet): 792################################################## 793 * objects passed via the config hash are stringified by Config.pm 794 (requires a significant change on how to init via a hash ref, 795 something like a HashConfigurator class) 796 * BasicConfigurator() vs. :easy, PropertyConfigurator() 797 * get_logger() thread safety (two try to create it at the same time) 798 * Thread safety with appenders, e.g. two threads calling the 799 File::Dispatch appender's log method 800 * Thread safety with re-reading the conf file (watch) 801 * Object rendering 802 * log4j.logger.blah = INHERITED, app 803 * variable subst: a=b log4j.blah = ${a} 804 * log4j.renderer.blah = blah 805 * permission problems, init() creates the files, maybe read later by 806 different uid, no way to set umask? 807 * Custom filters 808 809TODO Kevin: 810################################################## 811 * use squirrel http://www.perlmeister.com/scripts/squirrel? 812 * document oneMessagePerAppender as a bona-fide feature 813 * appender-by-name stuff? 814 * implement? #"log4j will render the content of the log message according to 815 # user specified criteria. For example, if you frequently need 816 # to log Oranges, an object type used in your current project, 817 # then you can register an OrangeRenderer that will be invoked 818 # whenever an orange needs to be logged. " 819 820 821TODO Mike: 822################################################## 823 * index.html on sourceforge should be part of CVS 824 * Release script should maintain old CPAN message on index.html 825 * Turning on DEBUG in Logger.pm results in broken test cases and 826 warnings 827 * Layout.pm: '%t' 828 * README tests (Pod::Tests or something) 829 * Just had a wild idea: Could we possibly utilize the compiler 830 frontend to eliminate log statements that are not going to be 831 triggered? This would be a HUGE performance increase! 832 * Write a bunch of useful appenders for Log::Dispatch like 833 RollingLogFile 834 835################################################## 836