package MyLogger; # Wrapper class for Log::Log4perl. use strict; use warnings; use fields; use Log::Log4perl; my $log; my $module_name; sub new { # initialize and return MyLogger object my MyLogger $self = shift; unless (ref $self) { $self = fields::new ($self); } $module_name = shift; if (!Log::Log4perl::initialized()) { Log::Log4perl->init("/opt/etc/log4perl.conf"); $Log::Log4perl::caller_depth = 1; } $log = Log::Log4perl->get_logger($module_name); return $self; } sub debug{ # log a single message my ($self, $logmsg) = @_; $log->debug($logmsg); } ... #### Log::Log4perl->init("/opt/etc/log4perl.conf"); my $log = Log::Log4perl->get_logger("database"); ... $log->debug("blah blah"); #### my $log MyLogger::->new("database"); ... $log->debug("blah blah"); #### OS RH7.3 Linux 2.4.20-20.7 i686 Apache/1.3.23 (Unix) (Red-Hat/Linux) HTML::Mason INST_VERSION 1.23 mod_perl INST_VERSION 1.26 Log::Log4perl INST_VERSION 0.37 #### log4perl.logger.database = DEBUG, FileAppenderDatabase log4perl.logger.apache = DEBUG, FileAppenderApache ### APPENDERS ### log4perl.appender.FileAppenderDatabase= Log::Log4perl::Appender::File log4perl.appender.FileAppenderDatabase.filename=/var/log/database.log log4perl.appender.FileAppenderDatabase.mode= append log4perl.appender.FileAppenderApache= Log::Log4perl::Appender::File log4perl.appender.FileAppenderApache.filename= /var/log/apache.log log4perl.appender.FileAppenderApache.mode= append ### LAYOUTS ### log4perl.appender.FileAppenderDatabase.layout=PatternLayout log4perl.appender.FileAppenderDatabase.layout.ConversionPattern=%d %p> %F:%L [%P] %M - %m%n log4perl.appender.FileAppenderApache.layout=PatternLayout log4perl.appender.FileAppenderApache.layout.ConversionPattern=%d %p> %C %F:%L [%P] %M - %m%n