2.71 2023-04-05
- The docs for the Screen output were never updated after the changes in 2.50,
when it reverted back to using STDOUT or STDERR directly. This led to a lot
of the docs being confusing and wrong. Reported by @mauke. GH #65, #66, and
#67.
2.70 2020-07-20
- Make locking test wait longer before giving up. Some filesystems (like NFS)
can be quite slow to lock files. Fixed by Joelle Maslak. GH #61.
2.69 2019-10-25
- Fix a warning Log::Dispatch::Email::Mailsender (GH #57). Fixed by Graham
Knop. 58 #GH.
2.68 2018-08-21
- Changed some internals to avoid re-validating the same sets of parameters
repeatedly, which should offer a small speed bost. Based on PR #54 from
Sergey Leschenko.
2.67 2017-09-24
- Added a lazy_open option to the File output. This delays opening the file
until the first time a log message is written to it. Implemented by Slaven
Rezić. GH #50.
2.66 2017-08-14
- Fixed the ApacheLog output, which was broken in 2.60. Fixed by Michael
Schout. GitHub #48 and #49.
2.65 2017-06-11
- When Log::Dispatch::File is asked to chmod a file and that fails, show the
requested permissions in octal. Patch by Carsten Grohmann. GitHub #46.
2.64 2017-02-25 (TRIAL RELEASE)
- Improve level validation and canonicalization logic. Patch by Kerin Millar,
minor changes and tests by Kivanc Yazan. Github #42.
- The log_and_die and log_and_croak methods are now identical, as we set
@CARP_NOT for Log::Dispatch to exclude the Log::Dispatch package. You can
still explicitly pass carp_level to log_and_croak.
2.63 2017-02-19
- Updated the conflicting version for Log::Dispatch::File::Stamped in
metadata (due to changes in handling of close_after_write). Patch by Karen
Etheridge. GitHub #41.
2.62 2017-02-13
- Devel::Confess was accidentally being loaded in Log::Dispatch. Fixed by
Karen Etheridge. GitHub #39.
2.61 2017-02-13
- The 2.60 release would throw an exception if the logged message was
empty. While this makes sense, it also breaks backwards compatibility, so it
has been reverted. Reported by Greg Oschwald. GitHub #38.
- The 2.60 release would throw an exception if you tried to create a Syslog
output where the ident was an empty string. Reported by Greg
Oschwald. GitHub #38.
2.60 2017-02-12
- Same as 2.59 ... Switched from Params::Validate to
Params::ValidationCompiler. This should speed up constructors and logging a
little bit. This also allows Log::Dispatch::File to accept things like
Path::Tiny objects for filenames. Reported by Joel Berger. GitHub #36.
2.59 2017-02-05 (TRIAL RELEASE)
- Switched from Params::Validate to Params::ValidationCompiler. This should
speed up constructors and logging a little bit. This also allows
Log::Dispatch::File to accept things like Path::Tiny objects for
filenames. Reported by Joel Berger. GitHub #36.
2.58 2016-11-13
- Switched from RT to the GitHub issue tracker.
2.57 2016-08-13
- Added a remove_callback method to the main Log::Dispatch object as well as
all outputs. Patch by Doug Bell. GitHub #22.
2.56 2016-05-06
- Cleaned up some cruft in Pod. Some sections ended up in there twice.
2.55 2016-05-06
- The values of $@, $!, and $? are protected in various cases where they could
end up being changed by logging code. Patch by Salvador Fandiño. GitHub #18.
- Treat MSYS2 like Cygwin in tests. Fix by Graham Ollis. GitHub #19.
2.54 2016-01-18
- Fixed File::Locked even more. While some deadlocks were eliminated, there
was still an issue when a Log::Dispatch object was created in a parent
process and then recreated in the children. If the close_after_write
parameter was false, then there would be a deadlock.
- Made Syslog work on a threaded Perl when the threads module was not
explicitly loaded. Fixed by Konrad Bucheli. GitHub #13.
- The log() method now accepts a level parameter as an integer. Fixed by Steve
Bertrand. GitHub #15.
2.53 2016-01-14
- Actually fix File::Locked, this time with some actual tests.
2.52 2016-01-13
- Make File::Locked output do an explicit unlock if the close_after_write
option is not set. Without this it would open the file once in each process,
attempting to get a lock at open time, pretty much guaranteeing a deadlock
in a multiprocess environment. Now it should work sanely whether
close_after_write is true or not.
2.51 2015-09-19
- Fixed t/08-screen.t on Windows platforms.
2.50 2015-09-02
- Changed how the Screen output handles UTF-8 data once more. The Screen
module has gone back to printing output directly to the global STDOUT and
STDERR handles. The previous changes broke the tests for several modules,
including Log::Dispatch::Config. This change should fix them.
2.49 2015-08-21
- The Screen output now enables autoflush on the handle it uses to send output
to STDOUT or STDERR every time it sends a message. This does not affect the
global STDOUT or STDERR, as the Screen module makes its own handle for
output. This fixes a bug reported by Karen Etheridge that caused this module
to not play nicely with Capture::Tiny in some cases. RT #106605.
2.48 2015-08-07
- Fixed (I hope) tests that were added in the last release that fail on
Windows.
2.47 2015-08-06
- Really, really make per-thread locking work. Depending on when threads and
threads::shared were loaded, you might get an error like 'Type of arg 1 to
threads::shared::share must be one of $@% at .../Log/Dispatch/Syslog.pm line
67, near "$thread_lock)"'. Reported by David Schweikert.
- Added support for auth-related parameters and replyto to
Log::Dispatch::Email::MailSender. Implemented by Rohan Carly. Based on
GitHub #10.
- Added a utf8 flag for Log::Dispatch::Screen. If this is true, then it sets
the ":encoding(UTF-8)" flag on the handle it uses for output (without
affecting STDOUT or STDERR elsewhere). Suggested by Ivan Baidakou.
2.46 2015-08-05
- Really make the per-thread locking in the Syslog output work. Based on a
patch by David Schweikert. GitHub #9.
2.45 2015-06-14
- Don't include threads and threads::shared in list of dependencies. This is
only needed for Log::Dispatch::Syslog and is loaded at runtime as needed
(which has its own issues but ...). Reported by Kent Fredric. RT #103392.
2.44 2014-10-18
- The fix for a buffered email output in the last release introduced a bug
with _non-buffered_ email outputs. This would cause a fatal error during
global destruction when the DESTROY method was called. Reported by Christ
Hutchinson. RT #99474.
2.43 2014-10-05
- Fixed the thread locking in Log::Dispatch::Syslog (I hope). The previous
version caused Perl to crash when per-thread locking was enabled. Note that
I don't use threads so I haven't tested this. Patch by Sergio Fernández
Muñoz. RT # 99208.
- If a buffered email output is being destroyed during global destruction and
still has messages in the buffer, we warn and do not attempt to send the
messages. During global destruction, the package we use to send email may
already be destroyed, leading to weird errors when we try to use
it. Reported by Mark Overmeer. RT #97733.
- In 2.42 I added the ability to pass a hashref for the socket parameter given
to Log::Dispatch::Syslog, but I forgot to mention this here. This is
necessary to support remote logging. Patch by David Coppit. RT #93045.
2.42 2014-08-12
- Added a Log::Dispatch->clone() method. This returns shallow clone. The
outputs and callbacks are shared, but changes to outputs and callbacks in
the clone do not affect the original, or vice versa.
- Added Log::Dispatch->outputs() method. This returns all the output objects
in a dispatch object.
- Added Log::Dispatch->callbacks() method. This returns all the callback subs
in a dispatch object.
- The Syslog output now calls Sys::Syslog::setlogsock() every time a message
is logged, since something else could have called it in between logging two
messages.
- Added a lock parameter to the Syslog output. If this is true, then logging
is done in the scope of a per-thread lock. Reported by Cedric Carree and
Franck Youssef. RT #67988 and #85013.
- Replaced Class::Load with Module::Runtime.
2.41 2013-07-22
- An error is now thrown if you call Log::Dispatch->log without a
level. Previously you'd just get a warning and then execution would continue
(without logging anything). Patch by Ross Attrill. RT #87133.
2.40 2013-07-01
- Added a conflict entry for older Log::Dispatch::File::Stamped to the
metadata. Patch by Karen Etheridge. RT #86215.
2.39 2013-04-21
- You can now pass a port option to the MailSender output. Patch by Whitney
Jackson.
2.38 2013-04-14
- Fix test that used undeclared prereqs so it does not do that.
2.37 2013-04-14
- Moved Log::Dispatch::File constructor parameter validation moved to
_basic_init() to facilitate proper subclassing. Patch by ether. RT #84545.
2.36 2013-04-08
- Added a very simple Log::Dispatch::Code output. This lets you log to a
subroutine reference.
- Added Sys::Syslog 0.25 as a prereq. This is a temporary fix to the problem
of Log::Dispatch shipping lots of output modules with undeclared prereqs (so
as not to require mod_perl, four email sending modules, etc.). In the future
Log::Dispatch will be split into a core distro and a set of distros, one for
each output that has prereqs. Reported by Michael Schwern. RT #84481.
2.35 2013-01-20
- Added a big warning about the potential for deadlocks in the documentation
for Log::Dispatch::File::Locked. Patch by ether.
2.34 2012-12-08
- Fix a test bug that caused the tests to fail on all Perls before 5.16.0.
2.33 2012-12-07
- Added a 'syswrite' option to Log::Dispatch::File which causes all writes to
use syswrite (so they're atomic). Patched by ether. RT #81669.
- The File output's DESTROY method now checks to see if it's associated handle
is open before trying to close it. Patch by Jeffrey Thalhammer.
2.32 2012-05-24
- Fix a test failure - test failed if you had 0.16 <= Sys::Syslog < 0.25
installed.
- Added a kludgey test failure fix for failure on Cygwin. Patch by Christian
Carey. RT #77364.
2.31 2012-05-21
- Added missing prereq - Class::Load.
2.30 2012-05-20
- Remove Sys::Syslog as a prereq, since you can use this distro perfectly well
without it. Fixes RT #52065.
- You can now pass a subroutine reference to the sugar methods like
$dispatch->debug() and friends. Requested by Jeffrey Thalhammer. RT #77308.
- Calling sugar methods like $dispatch->warn or $dispatch->crit did not
normalize the log level, so the level would be passed to the outputs as
"warn", not "warning". Reported by Karen Etheridge. RT #77203.
2.29 2011-03-18
- Add is_$level methods for compatibility with Log::Contextual. Patch by frew.
2.28 2010-12-13
- The Log::Dispatch module still had version 2.26 in the last
release. Reported by Øyvind Skaar. RT #63876.
2.27 2010-10-16
- Fix docs on handling of arrays passed to ->debug, ->error, etc. Requested by
Andrew Hanenkamp. RT #61400.
- Allow an arrayref for the Syslog socket option. Requested by Paul
Bennett. RT #57631.
- License is now Artistic 2.0.
2.26 2009-09-22
- Doc updates. The 2.23 constructor API was still shown in all the output
subclasses. Fixed by Jon Swartz.
2.25 2009-09-15
- Added a workaround for a weird tainting issue with Params::Validate. This
caused a taint exception when a Log::Dispatch::Syslog was created under
taint mode. Note that there is still a problem in Params::Validate itself,
this is just a hack.
2.24 2009-09-13
- Simplified new constructor API (the 2.23 API is still silently supported but
not documented):
Log::Dispatch->new( outputs => [ [ 'File', ... ],
[ 'Screen', ... ],
]
);
Implemented by Jon Swartz.
- All of the mail sending modules now warn unconditionally if sending mail
fails. This removes the incorrect use of warnings::enabled() in some
modules. RT #43516.
2.23 2009-09-12
- New constructor API that simplifies creating your Log::Dispatch object.
Implemented by Jon Swartz.
- Made name parameter optional. We now auto-generate a unique name if one is
not given. Implemented by Jon Swartz.
- Added a newline parameter that causes a newline to be added to each message,
and updated the documentation regarding newlines. Implemented by Jon Swartz.
- Removed repetitive boilerplate documentation from each output
class. Implemented by Jon Swartz.
- The level_names and level_numbers used internally are now computed once and
shared between output objects. Implemented by Jon Swartz.
- Updated repo url - now at http://hg.urth.org/hg/Log-Dispatch
- Explicitly depend on Sys::Syslog 0.16.
- Added warn as a synonym for warning. RT #44821. Requested by Dylan Martin.
- Added an add_callback method to Log::Dispatch and
Log::Dispatch::Output. This lets you add a new formatting callback after an
object is created. Based on a patch from Ricardo Signes. RT #48283.
- The Log::Dispatch docs mistakenly told you to provide a log() method when
creating a new output class. RT #40561.
- Made all modules have the same version as Log::Dispatch itself.
2.22 2008-11-11
- Fixed a bug where Log::Dispatch::Email would die when it tried to
log under taint mode. Patch by Neil Hemingway. RT #40042.
- Fixed a misuse of warnings::enabled(). Reported by Darian
Patrick. RT #39784.
- Syslog logging now requires Sys::Syslog 0.16+.
- If you don't pass a socket argument to Log::Dispatch::Syslog, it
does not call Sys::Syslog::setlogsock(), which is the preferred
option for portability.
* If any of the syslog calls die, this is trapped and the error is
output as a warning if warnings are on. This is mostly a workaround
for Sys::Sylog not handling utf-8. RT #35270 & #37397.
This isn't backwards-compatible, but it's probably wrong for the
logging code to die because it can't log (even though some other
output modules still do).
2.21 2008-02-06
- Added log_and_die() and log_and_croak() methods. Patch by Yuval
Kogman.
2.20 2007-11-02
- One of the tests failed on Perl 5.6.x. Thanks to Slaven Rezic for
the report.
2.19 2007-11-01
- Switched to providing a traditional Makefile.PL as well as a
Build.PL file. RT #27208.
- When permissions are specified for a Log::Dispatch::File object,
don't try to chmod the file unless the permissions of the file
differ from what the file already has. Based on a patch by Kevin. RT
#28151.
- Require at least Perl 5.6.0.
- Remove the tests for the email sending and exit codes, since the
test had a heisenbug I could not understand. I _think_ the code in
the email modules is correct, but the test isn't proving anything.
- Added a binmode parameter for Log::Dispatch::File. Based on a patch
by Angelo. RT #26063.
2.18 2007-05-12
- Log::Dispatch::ApacheLog should really now work under mod_perl 2, as
well as mod_perl 1. RT #26910.
2.17 2007-03-31
- Log::Dispatch::ApacheLog should now work under mod_perl 2, as well
as mod_perl 1.
2.16 2010-10-16
- Don't require IO::String for running the tests. Reported by Andreas
Koenig. RT #23973.
- Moved Test::More to build_requires. Suggested by Andreas Koenig. RT
#23973.
2.15 2006-12-16
- Don't try to test compilation of L::D::Syslog unless Sys::Syslog is
available. Patch by Kenichi Ishigaki. RT #23751.
- Allow a subroutine reference as a log message when callin
Log::Dispatch->log(). Suggested by Craig Manley. RT #23913.
- Added Log::Dispatch::Null output, primarily for testing.
2.14 2006-11-18
This release only involves changes to the test suite.
- Make sure we don't fail if Apache::Log is not installed on the
system. RT #22791. Reported by Lee Goddard.
- Separated out compilation tests from other tests.
2.13 2006-09-25
- No code changes, just added a SUPPORT section to the docs referring
folks to RT for bug reports & patches.
2.12 2006-08-09
- The various email sending modules could overwrite if they were in
buffered mode and they sent mail as a script exited. Reported by
Dean Kopesky.
- Doc tweaks. Make reference to "Log Levels" section in output module
docs more explicit. RT #11224.
2.11 2005-07-27
- In tests, make sure filehandles are closed before reading or
unlinking the file. Patch from Ron Savage.
2.10 2004-02-11
- No changes to the core code, just a change to the included
Makefile.PL so it works with Module::Build 0.23, which breaks
backwards compatibility (grr).
- Fix a doc bug in Log::Dispatch::Syslog. It defaults to using a unix
socket, not an inet socket.
2.09 2004-01-09
- Fix a test failure on Win32 platforms. The problem was in the test,
not the code. Patch by David Viner.
- Distro is now signed with Module::Signature.
2.08 2003-11-27
- Added Log::Dispatch->would_log method, which indicates whether
logging will be done for a given log level. Suggested by Ruslan
Zakirov.
- Switched tests to use Test::More.
2.07 2003-09-27
- Added Log::Dispatch::File::Locked. Based on code from JAA Klunder.
- Check all system call return values.
- Fix warning from Log::Dispatch::File if it was loaded after
Attribute::Handlers. Reported by Mike Schilli.
- Fixed up POD to pass pod tests.
2.06 2003-05-01
"Arise ye workers from your slumbers
Arise ye criminals of want
For reason in revolt now thunders
and at last ends the age of cant."
- Added a permissions parameter to Log::Dispatch::File->new. Based on
a patch from James FitzGibbon.
2.05 2003-04-18
- Changed a code construct that seems to provoke a bug for Meng Wong,
but no one else ;)
- Switched to Module::Build and removed interactive portion of
installation process.
- Log::Dispatch::Email::MailSender was causing Mail::Sender to send
debug output to STDERR if warnings were on. Now it's not.
2.04 2003-03-21
- The close_after_write option didn't actually do anything. Fixed by
JAA Klunder.
2.03 2003-02-27
- Log::Dispatch::ApacheLog would break if a log level was specified as
a number. Reported by Kevin Goess.
2.02 2003-02-20
- Added close_after_write option to Log::Dispatch::File. Based on
patch from JAA Klunder.
2.01 2002-06-21
- Added new module Log::Dispatch::Email::MailSender, provided by
Joseph Annino.
- Log::Dispatch::Output now contains "use Log::Dispatch".
- Now requires Params::Validate, which is used to validate parameter
for constructors and some other methods.
- Add an 'autoflush' option to Log::Dispatch::File objects. Suggested
by Jerrad Pierce.
- Added some error checking to ::Email::MailSend.
- Changed a carp to a warn in ::Email::MailSendmail.
- Only warn if $^W is true.
2.00 2002-04-11
** BACKWARDS INCOMPATIBILITY ALERT **
- Use a standard hash reference for objects instead of pseudo-hashes.
** THIS MAY BREAK EXISTING SUBCLASSES **.
- Log::Dispatch::Screen claimed it defaulted to using STDERR but it
was lying, it defaulted to using STDOUT. This has been changed so
that it really does default to STDERR. Reported by James
FitzGibbon.
1.80 2001-10-27
- Log::Dispatch::Syslog no longer requires syslog.ph for Perl >=
5.006. Patch by Benoit Beausejour.
- If you passed a mode parameter to Log::Dispatch::File it always
thought the mode was append, no matter what was passed. Patch from
Luke Bakken.
- Log::Dispatch::File no longer uses IO::File internally.
1.79 2001-05-15
- Don't use $, internally. Apparently this is usually undefined.
Instead, the convenience methods now simply take an array of
messages and turn it into a scalar by doing "@_". Thanks to Dean
Kopesky for the bug report.
1.78 2001-04-19
- Allow ApacheLog to take either an Apache or Apache::Server object.
- Fix callback documentation in Log::Dispatch::Output. Thanks to Rob
Napier.
- Add flush method to Log::Dispatch::Email. Patch submitted by Rob
Napier.
1.77 2001-01-02
- The convenience methods named after the log levels ($log->debug,
$log->alert, etc.) can now take a list of scalars. These are joined
together just like Perl's print function does. Suggested by Tim
Ayers.
1.76 2000-10-10
- New method: Log::Dispatch->level_is_valid($string). Suggested by
Jeff Hamman.
- Fix for version issues between CPAN versions of
Log::Dispatch::ApacheLog. Reported by Jost Krieger.
1.75 2000-09-28
- Additional argument 'level' passed to message processing callbacks.
Suggested by Jeff MacDonald.
- Log/Dispatch.pm: added docs section on Log::Dispatch::Tk.
1.7 2000-08-30
- Added Log/Dispatch/ApacheLog.pm. This logs to the Apache error log.
This is for use under mod_perl.
1.6 2000-07-04
NOTE: 1.5 was never released to CPAN.
- Log/Dispatch.pm: Added convenience methods for log levels like
$dispatcher->alert($message). Suggested by Dominique Dumont.
- This version introduces some changes into the interface that will
cause incompatibility with any Log::Dispatch::Output interface you may
have created. However, it is fairly simple to fix. Simply change the
method in your subclass named 'log' to be called 'log_message'. You
can also remove the line:
return unless $self->_should_log($params{level});
This is now done before the message ever gets to the Output subclass
(which is what it should have done in the first place, really.)
This was done so that I could allow per-Output object callbacks, a
feature which several people have requested and which seems useful
enough to warrant the breakage.
NOTE: This change is transparent if you are only using the Output
objects included with this distribution.
- Many: Changed the interface to allow per-Output object level
callbacks and documented this.
- Log/Dispatch/Base.pm: new base class for both Log::Dispatch and
Log::Dispatch::Output objects (contains callback related code). You
should never need to deal with this class unless you are me.
- Log/Dispatch/Output.pm: document _accepted_levels.
- Log/Dispatch/Output.pm: Fix _accepted_levels so that emergency level
is returned as 'emergency', not 'emerg'.
- Log/Dispatch.pm: Fix doc bug (change 'file' to 'filename'). Thanks
to Clayton Scott.
- Log/Dispatch/File.pm: Do compile time check for O_APPEND constant
rather than run time check.
1.2 2000-05-05
- Log/Dispatch.pm: Added callbacks parameter to Log::Dispatch->new. I
will also be adding this to the Log::Dispatch::* classes via
Log::Dispatch::Output but I wanted to get this new version out there
because I think there are people out there who would benefit from
this.
- Log/Dispatch.pm: Added docs section on why Log::Dispatch doesn't add
newlines to outgoing messages.
1.11 2000-02-24
- Realized I need to tweak the $VERSION in Log::Dispatch
1.1 2000-02-24
- Upped version to 1.1 to indicate my confidence in this release (I'm
just asking for bug reports, I know).
- Added accepted_levels method to Log::Dispatch::Output based on
discussions with Dominique Dumont (author of the Log::Dispatch::Tk
suite).
- Canonical names for log levels are now the unabbreviated form
(though the abbreviated ones used by syslog are still fine and there
is no plan to deprecate them). This really only affects what is
returned by the new accepted_levels method.
1.010 2000-01-17
- Fixed a bug in the DESTROY method of Log::Dispatch::Email that
caused an annoying error and may have caused spurious emails to be
sent (thanks to Radu Greab).
- Fixed a bug in Log::Dispatch::Email::MailSendmail. For some reason
this module demands a 'from' address.
1.009 2000-01-02
- Created this version simply to address an issue with CPAN and my
internal version numbers having a conflict. This has no changes
from 1.008.
1.008 1999-12-30
- Fixed a bug causing unitialized value warnings with -w (oops).
- Fixed a minor mistake in Log::Dispatch::Syslog docs (thanks to Ilya
Martynov)
- Put newlines into messages in SYNOPSIS sections for some modules.
This is to clarify that you need to do this. Just to be clear,
Log::Dispatch does not alter message content in any manner
whatsoever (and never will). However, it would be trivial to
subclass Log::Dispatch to do this.
1.007 1999-12-01
- First public release. It passes its own test suite so it should
work (he says hopefully).