NAME Log::ger::App - An easy way to use Log::ger in applications VERSION version 0.008 SYNOPSIS In your script: use Log::ger::App; use Your::App::Module; # your module which uses Log::ger to do its logging If you also do logging in your script: use Log::ger::App; use Log::ger; log_warn("Some log ..."); DESCRIPTION This module basically loads Log::ger::Output::Composite with some sensible defaults and allows customizing some aspects via environment variable. Default outputs Code Screen File Syslog ------------------------------ ------ ---- ------ One-liner (-e) y - - Script running as normal user y ~/PROGNAME.log - Script running as root y /var/log/PROGNAME.log - Daemon - /var/log/PROGNAME.log y Determining if script is a daemon Log::ger::App assumes your script is a daemon if some daemon-related modules are loaded, e.g. App::Daemon, HTTP::Daemon, Net::Daemon, etc (see the source code for the complete list). Alternatively, you can also set $main::IS_DAEMON to 1 (0) to specifically state that your script is (not) a daemon. Or, you can set it via import argument (see "import"). Setting general log level The default is "warn" (like Log::ger's default). Via import argument. You can set general log level via import argument (see "import") but users of your script will not be able to customize it. Via environment variables. You can also set general log level from environment using "LOG_LEVEL" (e.g. "LOG_LEVEL=trace" to set level to trace or "LOG_LEVEL=0" to turn off logging). Alternatively, you can set to "trace" using "TRACE=1", or "debug" with "DEBUG=1", "info" with "VERBOSE=1", "error" with "QUIET=1". Setting per-output log level The default is to use general level, but you can set a different level for each output using *OUTPUT_NAME*_{"LOG_LEVEL|TRACE|DEBUG|VERBOSE|QUIET"} environment variables. For example, "SCREEN_DEBUG=1" to set screen level to "debug" or "FILE_LOG_LEVEL=off" to turn off file logging. Showing timestamp Timestamps are shown in log files. On the screen, timestamps are not shown by default. To show timestamps on the screen, set "LOG_ADD_TIMESTAMP" to true. For example, when timestamps are not shown: myprog: First log message myprog: Doing task 1 ... myprog: Doing task 2 ... When timestamps are shown: myprog: [2018-08-30T15:14:50] First log message myprog: [2018-08-30T15:14:50] Doing task 1 ... myprog: [2018-08-30T15:15:01] Doing task 2 ... FUNCTIONS import Usage: $pkg->import(%args) Arguments: * level => str|num Explicitly set level. Otherwise, the default will be taken from environment variable like described previously in "DESCRIPTION". * name => str Explicitly set program name. Otherwise, default will be taken from $0 (after path and '.pl' suffix is removed) or set to "prog". Program name will be shown on the screen, e.g.: myprog: First log message myprog: Doing task 1 ... myprog: Doing task 2 ... myprog: Exiting ... * daemon => bool Explicitly tell Log::ger::App that your application is a daemon or not. Otherwise, Log::ger::App will try some heuristics to guess whether your application is a daemon: from the value of $main::IS_DAEMON and from the presence of modules like HTTP::Daemon, Proc::Daemon, etc. * outputs => hash Specify extra outputs. Will be passed to Log::ger::Output::Composite configuration. ENVIRONMENT LOG_ADD_TIMESTAMP Boolean. Default to false. If set to true, will add timestamps to the screen log. Normally, timestamps will only be added to the file log. LOG_LEVEL String. Can be set to "off" or numeric/string log level. TRACE Bool. DEBUG Bool. VERBOSE Bool. QUIET Bool. SCREEN_LOG_LEVEL SCREEN_TRACE SCREEN_DEBUG SCREEN_VERBOSE SCREEN_QUIET FILE_LOG_LEVEL FILE_TRACE FILE_DEBUG FILE_VERBOSE FILE_QUIET SYSLOG_LOG_LEVEL SYSLOG_TRACE SYSLOG_DEBUG SYSLOG_VERBOSE SYSLOG_QUIET SEE ALSO Log::ger AUTHOR perlancar COPYRIGHT AND LICENSE This software is copyright (c) 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.