##################################################
Revision history for Log::Log4perl
##################################################
1.33 (2011/05/31)
empty syswrite messages in the file appender.
reported by Frew Schmidt.
and appenders (http://stackoverflow.com/questions/5914088 and https://github.com/mschilli/log4perl/issues/7), so I put on my hazmat suit and cleaned it up. Now perl's garbage collector takes care of disposing of logger and appender carcasses.
from the system.
1.32 (2011/02/26)
by David Christensen.
Etheridge).
inherits from Log::Log4perl::Appender::Screen and therefore supports the utf8 flag.
"threshold needs to be uppercase".
in use to no longer exit().
1.31 (2010/10/27)
of [RT 60665].
1.30 (2010/08/30)
to make sure that multiple file appenders recreate multiple files and not just one (patch provided by Karen Etheridge).
the multiline appender and provided a test case (patch provided by Karen Etheridge)
thresholds. Bug reported by Dmitry Bigunyak.
logic in L4p::Util::module_available(). local __DIE__ handler takes care of user-defined __DIE__ handlers ignoring $^S (suggested by Eric Wilhelm and others).
double-bumped the caller_level and led to uninitialized values in the pattern layout. Thanks to Mitja Bartsch for the report.
$log_dispatch_level to create_custom_level(). Updated documentation.
1.29 (2010/06/16)
with Catalyst in Log::Log4perl::Catalyst.
Backwards compatibility with old wrapper classes using caller_depth directly is provided. Documentation has been updated.
crashes, fixed as suggested by setting the %INC value to the module path.
all INTERNALDEBUG statements to be printed for better error diagnosis on misbehaving systems.
1.28 (2010/02/24)
localizing a variable and then increasing it is incorrect, as this ignores previous settings. The correct way of increasing the caller level is: 'local depth = depth + 1'.
1.27 (2010/02/07)
with some wrapper classes. [RT 52913] Fixed category fetching in wrapper classes (reported by Martin Evans). Wrapper classes now need to call Log::Log4perl->wrapper_register to adapt get_logger() category fetching. Detailed docs under "Using Log::Log4perl with wrapper functions and classes"
Lars Thegler).
initializations, as suggested by Malcolm Nooning.
Log4perl::Logger::INITIALIZED only if it's fully initialized.
method to leave the logger population alone. Added clear() to accomodate the need for a single buffer reset.
strings in the pattern layout.
caller() data. L4p now supports a $cache parameter to be passed to the log() function, which stores the completely rendered message and can be passed to log_cached() later on.
1.26 (2009/11/22)
compiled after the configuration parser has done its work, opening up Perl subroutines to all configuration parsers, not just PropertyConfigurator. Configuration subs for cspecs, filter, warp_message and appender triggers are sheltered. The previous, flawed implementation surfaced while using a 'trigger' category, reported by Olivier Bilodeau.
(requested by Zdeněk Juran).
by Peter Rabbitson).
check.
and introduced backward-incompatible changes.
1.25 (2009/09/27)
on file_close() instead of just undef'ing the handle.
log4perl configuration file.
reported by jbkilian on the sourceforge mailing list.
appender_thresholds_adjust return number of appenders changed.
category within a Log4perl configuration file without error or even a warning.
code references in @INC on Win32 systems.
number of milliseconds elapsed from last logging event to the current logging event (thanks to Emmanuel Rodriguez for the patch).
added to ScreenColoredLevels appender by Jason Kohles.
now verified by checking can() on the appender's new() method (applied modified patch by Gabriel Berriz).
1.24 (2009/07/08)
surfaced on VMS, reported by Ben Humphreys.
thresholds. Bug reported by Jean-Denis Muys.
eval("") statements left in the code, making it much easier to debug. Performance on init() is about the same, performance on init_and_watch() (noops and logged statements alike) is 25% slower but still in the range of 400,000/sec on my 1.80Ghz CPU.
1.23 (2009/05/12)
out parameters in a bound execute(). This caused the test suite to fail (http://groups.google.com/group/perl.cpan.testers/browse_thread/thread/af1f5c875165c387). Fixed the test cases to pass the correct number of parameters every time.
bind parameters, or other execute() errors.
Config::Watcher code.
it suggested in http://rt.cpan.org/Public/Bug/Display.html?id=36673 by Shantanu Bhadoria.
1.22 (2009/05/02)
and adapted test suite.
avoid semaphore cleanup in spawned children.
and documentation on newlines and logging messages, all suggested by Tim Bunce (see PatternLayout).
1.21 (2009/03/16)
[rt.cpan.org #42428].
proper POSIX return code EEXISTS instead of error message depending on English locale.
1.20 (2008/12/09)
Synchronized appender to prevent "Numerical result out of range" problem caused by an unbalanced SEM_UNDO when incrementing it. Reported by John Little.
the latest LWP release (5.822) got rid of all of its internal debugging functions, making infiltrate_lwp() and its test case useless. Disabling it for LWP>=5.822.
1.19 (2008/10/22)
level when calling get_logger() on a subclass of Log4perl.
it doesn't necessarily mean that a message gets logged if they're returning true (requested by Conway Allen via [rt.cpan.org #39085].
for undefined appender names without issuing a warning, which was occurring with Catalyst::Log4perl.
Log::Log4perl::Level.
text in DateFormat format strings.
1.18 (2008/08/23)
thing (thanks to Rabbit).
calls by skipping unnecessary string concatenations (http://rt.cpan.org/Ticket/Display.html?id=38537).
socket appender (http://rt.cpan.org/Ticket/Display.html?id=34399).
1.17 (2008/07/19)
to 'log4j' and 'log4perl' now).
1.16 (2008/05/15)
messages thrown by destructors. Previously L4p ignored these messages which caused failed DB flushes to go unnoticed with the DB appender.
destruction to FAQ.
two-argument binmode() that 5.005 doesn't support. (http://rt.cpan.org/Ticket/Display.html?id=34051)
hard-coded line numbers in 024WarnDieCarp.t to make it work cpan2rpm for building RPM packages (http://rt.cpan.org/Public/Bug/Display.html?id=35370)
Bill Moseley.
have it write a header every time it opens (or re-opens) a new log file (suggested by Steven Lembark).
1.15 (2008/02/10)
does nothing (requested by Oliver Koch).
under Apache.
(reported by Felix Antonius Wilhelm Ostmann)
(reported by Felix Antonius Wilhelm Ostmann)
1.14 (2007/11/18)
files contain '++' which freaked out the sloppy regex match.
(got rid of IPC::Shareable).
1.13 (2007/10/11)
appender as suggested by Arvind Jayaprakash in https://sourceforge.net/tracker/index.php?
func=detail&aid=1791445&group_id=56939&atid=482388
1.12 (2007/06/23)
Log4perl statements in all subsequently loaded modules (allows for deploying L4p-enabled CPAN modules without requiring L4p).
Added test case.
1.11 (2007/05/29)
render multiline messages.
than DEBUG) (suggested by Craig).
'syswrite' instead of 'print', avoiding buffered or interleaving messages originating from different processes (thanks to Evan Miller).
1.10 (2007/03/27)
@Log::Log4perl::DateFormat::WEEK_DAYS
appender reconnection logic in 'buffered' mode. Applied a patch.
is pingable again.
to PropertyConfigurator.pm to allow pulling values from the property configurator by path.
1.09 (2007/02/07)
in L4p::DateFormats, which now formats the day-of-year values numerically and precedes them with zeroes if necessary.
Ankur Gupta.
file but moving it aside (rt.cpan:23520).
1.08 2006/11/18
ancient perl 5.005_03.
under Cygwin.
s/recreate_signal/recreate_check_signal. Thanks to Todd Chapman and Robert Jacobson for reporting this.
left over from previous init_and_watch() calls. Reported by Andreas Koenig who saw sporadic errors in the test suite, thanks!
1.07 2006/10/11
failed on win32.
Jacobson.
logging system on CPAN.
(thanks to Ateeq Altaf)
1.06 2006/07/18
DateFormat, which was off by one.
in octal form (0xxx).
newly created log files.
to be cleaned up during global destruction, which caused an ugly segfault with the Synchronized appender on FreeBSD.
1.05 2006/06/10
newsyslog support. Two new FAQ entries on dealing with newsyslog and log files being removed by external apps.
default but uses an instance variable instead to prevent clobbering L4p's config and watch mechanism.
message and skip tests in the suite when DBI is missing.
1.04 2006/02/26
existing ones, are no longer permitted and cause the config parser to throw an error.
file, the output was "ARRAY(0x804da00)" (bug reported by Bill Mason). Now, gobbling up property configurator values into an array is limited to appender properties and excludes the conversion pattern.
called twice within the same namespace) caused nasty warnings, bug reported by Greg Olszewski. Fixed by ignoring subsequent calls from the same package to import().
to fix a bug reported by Martin J. Evans.
rendering internally.
decreased log levels.
because of a hardcoded /tmp - fixed by File::Spec->tempdir().
DBI appender.
1.03 (2006/01/30)
4 test cases for these. Reported by Andy Ford and Matisse Enzer.
http://rt.cpan.org/Ticket/Display.html?id=17436 by barbie. Instead of deleting a file still in use by an appender (which Windows doesn't like), the file gets now truncated.
1.02 (2005/12/10)
base class declaration, causing $logger->add_appender() to fail. Fixed with test case.
logfile suddenly disappears.
1.01 (09/29/2005)
per suggestion by Jonathan Warden.
broken ActiveState 5.8.4 and 5.8.7.
in carp() is wrong, but not worth fixing.
log message sent after init_and_watch() detected a change. Added test case to 027Watch2.t.
the init() call.
to prevent it from modifying $_. Thanks to Steffen Winkler.
1.00 (08/13/2005)
die() messages in scripts using simple configurations and LOGDIE(). Added logexit() as an alternative way.
wrong Carp level.
now if print() succeeds, catching errors with full disks and ulimit'ed environments.
in :easy mode (suggested by Jud Dagnall).
0.52 (05/08/2005)
for DateFormat.pm to fix 3-letter month abbreviations and a shortcut to simulate Apache's log format.
message when a logger is defined twice in a config.
0.51 (01/08/2005)
$! in the die() exception thrown if open_file() fails. Added it.
compliance by Roger Yager <roger.yager@eyestreet.com>
if the pm file is available in %INC, indicating that it has already been loaded. This fixes a problem when running L4p in a PAR binary.
Logger.pm, test cases and documentation on the main Log4perl page.
buffering messages until a trigger condition is met.
0.50 (12/08/2004)
starting with "###l4p". Can be used for hidden L4p statements, which are then activated by calling 'use Log::Log4perl qw(:resurrect)'.
as a path separator on both Unix and Win32, while Log4perl's layouts (derived from caller() info) use '\' on Win32 and '/' on Unix. Changed tests to only verify file name, not path.
in the configuration file by name later.
that don't have L4p installed.
thresholds of chosen (or all) appenders
to file_open(), running only once, not with every message.
their priority. See Log::Log4perl::Appender::ScreenANSIColor.
0.49 (11/07/2004)
wrong configuration files but issues a warning and then reloads the last working config.
glob) to a configuration file or a ref to an IO::File object.
Chris Winters <chris@cwinters.com> reported an error thrown by L4p in their app SPOPS: During global construction. Looks like the Logger object's internal hash is cleared and then the is_<level> method gets called, resulting in a runtime exception. Added proposed remedy checking if the called method is defined by ref.
timestamp failed.
0.48 (08/20/2004)
and logwarn() are now compliant with the warn() and die() standard which suppresses the "at file line x" message if the message ends with a "\n".
Log::Log4perl::Config::BaseConfigurator now provides a base class for new config parsers. Init can now be called like Log::Log4perl->init($parser) with a parser object, which is derived from Log::Log4perl::Config::BaseConfigurator and provides a parse() method (no arguments). The file (or whatever) to be parsed can be set by calling $parser->text(\@lines) or $parser->file($name) before calling L4p->init($parser). The Property, DOM and LDAP configurators have been adapted, check their implementation for details.
now issues a warning if a configuration doesn't define any appenders. Should anyone not like this, it can be turned off by setting $L4p::Config::CONFIG_INTEGRITY_CHECK = 0 before calling init().
with __DIE__ handler and "PatternLayout" shortcut. Replaced 'eval { require ... }' by L4p::Util::module_available in L4p::Config.pm.
added t/020Easy2.t.
trouble because of <dollar>Log keyword expansion.
0.47 (07/11/2004)
to make the socket appender more forgiving. New option "silent_recovery" will silently ignore errors and recover if possible on initiallly dead socket connections.
subsequent calls to return true.
perl versions (like 5.6.1) don't have it by default.
play in the L4p framework upon request.
this was introduced in 0.46. Disabled these tests for now if we're on 5.00503 to avoid installation hickups. Longer term, need to investigate.
0.46 (06/13/2004)
on the CPAN bugtracker.
END {} block in Logger.pm to tear down all Loggers/Appenders before global destruction kicks in. In addition, Kevin found that the eval "" is the cause of an Appender memleak. Moved assignment variable out of the eval to plug the leak. Added $Log::Log4perl::CHATTY_DESTROY_METHODS, which shows what L4p objects are destroyed and when.
block. It prevents logdie() et. al from exiting with unwanted exit codes when global cleanup / global destruction modifies $?, as seen by Tim with the Email appender.
as aliases to is_level().
0.45 (05/23/2004)
<jeff.macdonald@e-dialog.com> (specify number of test cases, getting rid of no_plan).
protect applications who are tinkering with $/. It is set to "\n" now locally when L4p is reading the conf file. Added a test case to t/004Config.t.
out by Victor Felix <vfelix@tigr.org>.
0.44 (04/25/2004)
by Lee Carmichael <lecar_red@yahoo.com>
has already been loaded and skip 'require' in this case. Packages injected via Class::Prototyped caused an error with this.
how to dynamically create new appenders via Class::Prototyped.
0.43 (03/22/2004)
mode in Log::Log4perl::Appender::File
limit message delivery to adjustable time windows.
(path fixed).
compatibility with 5.005_03.
via %X in PatternLayout. Now, the string "[undef]" is used. Bug was reported by Ritu Kohli <Ritu.Kohli@ubs.com>
0.42 (02/14/2004)
even if die() occurs within an eval(). So if you did BEGIN { $SIG{__DIE__} = sub { print "ouch!"; die }; } use Log::Log4perl; and Time::HiRes wasn't available, the eval { require Time::HiRes } in PatternLayout.pm triggered the __DIE__ handler. Now there's a function module_available() in L4p::Util to check if a module is installed.
method is called within one (or more) eval {} block(s). caller(n+m) will be called repeatedly if necessary to get the next real subroutine. Anonymous subroutines will still be called __ANON__, but this can be overridden by defining
local *__ANON__ = "subroutine_name"; in them explicitely (thanks, Perlmonks :).
0.41 (12/12/2003)
0.40 (11/11/2003)
0.39 (10/23/2003)
0.38 (09/29/2003)
0.37 (09/14/2003)
0.36 (07/22/2003)
0.35 06/21/2003
added user-defined hooks to JavaMap
0.34 06/08/2003
bug in Log::Log4perl::Appender::File and provided a patch. Problem was that 0.33 was reusing the same file handle for every opened file, causing all messages to end up in the same file.
0.33 05/30/2003
and unit tests
Log::Log4perl::Appender appenders File and Screen. Log::Dispatch is still supported for backwards compatibility and special purpose appenders implemented within this hierarchy.
0.32 05/17/2003
in perl < 5.8.0, causing man pages below Log::Log4perl::Config not to be installed. Thanks to Mathieu Arnold <mat@mat.cc> for bringing this up.
(not implemented) by stat() for Safe test.
0.31 05/08/2003
array before other appenders could get to it
system time and file system time (helpful with skewed NFS systems). Added Log::Log4perl::Config::Watch.
optionally restricting eval'd code to Safe compartments.
via the accessor Log::Log4perl::Config->allow_code(0/1). $Log::Log4perl::ALLOW_CODE_IN_CONFIG_FILE is still supported for backwards compatibility.
0.30 03/14/2003
Roger Perttu <roger.perttu@easit.se>
0.29 01/30/2003
to base any results on.
same way.
0.28 (01/28/2003)
if they're at the start of a line with optional whitespace.
The previous setting (comments starting anywhere) had problems
with code containing '''s, like in layout.cref = sub { $ = 1 }
DOMConfigurator for XML configs.
appender
log({filter => \&filter, value => $value})
on Win32
dynamically replaced by its return value at configuration parse time
top element (as mandated by Log4j)
config file to be fault-tolerant on cut-and-pasted code
0.27 12/06/2002
Log::Log4perl::MDC (Mapped Diagnostic Contexts)
a value, indicating the number of appenders that the message was propagated to. If the message was suppressed due to level constraints, undef is returned. Updated manpage (new section "return values").
<folarte@peoplecall.com>: ISO date format and documentation mixed up MM with mm in the simple date format
configuration file and as C API
0.26 11/11/2002
when some of $logger->debug(@array) when some of @array are undef
because of a problem with Activestate 5.6.1 reported by James Hahn <jrh3@att.com>
which are passed on the Log::Dispatch appenders now according to the priority of the message instead of the default "DEBUG" setting
Paul Harrington <Paul-Harrington@deshaw.com>. Also added %H as hostname
0.25 10/06/2002
levels (as submitted by Aaron Straup Cope <asc@vineyard.net>)
Brian Duffy <Brian.Duffy@DFA.STATE.NY.US>
typos in conf files)
0.24 09/26/2002
layout class names in conf file (say 'SimpleLayout' instead of 'Log::Log4perl::Layout::SimpleLayout').
instance of the TestBuffer population by name instead of relying on the order of creation via POPULATION[x] (for testing only).
0.23 09/14/2002
0.22 8/17/2002
0.21 8/08/2002
0.20 7/23/2002
0.19 07/16/2002
0.18 07/16/2002
0.17 07/11/2002
0.16 07/10/2002
0.15 07/10/2002
0.14 07/09/2002
0.13 07/09/2002
0.12 07/08/2002
0.11 07/07/2002
0.10 07/05/2002
0.09 07/03/2002
0.08 07/03/2002
0.07 07/02/2002
0.06 07/01/2002
0.05 06/30/2002
0.04 06/30/2002
0.03 06/30/2002
0.02 06/30/2002
0.01 06/22/2002
TODO List:
##################################################