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

- 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

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

- 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

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

- 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

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

- 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


- Use a standard hash reference for objects instead of pseudo-hashes.

- 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

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

- Add flush method to Log::Dispatch::Email.  Patch submitted by Rob

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

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

- 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

- 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

- 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).