Perl 使用 Log::Log4perl 输出日志的用法

用 Java 的很少有人对 log4j 感觉陌生,这是 Apache  上的项目。同时 Apache 上也有针对其他语言的 Log 组件,如 log4cxx、log4net、log4php。

所用 Perl 时也会想想:Perl 该用什么日志模块呢? log4perl?google 一下果然后,只不过它不是由 Apache 出品。
该项目原来在 http://log4perl.sourceforge.net/,现已移到 http://mschilli.github.com/log4perl/

下载地址:http://search.cpan.org/~mschilli/Log-Log4perl/ (要编译的)
使用文档:1. Tutorial(Retire your debugger, log smartly with Log::Log4perl)
             2. Manual 
             3. Frequently Asked Questions

当然,你也可以用 CPAN 和 PPM(如果安装的是 ActivePerl) 来安装 Log::Log4perl 模块。

若能用 nmake 构建的话可用 perl -MCPAN -e "install Log::Log4perl" 下载安装 Log::Log4perl
ActivePerl 可用:ppm install "http://log4perl.sourceforge.net/ppm/Log-Log4perl.ppd" 安装(参考它的 FAQ)

下面是使用方法,所有的概念,如 Appender、Layout、LogLevel、Category 等的概念与 log4j 基本或者说完全一致。所以只要有 log4j、log4cxx、log4net 或 log4php 其中一个组件的使用经验,那么 log4perl 的使用方式你会觉得十分自然舒适。

好了,就是使用代码和配置文件, 以及瞧瞧代码中如何初始化配置文件的。

代码 TestLog4perl.pl

 
配置文件 log4perl.conf

看看执行 TestLog4perl 的输出

控制台:

INFO - 看看,我怎么在屏幕上输出来两次了!
INFO - 看看,我怎么在屏幕上输出来两次了!

log/test.log 中输出:

09/6/10 18:8:14:9 [1919] C:\Users\Unmi\Komodo Workspace\test.pl 11 看看,我怎么在屏幕上输出来两次了!

简要分析

为什么 $log->info("看看,我怎么被在屏幕输出来两次了!"); 的信息在屏幕上输出了两次,是因为 $log 对应的模块是 Foo::Bar,分别应用了配置文件中的 log4perl.logger = DEBUG,Logfile,Screen 和 log4perl.category.Foo.Bar = INFO,Screen 两个 logger。而它只在文件中输出了一次就容易理解了。

而 $log1->debug("Where,我打印的信息哪去了!"); 哪儿都没有输出,因为配置文件的最后一行 log4perl.logger.Com.Unmi= ERROR 控制了对应于 Com::Unmi 模块的 $log1 只有 ERROR 级别的日志才会输出,而它是 debug,所以不行,改成 $log1.error() 试试效果。

更多内容

我们可以在下载页面 http://search.cpan.org/~mschilli/Log-Log4perl/ 看到 log4perl 的各个子模块,大概能了解到 log4perl 还支持哪些功能。如 日志输出到数据库、输出到 Socket、可使用 XML 配置文件、自动侦测配置文件的内容变化、与 Java 的 log4j  配合使用(例如,支持 NT 事件日志、回滚文件、JDBC 等) 等等等。

ActivePerl 5.8.* 以上还可用的安装方法:

ppm> repository add http://log4perl.sourceforge.net/ppm
ppm> install Log-Log4perl

Log4perl 能支持的日志输出级别有 DEBUG|INFO|WARN|ERROR|FATAL|TRACE|ALL|OFF。

更详细的使用说明请参考 Log4perl 的官方帮助,见文后参考中的链接。

参考:1. log4perl 简单使用方法
        2. Tutorial(Retire your debugger, log smartly with Log::Log4perl)
        3. Manual 
        4. Frequently Asked Questions

类别: Perl. 标签: , , . 阅读(1,325). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar