Revision history for Log-Any
** denotes an incompatible change
1.717 2023-08-17 10:52:21-05:00 America/Chicago
[Fixed]
- Fixed WithStackTrace proxy to remove arguments in-place instead of
always stringifying the exception object immediately. This means we
need to handle different exception objects differently, but it also
means a better log message. Thanks @larryl and @GrantStreetGroup for
submitting this fix! [Github #100]
1.716 2023-06-26 14:14:46-05:00 America/Chicago
[Added]
- Added a parameter to show stack trace arguments when using the
WithStackTrace proxy. Since these arguments may contain sensitive
information, they are now removed by default. Thanks @sam-ng and
@GrantStreetGroup for submitting this patch! [Github #97]
1.715 2023-05-04 13:09:22-05:00 America/Chicago
[Fixed]
- Fixed Multiplex adapter losing context details. Normally, the
Log::Any::Proxy joins all of the arguments passed in to a logging
method if the adapter it's using does not support structured data.
Multiplex supports structured data, but one of the adapters inside
may not. So, the Multiplex adapter must also perform this
concatenation to avoid losing those additional arguments.
Thanks @jrubinator and @GrantStreetGroup for discovering this bug
and providing the fix! [Github #95]
1.714 2023-03-20 11:48:30-05:00 America/Chicago
[Fixed]
- Fixed Syslog adaptor losing ident and facility information if
another library wrongly calls Sys::Syslog::closelog(). This is not
a perfect solution, but a perfect solution can only ever be to fix
the close that's calling closelog() :P
Thanks to Tom Christiansen and @GrantStreetGroup for reporting this
issue and providing the fix.
1.713 2022-12-12 12:44:52-06:00 America/Chicago
[Fixed]
- Fixed tests failing due to missing Devel::Stacktrace. This is an
optional module, so we do not explicitly depend on it. Thanks
@dbevans and @perlpunk for reporting this issue! (Github #93)
1.712 2022-12-09 11:05:10-06:00 America/Chicago
[Added]
- Added `Log::Any::Proxy::WithStackTrace` to provide a stack trace at
the caller site. Thanks @larryl and @GrantStreetGroup for providing
this feature!
[Other]
- Removed Travis, as they stopped supporting free Github repos :(
1.711 2022-11-22 11:28:01-06:00 America/Chicago
[Fixed]
- Fixed proxy not exposing 'category' attribute (#86). Thanks
@andrew-grechkin!
- Fixed not being able to get a proxy for the "root" category (empty
string) (#90). Thanks @XSven!
1.710 2021-08-02 10:11:33-05:00 America/Chicago
[Other]
- Removed explicit declaration of core dependencies to improve user
experience
1.709 2021-02-17 15:16:20-06:00 America/Chicago
[Added]
- Added "Log::Any->has_consumer" for the rare case where one needs
to know if a consumer has already been configured.
1.708 2020-01-12 22:56:43-05:00 America/New_York
[Added]
- Added 'Capture' adapter for capturing log messages in an array or
running an arbitrary callback. This makes it easier to test log
messages, collect messages from a certain scope for later display.
Thanks @nrdvana! [Github #77]
- Added Log::Any::Adapter 'get' class method to get an adapter for
a category. This allows bypassing the Proxy and using the Adapter
directly. Doing so breaks all the features enabled by a Proxy, and
so should only be used in special circumstances (definitely not in
CPAN modules). Thanks @nrdvana! [Github #78]
- Added 'Multiplex' adapter for directing log output to one or more
Log::Any adapters. This allows, for example, basic logging to
Stderr and logging to a remote Syslogd or Elastic. Thanks
@jrubinator and @GrantStreetGroup for contributing this!
[Github #79, Github #16]
1.707 2018-08-01 22:55:01-05:00 America/Chicago
[Fixed]
- The local context hash (`$log->context`) and the log hash
(`$log->$level( $message, $hash )`) now get merged correctly,
combining contextual logging and structured logging. Thanks
@mephinet! [Github #76] [Github #73]
1.706 2018-07-06 20:20:00-05:00 America/Chicago
[Fixed]
- The File, Stderr, and Stdout adapters now correctly allow being
set to the "emergency" log level threshold. Previously, trying to
only allow "emergency" log lines would result in all logs being
written (and a warning about an invalid log level being set).
Thanks @alabamapaul! [Github #74]
1.705 2018-01-17 13:49:22-06:00 America/Chicago
[Fixed]
- Fixed the `binmode` attribute of the File adapter not working
properly. Thanks @MadLord80! [Github #72]
1.704 2017-12-17 18:13:33-06:00 America/Chicago
[Fixed]
- Fixed some invalid POD and added a test to ensure POD validity
before release. Thanks @shlomif! [Github #67][Github #68]
- Improved performance when no work needed to be done. Thanks
@mephinet! [Github #70]
1.703 2017-11-29 10:56:17-06:00 America/Chicago
[Fixed]
- Fixed log format methods (errorf, warnf, infof, etc...) not
returning the formatted message sometimes. Thanks @vshekun!
[Github #64]
1.702 2017-11-28 15:18:40-06:00 America/Chicago
[Fixed]
- Fixed log output disappearing when the `default_adapter` is set.
Thanks @dallaylaen! [Github #65]
1.701 2017-10-02 14:36:51-05:00 America/Chicago
[Fixed]
- Fixed more method aliases in Log::Any::Adapter::Syslog that were
mapped to invalid syslog priorities. Thanks @legaultp for the
patch!
1.700 2017-09-28 16:59:22-05:00 America/Chicago
[Fixed]
- Fixed version of Log::Any::Adapter::Syslog so that installing it
will also install the rest of Log-Any.
- Fixed method aliasing in Log::Any::Adapter::Syslog for "error"
log method. Thanks @legaultp for the patch!
1.051 2017-08-06 20:41:53-05:00 America/Chicago (TRIAL RELEASE)
[Fixed]
- LOG_ANY_DEFAULT_ADAPTER now correctly logs to the given adapter.
Previously, if no other adapter was set, Log::Any used its
default, super-fast "Null" proxy that simply drops all messages
without checking adapters. Now Log::Any will correctly detect the
environment variable and create the correct, normal proxy object.
Thanks @tm604 for the report and @mephinet for the patch!
1.050 2017-08-03 22:28:37-05:00 America/Chicago (TRIAL RELEASE)
[Added]
- Added structured logging to easily log single hash references in
a parsable format. Thanks @mephinet!
- Added contextual logging to attach information to log messages
based on the current context.
For example, all log messages being generated by a particular HTTP
request could be logged with the URL, even if they're from a part
of the application that doesn't know what HTTP is.
This is very similar to Log::Log4perl's Mapped Diagnostic Context.
Thanks @mephinet!
1.049 2017-03-28 16:02:10-05:00 America/Chicago
[Fixed]
- Fixed failing tests on Windows because of path separator
interpolation. Thanks @nanis [Github #56]
- Added explicit core dependency on Sys::Syslog in case of Perls
with non-standard core libraries. Thanks @nanis [Github #57]
1.048 2017-03-27 15:16:12-05:00 America/Chicago
- No changes since 1.047 trial release
1.047 2017-03-22 20:22:47-05:00 America/Chicago (TRIAL RELEASE)
[Fixed]
- Fixed backwards-compatibility with users using the Unix::Syslog
macros in Log::Any::Adapter::Syslog. This requires that the user
have Unix::Syslog installed (which Log::Any does not explicitly
depend on).
- Log level aliases are now case-insensitive to match the regular
log levels. Prior to this, "WARNING", "Warning", and "warning"
would all work, but "WARN", and "Warn" would not, only "warn".
Thanks to @0x62ash for reporting this issue. [Github #55]
- Invalid log levels for the File, Stderr, and Stdout adapters now
result in a warning, and the default level of "trace" is used.
Previously, no warning would be issued and no logs would be
generated. Thanks to @0x62ash for reporting this issue. [Github
#55]
1.046 2017-01-11 21:22:57-06:00 America/Chicago (TRIAL RELEASE)
[Added]
- The Syslog adapter is now part of the core distribution, since it
relies only on core Perl modules.
1.045 2016-11-11 21:52:46-06:00 America/Chicago
- No changes from previous (trial) release 1.044
1.044 2016-11-06 15:30:35-06:00 America/Chicago (TRIAL RELEASE)
[Fixed]
- Imported log object can now be called anything instead of just
`$log`. This means `use Log::Any '$LOG'` or `use Log::Any '$foo'`
now work.
1.043 2016-11-03 21:31:18-05:00 America/Chicago (TRIAL RELEASE)
[Fixed]
- Objects that overload stringification are now stringified
correctly (instead of run through Data::Dumper). Thanks @mephinet!
1.042 2016-08-26 23:37:33-05:00 America/Chicago
[Added]
- Default adapters can now be configured with arguments (thanks
@bjakubski!)
1.041 2016-08-18 00:00:10-05:00 America/Chicago (TRIAL RELEASE)
[Added]
- Logging methods now return the formatted log string so that it can
be used in a `die` or `warn` call.
[Changed]
- A new default log proxy (Log::Any::Proxy::Null) is used when there
are no adapters configured (and so no place for logs to go). This
proxy does no processing and is about 1000% percent faster on my
laptop.
[Fixed]
- Suppress 'redundant argument' warnings if too many arguments are
given to a log formatting string.
1.040 2016-02-24 17:47:00-05:00 America/New_York
[Fixed]
- Fixed duplicated documentation sections.
1.038 2016-02-10 14:15:31-07:00 America/Mazatlan
- No changes from 1.037
1.037 2016-02-05 20:22:34-05:00 America/New_York (TRIAL RELEASE)
[Fixed]
- Fixed t/filescreen.t Unicode string tests to use a backwards
compatible form. Should fix tests before 5.16.
1.035 2016-02-04 14:47:20-05:00 America/New_York (TRIAL RELEASE)
[Changed]
- The default formatter now replaces a code reference argument with
the results of calling the code reference ONLY when it is the first
argument (in place of a format string). Code references in
subsequent arguments (to sprintf) are not executed, as this would
break backwards compatibility.
[Documented]
- Noted that repeatedly calling 'set' to set an adapter without calling
'remove' or using the 'lexically' feature will leak memory.
1.033 2016-02-03 10:32:57-05:00 America/New_York (TRIAL RELEASE)
[Added]
- The default formatter now expands code references. If the first
argument is a code reference, it is expanded and returned. If an
argument to "sprintf" style formatting is a code reference, it is
expanded.
[Changed]
- The File adapter now opens files with the ":utf8" layer. It also
takes a 'binmode' attribute to change the default.
[Fixed]
- does_not_contain_ok test adapter function now gives proper
diagnostic message
- all diagnostic messages that output the captured log now
correctly dump the log with pretty formatting
[Documented]
- documented the 'proxy_class' argument to `get_logger`
[~Internal~]
- Data::Dumper is loaded lazily, to reduce module load times
for programs that don't need it.
1.032 2015-03-26 17:23:37-04:00 America/New_York
- no changes from 1.031
1.031 2015-03-26 06:08:17-04:00 America/New_York (TRIAL RELEASE)
[Fixed]
- Log::Any::Adapter::Test passed through all constructor arguments,
which could be fatal when mocking adapters without all key-value
pairs (like Log::Any::Adapter::File); now this only passes through
the category and ignores other parameters when used as an
adapter class override.
1.03 2015-01-01 22:39:41-05:00 America/New_York
[Changed]
- Log::Any::Proxy concatenates arguments to basic logging functions
with a space character before passing them to adapters as a single
string. This ensures consistency across adapters that handle
multiple arguments differently.
1.02 2014-12-28 07:06:49-05:00 America/New_York
[Fixed]
- Some adapters relied on Log::Any::Adapter::Util also loading
Log::Any so this behavior has been restored.
1.01 2014-12-26 22:25:13-05:00 America/New_York
[Fixed]
- 'numeric_level' was not exported properly from
Log::Any::Adapter::Util
1.00 2014-12-25 22:04:13-05:00 America/New_York
[Added]
- Logging now goes via a Log::Any::Proxy object instead of directly to
an adapter. This allows easy customization of the message production.
- File, Stdout, and Stderr adapters now support a minimum
log level parameter.
[Changed]
- Removed dead code from Log::Any::Adapter::Base; particularly this
was the formatting code, since this is now handled by
Log::Any::Proxy.
[Fixed]
- File will flock the handle when writing (if flock is avaiable).
- Won't die if adapters aren't loadable modules as long as they
provide a constructor. This allows using private adapters
defined in another file.
[Documented]
- Revised docs for creating adapters
- Fixed typos and improved docs for Log::Any::Adapter::Util; removed
stub docs for modules that didn't need it.
[Deprecated]
- Deprecated some methods in Log::Any::Adapter::Util
[Internal]
- Merged Log-Any and Log-Any-Adapter distributions; reduces code
duplication and ensures Log::Any and adapter framework stay in sync
- Eliminates all non-core dependencies (as of Perl 5.8.1), including
Capture::Tiny, Devel::GlobalDestruction and Guard
0.92 2014-12-15 07:12:38-05:00 America/New_York (TRIAL RELEASE)
0.91 2014-12-14 22:13:09-05:00 America/New_York (TRIAL RELEASE)
0.90 2014-12-12 17:08:22-05:00 America/New_York (TRIAL RELEASE)
0.15 Apr 10, 2013
* Fixes
- Hide 'package Log::Any::Adapter' from PAUSE/Module::Metadata - miyagawa
0.14 Aug 31, 2011
* Fixes
- Fix version number in Log/Any.pm - Stephen Thirlwall
0.13 Aug 2, 2011
* Fixes
- Fix typo in lib/Log/Any/Adapter/Test.pm - RT #69850 - Stephen Thirlwall
0.12 Mar 23, 2011
* Fixes
- Return false from null adapter is_xxx methods - RT #64164 - Chip Salzenberg
- Eliminate 'subroutine redefined' warning in case Log::Any::Adapter loaded before
Log::Any::Test
* Implementation
- Migrate to Dist::Zilla
0.11 Feb 12, 2010
* Improvements
- Add trace level - suggested by Szymon Swierkosz
0.10 Jan 5, 2010
* Fixes
- Fix Log::Any::Core to support references in printf-style methods
0.09 Jan 5, 2010
* Improvements
- Convert undef to string "<undef>" in printf-style methods - RT #53398, suggested by Steven Haryanto
0.08 Dec 15, 2009
* Fixes
- Fix Log::Any::Test to support full logging API (aliases and printf methods)
0.07 Dec 7, 2009
* Implementation
- Depend on Test::Simple rather than Test::More
* Improvements
- Add Log::Any::Test, to aid in testing code that uses Log::Any
0.06 Oct 31, 2009
* Fixes
- Implement Log::Any->set_adapter again for backward compatibility with 0.04 and earlier
0.05 Oct 27, 2009
* Implementation
- ** Strip Log::Any down to a relative minimum, so as to keep it stable and
unchanging. Move everything else to Log::Any::Adapter.
0.04 Sep 3, 2009
* Fixes
- Replace Test::Deep::cmp_deeply with an internal version to avoid Test::Deep dependency
0.03 Jul 17, 2009
* Improvements
- Eliminated extra '::Log' from adapter names, e.g. Log::Any::Adapter::Log::Dispatch is
now Log::Any::Adapter::Dispatch. The long name was properly descriptive but was making
me wince every time.
0.02 Jul 14, 2009
* Fixes
- Fix logging aliases like warn => warning
* Implementation
- Eliminate unnecessary Test/InternalOnly.pm class
- Precompute alias and method lists like Log::Any->logging_methods
0.01 Jul 11, 2009
- Initial version