Log4perl使用文件appender的奇怪错误

时间:2013-01-10 20:07:58

标签: perl logging log4perl fileappender

我正在尝试向Log4perl记录器添加和删除一个简单的文件追加器,但会生成警告并且不会打印任何内容。这是我的代码:

use strict;
use warnings;
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($DEBUG);
use Log::Log4perl::Appender::File;

my $app = Log::Log4perl::Appender::File->new(
    filename  => "C:/users/my name/Desktop/someFile.txt",
    mode      => 'clobber',
    utf8      => 1,
);
# print "appender name is " . $app->name();
my $logger = get_logger();
$logger->add_appender($app);
INFO('info');
$logger->remove_appender($app->name);

创建了文件“someFile.txt”,但该文件为空。生成的警告是:

Odd number of elements in hash assignment at C:/strawberry/perl/site/lib/Log/Log4perl/Appender/File.pm line 223.
Use of uninitialized value in print at C:/strawberry/perl/site/lib/Log/Log4perl/Appender/File.pm line 245.
带有时间戳的

“info”也会打印到命令行。任何人都可以看到我正在犯的错误吗?

1 个答案:

答案 0 :(得分:1)

你确定你想要一个appender吗?如果是这样,那么你不应该直接创建一个新的Log::Log4perl::Appender::File对象 - 你创建一个Log::Log4perl::Appender对象并将你想要的appender类作为第一个参数传递给构造函数。像这样:

my $app = Log::Log4perl::Appender->new(
    'Log::Log4perl::Appender::File',
    filename  => 'C:/users/my name/Desktop/someFile.txt',
    mode      => 'clobber',
    utf8      => 1,
);