2013-01-10 6 views
0

Log4perl 로그 작성기에 간단한 파일 작성기를 추가하고 제거하려고하는데 경고가 생성되고 아무 것도 인쇄되지 않습니다. 여기 내 코드는 다음과 같습니다.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"는 타임 스탬프와 함께 명령 줄에도 인쇄됩니다. 누구든지 내가 뭘 만들고 있는지 알 수 있니?

+0

어떤 라인이 223 라인입니까? – mob

+0

@ mob : 그것은'INFO' 호출입니다. 그러나 appender가 처음 사용될 때까지 appender가 인스턴스화되지 않았기 때문에 오해의 소지가 있습니다. 오류는 ia가 실제로 생성자에 대한 매개 변수에 있습니다. – Borodin

답변

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, 
);