0.040   2022-06-10  Released-By: PERLANCAR; Urgency: low

        - No functional changes.

        - Edit Changes to add Backward-Incompatible metadata.

0.039   2022-06-10  Released-By: PERLANCAR; Urgency: low

        - No functional changes.

        - [doc] Tweak Log::ger's Synopsis to make the code more explanatory.

        - [internals] Replace 'use var' with 'our' as the former is discouraged
          in 5.006+ (thanks James Raspass).

0.038   2021-01-31  Released-By: PERLANCAR; Urgency: medium

	- Rename Log::ger::Plugin::MultilevelLog to the more appropriate
	  Log::ger::Format::MultilevelLog, so use-ing it affects the current
	  package only. The old name is still available but deprecated and will
	  be removed in the future.

0.037   2020-03-11  Released-By: PERLANCAR; Urgency: high; Backward-Incompatible: yes

        - [Incompatible change] Bump meta version to 2 to force all plugins
          to be upgraded to comply to Log::ger >0.032.

0.036   2020-03-10  Released-By: PERLANCAR; Urgency: medium

	- Add _import_to() to easily import to an arbitrary package.

0.035   2020-03-10  Released-By: PERLANCAR; Urgency: medium

	- Support perl < 5.22 (no warnings category 'redundant' yet)

0.034   2020-03-09  Released-By: PERLANCAR; Urgency: medium

	- Add meta() and check meta version so in the future we can reject
	  plugins that are not up-to-date.

0.033   2020-03-07  Released-By: PERLANCAR; Urgency: medium

	- Rename things for clarity. 1) routine types: log_{sub,method} ->
	  logger_{sub,method}, is_{sub,method} -> level_checker_{sub,method}
	  (old names still accepted for now). 2) hooks: create_is_routine ->
	  create_level_checker, create_log_routine -> create_outputter (old
	  names still accepted for now). This avoids confusion between "logger
	  routine" (the final routine that gets installed to target) vs
	  "outputter" (the routine that does actual sending to output, provided
	  by output plugins). The "is routine" was also a bad name.

0.032   2020-03-06  Released-By: PERLANCAR; Urgency: medium; Backward-Incompatible: yes

        - Introduce filters as a way to do custom filtering as well as to
          extract additional information from the original logger arguments,
          e.g. so we can do multilevel log(level=>..., message=>...), pass
          category log(category=>..., ...) and so on.

        - [INCOMPATIBLE CHANGE] [removed feature] Remove multilevel (logml)
          stuffs and reimplement them with filters: remove logml_{subs,methods}
          routine types, remove create_logml_routine phase, remove ArrayML
          output. All outputs/plugins that provide create_logml_routine will
          stop working and will need to be updated.

        - [INCOMPATIBLE CHANGE] Rename some hook arguments passed to plugin for
          clarity: target -> target_type, target_arg -> target_name, init_args
          -> per_target_conf.

        - Merge Log::ger::Format::Default from Log-ger-Default-Format.

        - Rename variables/terminologies to be clearer: target -> target type,
          target arg -> target name, init args -> per-target conf. We also now
          have per-message conf, produced by filter.

