Iterates over a list of jobs it gets from a database Creates a CommandHandler which uses Log4Perl CommandHandler calls Config which uses Log4Perl Calls CommandIterator which uses Log4Perl #### sub Log4PerlInit{ # Set up log4perl =head2 NAME Used to set up the Log4Perl logger Sets it up for the calling class - but also ensures that this class logs to it =cut my ($self, @args) = @_; my ($logfile, $logdir); # Just use the jobref id which will be a unique sequence to log into $logdir=$self->{LOG_DIR}.$args[0].$self->{U}.$self->LogTime; unless ( -e $logdir && -d $logdir){ mkpath($logdir) or throw TNBCriticalException("Cannot make directory $logdir"); } $logfile=$logdir.$self->{DLM}."job".$args[0].".log"; $self->{CurLogFile} = $logfile; # Jump off and define a logger for this class $self->{_logfile} = $self->SelfLog("DEBUG"); # Define a category logger for the calling class my $log = Log::Log4perl->get_logger($args[1]); # Define a layout my $layout = Log::Log4perl::Layout::PatternLayout->new("[%d][%p] %M %m%n"); # Define a file appender my $file_appender = Log::Log4perl::Appender->new( "Log::Log4perl::Appender::File", name => "filelog", filename => "$logfile"); # Define a stdout appender my $stdout_appender = Log::Log4perl::Appender->new( "Log::Log4perl::Appender::Screen", name => "screenlog", stderr => 0); $stdout_appender->layout($layout); $file_appender->layout($layout); $log->add_appender($stdout_appender); $log->add_appender($file_appender); $log->level($args[2]); return $logdir,$log; } sub SelfLog{ # Set up log4perl for this class =head2 NAME Used to set up the Log4Perl logger =cut my ($self, @args) = @_; # Jump off and define a logger for this class # Define a category logger for the calling class my $log = Log::Log4perl->get_logger("SDU::Config"); # Define a layout my $layout = Log::Log4perl::Layout::PatternLayout->new("[%d][%p] %M %m%n"); # Define a file appender my $file_appender = Log::Log4perl::Appender->new( "Log::Log4perl::Appender::File", name => "filelog", filename => $self->{CurLogFile}); # Define a stdout appender my $stdout_appender = Log::Log4perl::Appender->new( "Log::Log4perl::Appender::Screen", name => "screenlog", stderr => 0); # Have both appenders use the same layout (could be different) $stdout_appender->layout($layout); $file_appender->layout($layout); $log->add_appender($stdout_appender); $log->add_appender($file_appender); $log->level($INFO); return $log; }