This simple change allows the $msg passed to _log_message in Logger.pm
to be either a regular string or a delayed exec subroutine. This is in
reaction to LP1823338 where a slow debug logging statement was slowing
down SIP checkins even though debug logging was not turned on.
With this change you can take this:
$log->debug("Available methods\n\t".join("\n\t", keys %{ $_METHODS[$proto] }), INTERNAL);
and change it to this:
$log->debug(sub{return "Available methods\n\t".join("\n\t", keys %{ $_METHODS[$proto] }) }, INTERNAL);
and then that slow debug logging line will not be executed unless
debug logging is turned on.
Signed-off-by: John Merriam <jmerriam@biblio.org>
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
my( $msg, $level ) = @_;
return if $level > $loglevel;
+ # Allow $msg to be either a normal string or a delayed exec subroutine
+ $msg = &$msg if (ref($msg) eq 'CODE');
+
# apply a sane default service name/tag
$logger->set_service($0) unless $service;