全部博文(321)
分类: LINUX
2010-01-04 10:53:11
〖隔叶黄莺三四声,挂壁飞瀑千万尘。若是人间无净土,此处为何妙语真! 隔叶黄莺四字,本非取自此句,而有寄寓他意,因见妙语,亦与予心合!〗
用 Java 的很少有人对 log4j 感觉陌生,这是 Apache 上的项目。同时 Apache 上也有针对其他语言的 Log 组件,如 log4cxx、log4net、log4php。
所用 Perl 时也会想想:Perl 该用什么日志模块呢? log4perl?google 一下果然后,只不过它不是由 Apache 出品。
该项目原来在 ,现已移到 。
下载地址: (要编译的)
使用文档:1. 2.
3.
当然,你也可以用 CPAN 和 PPM(如果安装的是 ActivePerl) 来安装 Log::Log4perl 模块。
若能用 nmake 构建的话可用 perl -MCPAN -e "install Log::Log4perl" 下载安装 Log::Log4perl
ActivePerl 可用:ppm install "" 安装(参考它的 FAQ)
下面是使用方法,所有的概念,如 Appender、Layout、LogLevel、Category 等的概念与 log4j 基本或者说完全一致。所以只要有 log4j、log4cxx、log4net 或 log4php 其中一个组件的使用经验,那么 log4perl 的使用方式你会觉得十分自然舒适。
好了,就是使用代码和配置文件, 以及瞧瞧代码中如何初始化配置文件的。
代码 TestLog4perl.pl
01.
#!/usr/bin/perl -w
02.
03.
use
Log
::Log4perl::Level;
04.
use
Log
::Log4perl qw(:easy);
05.
06.
#初始化 log4perl 配制文件
07.
Log
::Log4perl->init(
"log4perl.conf"
);
08.
09.
#创建 log 实例,info 并输出信息,模块 Foo:Bar
10.
our
$log
=
Log
::Log4perl::get_logger(
"Foo::Bar"
);
11.
$log
->info(
"看看,我怎么在屏幕上输出来两次了!"
);
12.
13.
#创建 log 实例,debug 并输出信息,模块 Com::Unmi
14.
my
$log1
=
Log
::Log4perl::get_logger(
"Com::Unmi"
);
15.
$log1
->debug(
"Where,我打印的信息哪去了!"
);
01.
#所有 DEBUG 以上级别日志输出到日志文件和屏幕
02.
log4perl.logger = DEBUG,Logfile,Screen
03.
04.
#对于包 Foo::Bar 中 INFO 以上级别日志只输出到屏幕
05.
log4perl.category.Foo.Bar = INFO,Screen
06.
07.
#配置日志文件 Logfile Appender
08.
log4perl.appender.Logfile = Log::Log4perl::Appender::File
09.
log4perl.appender.Logfile.filename = log/test.log
10.
log4perl.appender.Logfile.layout = Log::Log4perl::Layout::PatternLayout
11.
12.
#%d时间{后是时间格式} #%F 是产立生日志的文件名 %L 是行号
13.
log4perl.appender.Logfile.layout.ConversionPattern =%d{y/M/d H:m:s:S} [%r] %F %L %m%n
14.
15.
#配置屏幕输出 Screen Appender
16.
log4perl.appender.Screen = Log::Log4perl::Appender::Screen
17.
log4perl.appender.Screen.stderr = 0
18.
log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
19.
20.
#和 log4j 一样,可以单独控制某个包的级别
21.
log4perl.logger.Com.Unmi= ERROR