1. Levels :用于定义日志内容的优先级,包括DEBUG, INFO, WARN, ERROR, FATAL;
2. Categories: 用于定义是日志来自系统的那一部分;
3. Appenders :用于说明你的日志输出到哪里;
4. Layout: 用来格式化每天输出日志的格式;
下面这个例子说明了该如何初始化、使用log4perl
01 ######### System initialization section ###
02 use Log::Log4perl qw(get_logger :levels);
03
04 my $food_logger = get_logger("Groceries::Food");
05 $food_logger->level($INFO);
06
07 # Appenders
08 my $appender = Log::Log4perl::Appender->new(
09 "Log::Dispatch::File",
10 filename => "test.log",
11 mode => "append",
12 );
13
14 $food_logger->add_appender($appender);
15
16 # Layouts
17 my $layout =
18 Log::Log4perl::Layout::PatternLayout->new(
19 "%d %p> %F{1}:%L %M - %m%n");
20 $appender->layout($layout);
21
22 ######### Run it ##########################
23 my $food = Groceries::Food->new("Sushi");
24 $food->consume();
25
26 ######### Application section #############
27 package Groceries::Food;
28
29 use Log::Log4perl qw(get_logger);
30
31 sub new {
32 my($class, $what) = @_;
33
34 my $logger = get_logger("Groceries::Food");
35
36 if(defined $what) {
37 $logger->debug("New food: $what");
38 return bless { what => $what }, $class;
39 }
40
41 $logger->error("No food defined");
42 return undef;
43 }
44
45 sub consume {
46 my($self) = @_;
47
48 my $logger = get_logger("Groceries::Food");
49 $logger->info("Eating $self->{what}");
50