The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Log::ger::Plugin::OptAway - Optimize away log statements

VERSION

version 0.009

SYNOPSIS

 use Log::ger::Plugin->set('OptAway');
 use Log::ger;

To demonstrate the effect of optimizing away:

 % perl -MLog::ger -MO=Deparse -e'log_warn "foo\n"; log_debug "bar\n"'
 log_warn("foo\n");
 log_debug("bar\n");
 -e syntax OK

 % perl -MLog::ger::Plugin=OptAway -MLog::ger -MO=Deparse -e'log_warn "foo\n"; log_debug "bar\n"'
 log_warn("foo\n");
 '???';
 -e syntax OK

To optimize away all levels:

 use Log::ger::Plugin 'OptAway', all=>1;

DESCRIPTION

This plugin replaces logging statements that are higher than the current level ($Log::ger::Current_Level) into a no-op statement using B::CallChecker magic at compile-time. The logging statements will become no-op and will have zero run-time overhead.

By default, since $Current_Level is pre-set at 30 (warn) then log_info(), log_debug(), and log_trace() calls will be turned into no-op.

If the configuration "all" is set to true, however, logger routines for all levels will be turned into no-op.

Caveats:

  • must be done at compile-time

  • only works when you are using procedural style

  • once optimized away, subsequent logger reinitialization at run-time won't take effect

CONFIGURATION

all

Boolean. If set to true, will optimize away all levels, including multi-level logger routines. This is an easy way to disable all logging.

By default, only levels above the current level ($Log::ger::Current_level) will be optimized away.

SEE ALSO

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2020, 2018, 2017 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.