当我们想把不同的Log输出到不同的地方时(比如ERROR级的输出到文件,INFO级输出到控制台),我们可以采用分类的日志配置方式,采用如下的日志配置文件:
- ############################################################
- # A simple root logger with a Log::Log4perl::Appender::File
- # file appender in Perl.
- ############################################################
- log4perl.logger.error=ERROR, LOGFILE
- log4perl.logger.Wangcc=DEBUG, Screen
- log4perl.appender.Screen=Log::Log4perl::Appender::Screen
- log4perl.appender.Screen.stderr=0
- log4perl.appender.Screen.layout=PatternLayout
- #log4perl.appender.Screen.layout.ConversionPattern=[%r] %F %L %c %t - %m%n
- log4perl.appender.Screen.layout.ConversionPattern=[%-4r] %-5p %c %d - %m%n
- 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 %t - %m%n
配置文件分别配置了ERROR和INFO两个级别。
代码中所做的修改:
- #!/usr/bin/perl -w
- use lib '/tmp/Log-Log4perl-1.32/lib/';
- use Log::Log4perl qw(get_logger);
- #Log::Log4perl->easy_init($DEBUG);
- Log::Log4perl->init("./log4perl.conf");
- drink();
- drink("Soda");
- sub drink{
- my($what)=@_;
- my $logger = get_logger("error");
- my $screen_logger = get_logger("Wangcc");
- $screen_logger->info("log in wangcc");
- if (defined $what){
- $logger->info("Drinking ",$what);
- } else {
- $logger->error("No drink defined");
- }
- }
这样的配置后,log in wangcc将输出到终端控制台,而No drink defined就会输出到/var/log/myerrs.log文件中。这就是Log4perl的不同输出配置和编码方式。
Log4perl标准的输出地方有如下方式:
- Log::Log4perl::Appender::Screen
- Log::Log4perl::Appender::ScreenColoredLevels
- Log::Log4perl::Appender::File
- Log::Log4perl::Appender::Socket
- Log::Log4perl::Appender::DBI
- Log::Log4perl::Appender::Synchronized
- Log::Log4perl::Appender::RRDs
还可以使用附加的相当于Appender的Dispatch方式,有如下:
- Log::Dispatch::ApacheLog
- Log::Dispatch::DBI (by Tatsuhiko Miyagawa)
- Log::Dispatch::Email,
- Log::Dispatch::Email::MailSend,
- Log::Dispatch::Email::MailSendmail,
- Log::Dispatch::Email::MIMELite
- Log::Dispatch::File
- Log::Dispatch::FileRotate (by Mark Pfeiffer)
- Log::Dispatch::Handle
- Log::Dispatch::Screen
- Log::Dispatch::Syslog
- Log::Dispatch::Tk (by Dominique Dumont)
输出Layout标准支持: 和 (参数在第一篇文章已经提到了),还可以使用扩展的CPAN的Log::Log4perl::Layout::XMLLayout。
阅读(6445) | 评论(0) | 转发(0) |