|
From: Rob R. <Rob...@no...> - 2005-07-05 20:17:44
|
Hi,
I'm new to log4perl/log4j. My goal is to have a few different running
perl programs write to the same log file, perhaps simultaneously. To
test that ability, I wrote the simple perl program and log given below.
Then I kicked off (i.e. bash> test_log4perl.pl &) the perl program 10
times so they'd all be running simultaneously. I noticed in my
resulting log file that the filename %F is occasionally given as "(eval
61)" and the method name is shown as "Log::Log4perl::Logger::__ANON__".
Specifically, I'm expecting this log message:
2005/07/05 13:18:10 INFO > test_log4perl.pl(pid=24623):30 main:: - i=
988 slept for 0 of 0 seconds
And occasionally, I'm getting one like this:
2005/07/05 12:25:18 INFO > (eval 61)(pid=24263):42
Log::Log4perl::Logger::__ANON__ - i= 243 slept for 1.64915744429506 of 1
seconds
The log config and perl program follow. Any help appreciated!
######## log config #########
#
# Author: Rob Redmon
# Rob...@no...
#
log4perl.logger.Ionosonde=DEBUG, Logfile
log4perl.appender.Logfile=Log::Dispatch::FileRotate
log4perl.appender.Logfile.filename=log/load_sec.log
log4perl.appender.Logfile.mode=append
log4perl.appender.Logfile.layout=Log::Log4perl::Layout::PatternLayout
log4perl.appender.Logfile.layout.ConversionPattern=%d %p >
%F{1}(pid=%P):%L %M - %m%n
log4perl.appender.Logfile.max=366
#have to choose by size or date, not both:
#log4perl.appender.Logfile.size=1
log4perl.appender.Logfile.DatePattern = yyyy-MM-dd
log4perl.appender.Logfile.TZ = MST
######## simple perl ########
#!/usr/bin/perl
use strict;
use warnings;
use lib '../../lib/perl';
use IO::Dir;
#use Log::Log4perl qw(:easy);
use Log::Log4perl qw(get_logger :levels);
local *__ANON__ = "test_log4perl.pl";
#Log::Log4perl->easy_init($INFO);
Log::Log4perl->init_and_watch("log.conf", 60); #recheck config file
every 60 seconds
#####
# Config
#####
my $logger = get_logger("Ionosonde");
$logger->level($DEBUG);
#####
# Test
#####
$logger->info("Testing log4perl: START");
for (my $i=0; $i<1000; $i++) {
my $t_sec = rand(2);
my $n_sec = sleep($t_sec);
$logger->info("i= ",$i," slept for ",$t_sec," of ",$n_sec," seconds");
}
$logger->info("Testing log4perl: END");
--
Rob Redmon
NOAA/NGDC
325 Broadway E/GC2
Boulder, Colorado 80305
Tel: (303) 497-4331
Fax: (303) 497-6513
Rob...@no...
"Engineering is the art of making what you want from things you can get."
|