首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4perl配置不起作用

Log4perl配置不起作用
EN

Stack Overflow用户
提问于 2012-12-20 13:10:21
回答 1查看 717关注 0票数 2

我已经在我的Linux机器上安装了Log4perl,并且有下面的/path/to/log4perl.conf

代码语言:javascript
复制
log4perl.logger.Fizz = INFO, FizzAppender
log4perl.logger.Buzz = INFO, BuzzAppender

log4perl.appender.FizzAppender = Log::Dispatch::FileRotate
log4perl.appender.FizzAppender.filename = /my/logs/fizz-log.txt
log4perl.appender.FizzAppender.max = 1
log4perl.appender.FizzAppender.DatePattern = yyyy-MM-dd
log4perl.appender.FizzAppender.TZ = EST
log4perl.appender.FizzAppender.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.FizzAppender.layout.ConversionPattern = %d %m %n

log4perl.appender.BuzzAppender = Log::Dispatch::FileRotate
log4perl.appender.BuzzAppender.filename = /my/logs/buzz-log.txt
log4perl.appender.BuzzAppender.max = 1
log4perl.appender.BuzzAppender.DatePattern = yyyy-MM-dd
log4perl.appender.BuzzAppender.TZ = EST
log4perl.appender.BuzzAppender.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.BuzzAppender.layout.ConversionPattern = %d %m %n

在我的每个perl脚本中(每个脚本使用不同的附录和对不同日志文件的日志):

代码语言:javascript
复制
use Log::Log4perl;

my $log_conf = "/path/to/log4perl.conf";
Log::Log4perl::init($log_conf);

# In one script the logger is a "Fizz" logger (like below), and in the other
# script the logger is a "Buzz" logger.
my $logger = Log::Log4perl->get_logger("Fizz");

$logger->info("This should work.");

即使每个脚本使用不同的附录并记录到不同的文件,它们都应该有相同的行为:

  • 每个日志每天旋转一次,旧的(旋转的)日志被删除。

我已经运行了超过24个小时的脚本,而且我没有看到在/my/logs/下生成任何日志。

所以我问:不正确吗?如果没有,我能做些什么来诊断这个问题呢?我是不是在perl脚本中错误地初始化了库?提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-12-21 02:21:59

我认为您需要将参数mode添加到log4perl.conf文件中:

代码语言:javascript
复制
log4perl.appender.FizzAppender.mode = truncate
log4perl.appender.BuzzAppender.mode = truncate

为了加快速度,我将您的DatePattern更改为:

代码语言:javascript
复制
log4perl.appender.FizzAppender.DatePattern = yyyy-MM-dd-HH-MM
log4perl.appender.BuzzAppender.DatePattern = yyyy-MM-dd-HH-MM

下面是使用您的log4perl.conf文件进行的测试。我已经创建了两个Perl脚本的副本:

  • log4perl_Buzz.pl
  • log4perl_Fizz.pl

我在脚本中添加了一个循环,以便他们每秒钟将一条消息记录到各自的日志文件中:

代码语言:javascript
复制
while (1) {
  $logger->info("This should work.");
  sleep 1;
}

我同时运行它们,并使用watch ls -l看到以下结果

代码语言:javascript
复制
Every 2.0s: ls -l                    Thu Dec 20 21:16:51 2012

total 12
-rwxrwxr-x 1 saml saml 358 Dec 20 20:15 log4perl_Buzz.pl
-rw-rw-r-- 1 saml saml 978 Dec 20 21:07 log4perl.conf
-rwxrwxr-x 1 saml saml 358 Dec 20 20:15 log4perl_Fizz.pl

在我运行这两个脚本之后:

代码语言:javascript
复制
Every 2.0s: ls -l                    Thu Dec 20 21:17:56 2012

total 20
-rw-rw-r-- 1 saml saml  39 Dec 20 21:17 buzz-log.txt
-rw-rw-r-- 1 saml saml  39 Dec 20 21:17 fizz-log.txt
-rwxrwxr-x 1 saml saml 358 Dec 20 20:15 log4perl_Buzz.pl
-rw-rw-r-- 1 saml saml 978 Dec 20 21:07 log4perl.conf
-rwxrwxr-x 1 saml saml 358 Dec 20 20:15 log4perl_Fizz.pl

2分钟后传球:

代码语言:javascript
复制
Every 2.0s: ls -l                    Thu Dec 20 21:19:05 2012

total 28
-rw-rw-r-- 1 saml saml  195 Dec 20 21:19 buzz-log.txt
-rw-rw-r-- 1 saml saml 2340 Dec 20 21:18 buzz-log.txt.1
-rw-rw-r-- 1 saml saml  234 Dec 20 21:19 fizz-log.txt
-rw-rw-r-- 1 saml saml 2301 Dec 20 21:18 fizz-log.txt.1
-rwxrwxr-x 1 saml saml  358 Dec 20 20:15 log4perl_Buzz.pl
-rw-rw-r-- 1 saml saml  978 Dec 20 21:07 log4perl.conf
-rwxrwxr-x 1 saml saml  358 Dec 20 20:15 log4perl_Fizz.pl

这是我的log4perl.conf版本,供那些在家玩的8-)。

代码语言:javascript
复制
log4perl.logger.Fizz = INFO, FizzAppender
log4perl.logger.Buzz = INFO, BuzzAppender

log4perl.appender.FizzAppender = Log::Dispatch::FileRotate
log4perl.appender.FizzAppender.filename = fizz-log.txt
log4perl.appender.FizzAppender.max = 1
log4perl.appender.FizzAppender.DatePattern = yyyy-MM-dd-HH-MM
log4perl.appender.FizzAppender.TZ = EST
log4perl.appender.FizzAppender.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.FizzAppender.layout.ConversionPattern = %d %m %n
log4perl.appender.FizzAppender.mode = truncate

log4perl.appender.BuzzAppender = Log::Dispatch::FileRotate
log4perl.appender.BuzzAppender.filename = buzz-log.txt
log4perl.appender.BuzzAppender.max = 1
log4perl.appender.BuzzAppender.DatePattern = yyyy-MM-dd-HH-MM
log4perl.appender.BuzzAppender.TZ = EST
log4perl.appender.BuzzAppender.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.BuzzAppender.layout.ConversionPattern = %d %m %n
log4perl.appender.BuzzAppender.mode = truncate

这些都是解决这一问题的有用资源:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13972925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档