0.031   2020-03-04  Released-By: PERLANCAR; Urgency: medium

	- Allow each routine to have its own init args; this allows e.g.
	  creating multiple sets of logger subroutines that log to
	  different categories, as implemented in

	- Silence 'Redundant argument in sprintf' warning.

	- [doc] Tweak to make module name and version clearer [GH #2].

0.030   2020-02-18  Released-By: PERLANCAR; Urgency: low

	- No functional changes.

	- [doc] Tweak Synopsis, at least show how to set level & pick
	  multiple outputs.

0.029   2020-02-18  Released-By: PERLANCAR; Urgency: low

        - No functional changes.

	- [dist] Mark default formatter block using # BEGIN_BLOCK .. # END_BLOCK
          so it can be extracted by Dist::Zilla plugin

0.028   2019-05-06  Released-By: PERLANCAR

	- Use Data::Dumper's Useqq=1 to show unprintable characters.

0.027   2019-04-13  Released-By: PERLANCAR

	- Fix startup overhead regression by avoiding to load Sub::Name &
	  name routines if we don't have any outputs.

0.026   2019-04-12  Released-By: PERLANCAR

        - UPDATE 2019-04-13: This version has startup overhead regression. You
          might want to update to 0.027.

	- Name the generated routines with Sub::Name if available.

	- Remove declaration of unneeded variable $Caller_Depth_Offset.

0.025   2018-12-20  Released-By: PERLANCAR

	- No functional changes.

	- [doc] Mention Debug::Print.

	- [doc] Also mention speed relative to Log::Contextual.

0.024   2018-12-20  Released-By: PERLANCAR

	- No functional changes.

	- [doc] Mention that Log::ger is ~100x faster than Log::Dispatch.

0.023   2017-08-03  Released-By: PERLANCAR

        - [Internal] Change the numeric values of level, to accomodate more room
          for custom levels.

	- Defer set default null routines so other module can customize

0.022   2017-08-03  Released-By: PERLANCAR

	- [Bugfix] Fix stupid copy-paste mistake [RT#122687].

	- [doc] Fix copy-paste mistake [RT#122689].

0.021   2017-08-02  Released-By: PERLANCAR

	- [Bugfix] Output, Layout: set() now properly replaces hooks from
	  previous output/layout plugin (need to remove from all phases).

        - Add output for testing: ArrayML.

0.020   2017-07-30  Released-By: PERLANCAR

	- [ux] Enable $Data::Dmp::OPT_REMOVE_PRAGMAS.

0.019   2017-07-14  Released-By: PERLANCAR

	- [Bugfix] Forgot to create preconstructed default null-loggers for
	  object target.

0.018   2017-07-14  Released-By: PERLANCAR

	- 'use Log::ger::Format "Foo"' now sets for current package instead of
	  globally (but the other plugins like Log::ger::Output or
	  Log::ger::Layout still defaults to setting globally).

0.017   2017-07-13  Released-By: PERLANCAR

        - No functional changes.

        - [doc] Update some benchmark numbers.

0.016   2017-07-13  Released-By: PERLANCAR

	- Reduce startup overhead by splitting some parts of Log::ger to
	  Log::ger::Heavy. When user loads modules that have 'use Log::ger', but
	  never adds any outputs (which is a pretty common case when user just
	  uses a module without setting up any logging), then we can cheat by
	  skipping init_target() and just installs the null, default-named
	  logging routines. So we split the part that does real init_target() to
	  Log::ger::Heavy, similar to how Carp & Carp::Heavy was split. This
	  reduces startup overhead significantly. When user loads Log::ger::Util
	  (e.g. to run set_plugin()) or when some hooks are added, then we load

0.015   2017-07-12  Released-By: PERLANCAR

	- [Bugfix] Used the wrong key to get per-object hooks.

0.014   2017-07-11  Released-By: PERLANCAR

	- Pass 'formatters' and 'layouter' arguments to
	  before_install_routines hook.

0.013   2017-07-11  Released-By: PERLANCAR

	- Allow multiple formatters.

0.012   2017-07-02  Released-By: PERLANCAR

	- [optimize] init_target: Reuse multilevel log routine from hook
	  for log routines of all levels.

	- [Bugfix] Fix string level passed to layouter when logger is a
	  multilevel logger.

0.011   2017-06-30  Released-By: PERLANCAR; Backward-Incompatible: yes

        - [Incompatible change] In hook argument "routines", change $flags to
          $type to be more general. The value can be 'log_sub', 'log_method',
          'logml_sub', 'logml_method', 'is_sub', 'is_method'.

        - Support multilevel log statement log($level, ...) by using
          LGP:MultilevelLog (included in core distribution).

        - [Internal] Introduce phase 'create_logml_routine'.

        - [Test] Add test for LG:Format::None.

        - [Bugfix] reinit_target() didn't find the correct hash key.

0.010   2017-06-28  Released-By: PERLANCAR

	- [Bugfix] Don't install log methods to package (vice versa, don't
	  install log subroutines to object package).

	- [doc] Remove mention of filter.

0.009   2017-06-28  Released-By: PERLANCAR

        - Remove Log::ger::Filter and 'create_filter' phase because they are

        - Add Layout.

        - Add formatter: None.

0.008   2017-06-26  Released-By: PERLANCAR

	- Util: Add string_level().

0.007   2017-06-25  Released-By: PERLANCAR

	- Add custom level test.

	- Add output: Array.

0.006   2017-06-24  Released-By: PERLANCAR

	- [Bugfix] Use the correct package when initializing object.

0.005   2017-06-23  Released-By: PERLANCAR; Backward-Incompatible: yes

        - [Incompatible change] Another round of internal refactoring and
          interface changes. New: Log::ger::{Plugin,Format,Filter}. Every plugin
          (including filter, format, output) can be set on a per-target basis or
          globally. The term 'hooks' is in again. Add 'create_routine_names'
          phase. Remove 'after_create_log_routine',
          'after_create_log_is_routine'. Move FAQ & internals doc to
          Log-ger-Manual dist.

0.004   2017-06-21  Released-By: PERLANCAR

	- [Bugfix] Log::ger::Output didn't have VERSION.

0.003   2017-06-21  Released-By: PERLANCAR

	- Split Log::ger::Output::Screen to its own dist so this dist can be
	  more minimalist and that module can be tested e.g. with Capture::Tiny

	- String output: add option append_newline to allow disable
	  appending newline.

	- import(): No need to turn category 'Foo::Bar' -> 'foo.bar'.

	- [doc] Update module name Log::ger::LogAny -> Log::ger::Output::LogAny.

0.002   2017-06-21  Released-By: PERLANCAR; Backward-Incompatible: yes

        - [Incompatible change] Reorganize internals & fix a couple of doc

        - Add outputs: Null, String (mainly for testing).

        - Formatter: format undef as '<undef>' like in Log::Any.

        - Screen output: Add hooks for
          Progress::Any::Output::TermProgressBarColor, like in

        - Add some tests.

0.001   2017-06-19  Released-By: PERLANCAR

        - First release.