Hi,
We have been using the Log4perl module, with synchronized file
appenders, on a low-traffic beta website for several months now. We
have had no incidents at all until this morning, when this error
started appearing on each request:
error: Can't call method "SUPER::log" on an undefined value at
/usr/local/lib/perl5/site_perl/5.8.6/Log/Log4perl/Appender/Synchronized.pm
line 71.
context: ...
67:
68: # Relay that to the SUPER class which needs to render the
69: # message according to the appender's layout, first.
70: $Log::Log4perl::caller_depth +=2;
71: $self->{app}->SUPER::log(\%params,
72: $params{log4p_category},
73: $params{log4p_level});
74: $Log::Log4perl::caller_depth -=2;
75:
...
code stack:
/usr/local/lib/perl5/site_perl/5.8.6/Log/Log4perl/Appender/Synchronized.pm:71
/usr/local/lib/perl5/site_perl/5.8.6/Log/Log4perl/Appender.pm:189
(eval 369):41
/usr/local/lib/perl5/site_perl/5.8.6/Log/Log4perl/Logger.pm:684
...(snipped)...
What seems to have happened is the semaphore's pointer to the
application's logger instance got lost. How this happened, I'm not at
all sure. Restarting our Apache server fixed the problem, and we have
not seen it since.
We are running Apache with mod_perl and the Mason templating library.
This morning, when the problem occurred, we were running version 0.49
of the Log::Log4perl library. I have since upgraded the server to
version 0.51, hoping this may be the result of a bug that is now
fixed.
Any assistance with this problem is much appreciated. Thanks to the
Log4perl team for providing an excellent module!
Cheers,
-Warren
|