http://www.perlmonks.org?node_id=486087

jthalhammer has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks,

My team is eager to adopt log4perl, but we don't agree on how to integrate it with our system. In your experience, how do most people it? Do they create wrappers, make subclasses, or just use native log4perl interface? What criteria do they use for making that decision? Thanks

Replies are listed 'Best First'.
Re: Best Practice for Integrating log4perl
by jbrugger (Parson) on Aug 24, 2005 at 05:38 UTC
    As noted in the documentation of cpan, you indeed can initialized it in two ways:
    Either via Perl commands or via a log4j-style configuration file.

    Since this is the easiest way (and i consider it more maintainable / readable), i'd use the log4j style config file:
    #log.conf: log4perl.rootLogger=ERROR, LOGFILE log4perl.appender.LOGFILE=Log::Log4perl::Appender::File log4perl.appender.LOGFILE.filename=/var/log/myerrs.log log4perl.appender.LOGFILE.mode=append log4perl.appender.LOGFILE.layout=PatternLayout log4perl.appender.LOGFILE.layout.ConversionPattern=[%r] %F %L %c - %m% +n # in your perl-script: use Log::Log4perl; Log::Log4perl->init("log.conf"); # Anywhere you log: package blah; use Log::Log4perl; sub new() { ... $self->{debug} = $debug; ... } sub method { my $self=shift; my($param) = @_; my $log = Log::Log4perl->get_logger("blah"); $log->debug("Debug ...") if $self->{debug}; $log->info("Info ...") if $ $self->{debug}; $log->error("Error ...") if $self->{debug};

    All examples ar shamelesly taken from the Log::Log4perl docs.

    "We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.