-1

我非常想念关于 Log4perl 中每一行的日志级别的信息easy_init。我正在运行一个大型迁移脚本,该脚本在某些特殊记录处失败,因此我需要 grep 查找WARNings 和ERRORs,但需要INFOrmation 上下文来修复这些问题。

使用此代码:

#!/usr/bin/perl
use strict; use warnings;
use Log::Log4perl qw(:easy);

Log::Log4perl->easy_init($INFO);

TRACE "bar";
DEBUG "baz";
INFO  "qux";
WARN  "quux";
ERROR "corge";
FATAL "grault";

现在,我得到这个输出:

2013/06/02 13:08:48 qux
2013/06/02 13:08:48 quux
2013/06/02 13:08:48 corge
2013/06/02 13:08:48 grault

我不想在日志消息中添加此信息,因为它已经包含在我调用的日志函数中。

如何添加日志级别easy_init?我不想在一个相当小的脚本中使用配置文件(即使包括内联)初始化“常规”Log4perl,我喜欢easy_init它清晰而简短的用法。

4

1 回答 1

5

easy_init还接受散列作为参数,从而启用扩展配置,例如日志文件和布局。%-5p将打印日志级别,左对齐为五个字符。

#!/usr/bin/perl
use strict; use warnings;
use Log::Log4perl qw(:easy);

Log::Log4perl->easy_init({
    level   => $INFO,
    layout  => '%d %-5p %m%n'
});

TRACE "bar";
DEBUG "baz";
INFO  "qux";
WARN  "quux";
ERROR "corge";
FATAL "grault";

输出现在将是

2013/06/02 13:08:56 INFO  qux
2013/06/02 13:08:56 WARN  quux
2013/06/02 13:08:56 ERROR corge
2013/06/02 13:08:56 FATAL grault

如需更多占位符,请查看Log4perl 的 PatternLayout 文档

于 2013-06-02T11:24:24.277 回答