Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6550821
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Python/Ruby

2011-04-03 15:42:39

    当我们想把不同的Log输出到不同的地方时(比如ERROR级的输出到文件,INFO级输出到控制台),我们可以采用分类的日志配置方式,采用如下的日志配置文件:
  1. ############################################################
  2. # A simple root logger with a Log::Log4perl::Appender::File
  3. # file appender in Perl.
  4. ############################################################
  5. log4perl.logger.error=ERROR, LOGFILE
  6. log4perl.logger.Wangcc=DEBUG, Screen
  7. log4perl.appender.Screen=Log::Log4perl::Appender::Screen
  8. log4perl.appender.Screen.stderr=0
  9. log4perl.appender.Screen.layout=PatternLayout
  10. #log4perl.appender.Screen.layout.ConversionPattern=[%r] %F %L %c %t - %m%n
  11. log4perl.appender.Screen.layout.ConversionPattern=[%-4r] %-5p %c %d - %m%n
  12. log4perl.appender.LOGFILE=Log::Log4perl::Appender::File
  13. log4perl.appender.LOGFILE.filename=/var/log/myerrs.log
  14. log4perl.appender.LOGFILE.mode=append
  15. log4perl.appender.LOGFILE.layout=PatternLayout
  16. log4perl.appender.LOGFILE.layout.ConversionPattern=[%r] %F %L %c %t - %m%n

配置文件分别配置了ERROR和INFO两个级别。

代码中所做的修改:

 

  1. #!/usr/bin/perl -w
  2. use lib '/tmp/Log-Log4perl-1.32/lib/';

  3. use Log::Log4perl qw(get_logger);

  4. #Log::Log4perl->easy_init($DEBUG);
  5. Log::Log4perl->init("./log4perl.conf");

  6. drink();
  7. drink("Soda");

  8. sub drink{
  9.   my($what)=@_;

  10.   my $logger = get_logger("error");

  11.   my $screen_logger = get_logger("Wangcc");
  12.   $screen_logger->info("log in wangcc");

  13.   if (defined $what){
  14.      $logger->info("Drinking ",$what);
  15.   } else {
  16.      $logger->error("No drink defined");
  17.   }
  18. }

这样的配置后,log in wangcc将输出到终端控制台,而No drink defined就会输出到/var/log/myerrs.log文件中。这就是Log4perl的不同输出配置和编码方式。

Log4perl标准的输出地方有如下方式:

  1. Log::Log4perl::Appender::Screen
  2. Log::Log4perl::Appender::ScreenColoredLevels
  3. Log::Log4perl::Appender::File
  4. Log::Log4perl::Appender::Socket
  5. Log::Log4perl::Appender::DBI
  6. Log::Log4perl::Appender::Synchronized
  7. Log::Log4perl::Appender::RRDs

还可以使用附加的相当于Appender的Dispatch方式,有如下:

 

  1. Log::Dispatch::ApacheLog
  2. Log::Dispatch::DBI (by Tatsuhiko Miyagawa)
  3. Log::Dispatch::Email,
  4. Log::Dispatch::Email::MailSend,
  5. Log::Dispatch::Email::MailSendmail,
  6. Log::Dispatch::Email::MIMELite
  7. Log::Dispatch::File
  8. Log::Dispatch::FileRotate (by Mark Pfeiffer)
  9. Log::Dispatch::Handle
  10. Log::Dispatch::Screen
  11. Log::Dispatch::Syslog
  12. Log::Dispatch::Tk (by Dominique Dumont)

输出Layout标准支持: 和 (参数在第一篇文章已经提到了),还可以使用扩展的CPAN的Log::Log4perl::Layout::XMLLayout。

阅读(6291) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~