log4perl und mod_perl

01/02/2008 - 15:07 von Jens Puruckherr | Report spam
Hi,

bei der Umsetzung einer vorhandenen Applikation auf apache mit mod_perl
stolpere ich über Eigenheiten von log4Perl, die ich nicht so recht
deuten kann.

Der Code:


use CGI qw/:standard/;
use Log::Log4perl qw(get_logger);
use Log::Log4perl::Level;

Log::Log4perl::Logger::create_custom_level("STATUS", "WARN");
Log::Log4perl->init_once(pfad_zum_configfile); # Init Logger

# eigene Module
use lib pfad-zu-den-klassen;
use Connector::Connect;


our $r = new CGI;
my $header = $r->header; # default html-header
my $data = '';
...
if(param('action') eq 'getKatalog'){
$header = $r->header('text/xml');
$data = Connector::Connect->getKatalog
param('shopid'),param('param') );
}
print $header, $data;
...


Weit unten in Connector::xxx
wird $logger->status(...) aufgerufen um den selbst definierten Loglevel
STATUS zu erhalten der via Filter separat behandelt wird.
Das klappt allerdings nur *manchmal* und im nicht nachzuvollziehenden
Rythmus. Wenn der Apache einen Fehler meldet, dann steht auch im error-log:
...
[Fri Feb 01 13:42:21 2008] [error] create_custom_level must be called
before init or first get_logger() call at
/usr/lib/perl5/vendor_perl/5.8.8/Log/Log4perl/Logger.pm line 694.

Bums, aus.

Die Geschichten zu mod_perl habe ich auf den log4perl-Seiten schon
studiert, mit init_once() sollte alles erledigt sein. Irgendwie klappt
es aber mit dem custom_level nicht immer - wie kann ich den Fehler
einkreisen?
Ich bin der Meinung, dass ich create_custom_level immer als erstes
aufrufe ... mod_perl wohl aber nicht.

Jens
 

Lesen sie die antworten

#1 Jens Puruckherr
04/02/2008 - 08:57 | Warnen spam
Hi,

vielleicht noch als Nachtrag, das die Loggerei in der derzeit laufenden
App. - *nicht* im Apachen - mit den identischen Klassen prima und
fehlerfrei làuft.
Der Knackpunkt muss mit mod_perl zu tun haben.

Jens

Ähnliche fragen