From: Huang, J. <hu...@qu...> - 2010-11-03 18:19:26
|
Hello, It looks like both the root and the Test_Log4perl categories are logging the same messages from Test_Log4perl if the message levels are higher than the log level configured for Test_Log4perl. Can we log such messages just once? Thanks! Cunzhi Huang ---- sample output ------------- [2010/11/02 22:02:34] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:34] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:37] DEBUG log4perl.pl main::main_test 10 - debug [2010/11/02 22:02:37] INFO log4perl.pl main::main_test 11 - info [2010/11/02 22:02:37] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:37] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:40] DEBUG log4perl.pl main::main_test 10 - debug [2010/11/02 22:02:40] INFO log4perl.pl main::main_test 11 - info [2010/11/02 22:02:40] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:40] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:43] DEBUG log4perl.pl main::main_test 10 - debug [2010/11/02 22:02:43] INFO log4perl.pl main::main_test 11 - info [2010/11/02 22:02:43] WARN log4perl.pl Test_Log4perl::test 21 - warn [2010/11/02 22:02:43] WARN log4perl.pl Test_Log4perl::test 21 - warn --- config file ---- # root logger log4perl.logger=DEBUG, LOGFILE # override root logger log4perl.logger.Test_Log4perl = INFO, LOGFILE log4perl.appender.LOGFILE=Log::Log4perl::Appender::File log4perl.appender.LOGFILE.filename=/tmp/log4perl.log log4perl.appender.LOGFILE.mode=append log4perl.appender.LOGFILE.layout=PatternLayout log4perl.appender.LOGFILE.layout.ConversionPattern=[%d] %p %F %M %L - %m%n --- sample code --- #!/usr/bin/perl -w use strict; use Log::Log4perl; # Log::Log4perl::init_and_watch('/root/tmp/perl/log4perl.conf',10); sub main_test { my $log = Log::Log4perl::get_logger(); # root logger $log->debug("debug"); $log->info("info"); } { package Test_Log4perl; sub test { # need to change config file my $log = Log::Log4perl::get_logger("Test_Log4perl"); # for this class $log->debug("debug"); $log->warn("warn"); } } # end of package while (1) { main_test(); Test_Log4perl::test(); sleep 3; } |