Bug 16313

Summary: Koha::Logger doesn't forward the Log::Log4perl::Logger return value
Product: Koha Reporter: Olli-Antti Kivilahti <olli-antti.kivilahti>
Component: Architecture, internals, and plumbingAssignee: Olli-Antti Kivilahti <olli-antti.kivilahti>
Status: BLOCKED --- QA Contact: Testopia <testopia>
Severity: enhancement    
Priority: P5 - low CC: katrin.fischer
Version: Main   
Hardware: All   
OS: All   
Change sponsored?: --- Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:
Bug Depends on: 16302, 16304, 16312, 14167    
Bug Blocks: 16329    
Attachments: Bug 16313 - Koha::Logger doesn't forward the Log::Log4perl::Logger return value

Description Olli-Antti Kivilahti 2016-04-20 17:26:39 UTC
Log::Log4perl::Logger->$method
 returns undef if the log level is not logged or something bad happened and true or something similar on success. This allows chaining different loggers to trigger if Log4perl failed to log.

Koha::Logger is hardwired to return 1 if Log4perl is configured properly regardless of whether the Log4perl actually succeeded in printing the log message.

This is a Log4perl best practice:

$Koha::Logger->debug() or syslog("LOG_DEBUG", ...);
which should revert to syslog() to log if Log4perl cannot for some reason do the logging. (eg. is disabled)

This patch makes the Koha::Logger work with Log4perl better in tandem and return the proper return values.
Comment 1 Olli-Antti Kivilahti 2016-04-20 17:29:11 UTC
Created attachment 50473 [details] [review]
Bug 16313 - Koha::Logger doesn't forward the Log::Log4perl::Logger return value

    Log::Log4perl::Logger->$method
returns undef if the log level is not logged or something bad happened and
true or something similar on success. This allows chaining different loggers
to trigger if Log4perl failed to log.

Koha::Logger is hardwired to return 1 if Log4perl is configured properly
regardless of whether the Log4perl actually succeeded in printing the log
message.

The following is a Log4perl best practice:

$Koha::Logger->debug() or syslog("LOG_DEBUG", ...);
which should revert to syslog() to log if Log4perl cannot for some reason do the
logging. (eg. is disabled)

This patch makes the Koha::Logger work with Log4perl better in tandem and
return the proper return values.

See unit tests.
Comment 2 Olli-Antti Kivilahti 2016-04-20 17:33:04 UTC
If you made it this far, the correct order of applying the dependant patches is as follows:

Bug 16313 - Koha::Logger doesn't forward the Log::Log4perl::Logger return v~
Bug 16312 - Koha::Logger overload configuration for command line scripts ~
Bug 16306 - C4::Context->setCommandlineEnvironment() convenience function
Bug 16304 - Koha::Logger, lazy load loggers so environment has time to get set
Bug 16303 - Koha::Logger appenders for interface 'commandline'
Bug 16302 - Koha::Logger performance tests
Bug 14167 - Add Koha::Logger based on Log4perl.
Comment 3 Katrin Fischer 2017-10-15 09:39:08 UTC
Depends on a patch in Failed QA - Marking as BLOCKED until dependency can be resolved.