in reply to log level in modules

Without knowing the guts of log4perl I'm going to guess that your configuration file specifies log levels for specific subclasses, and that more precise specification is overriding your attempt to set the logging level globally.

If that is not it, then without knowing how your application is designed I'm going to guess that upon catching the signal you're creating a new $logger, which doesn't automatically get assigned to the $logger variables you've assigned in other modules. So after catching the signal your other modules are not using the same $logger any more.

Either way the documentation for the module suggests that you should:

Log::Log4perl::init_and_watch(’/etc/log4perl.conf’,10);
If you do this then at run-time you can dynamically adjust the logging level of any and all pieces of your application at run-time. But with up to 10 second wait. If the wait is not critical to you, then I'd suggest taking that approach instead of using signals.

Replies are listed 'Best First'.
Re^2: log level in modules
by Anonymous Monk on Aug 21, 2009 at 18:16 UTC

    Thanks, hadn't noticed this. The only problem is the performance hit (down to 45% could be very noticeable). There is a variance to have it reload upon a signal (only drops to 85%), but that would be a two step process. I'd like to understand why my way isn't working...