2012-07-06 3 views
0

Log4perl 메시지는 새 행에서 시작 :Log4perl : 접두사없이 같은 줄에 새로운 메시지

my $log = Log::Log4perl->get_logger("log"); 
$log->info("start:"); 
$log->info("10"); 
$log->info("20"); 
$log->info("30"); 

결과 :

[2012/07/06 13:12:27] INFO log - start: 
[2012/07/06 13:12:27] INFO log - 10 
[2012/07/06 13:12:27] INFO log - 20 
[2012/07/06 13:12:27] INFO log - 30 

가 어떻게 같은 줄에 및없이 다음 메시지를 얻을 수 있습니다 접두사 :

[2012/07/06 13:12:27] INFO log - start: 10 20 30 

아이디어가 있으십니까?

UPD : 내 프로그램에 대한 진행률 표시 줄을 만들려고

. 그러나 결과적으로이 진행 막대는 로그가 아닌 화면에서만 필요합니다. 이런 식으로

나는 그렇게 :

$log->info("start"); 
printf("progress: "); 
printf("10"); 
printf("20"); 
printf("30"); 

가 귀하의 답변 주셔서 감사합니다!

+2

$ log-> info ("start : 10 20 30"); – beresfordt

+1

Log4perl 소스를 간략하게 살펴 보았습니다. '\ n'은'log' 메쏘드에서 하드 코드 된 것처럼 보입니다. 'monkeypatch'(http://en.wikipedia.org/wiki/Monkey_patch)에서 '\ n'을 포함하지 않을 수 있습니다. * brian d foy의 Mastering Perl *은 10 장에서 그 방법을 설명합니다. – simbabque

+0

@simbabque 조언을 주셔서 감사합니다.하지만 내 작업에 과도 함이 있습니다. – taofos

답변

3

당신이 진행을해야하는 경우 술집에 Term::ProgressBar이 있습니다.

+0

+1 OP 파운드가 [ 오래된 구두 또는 유리 병] (http://weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/408925.aspx). – pilcrow

3

두 가지 카테고리를 사용하여 로그를 동일한 위치 인 화면에 쓰도록하십시오. 자신의 PatternLayout을 수정하고 날짜 또는 메시지 만 추가하려는 경우 둘 중 하나를 사용하십시오. 다음과 같은 출력으로

perl script.pl 

:

내용 script.pl의 :

use warnings; 
use strict; 
use Log::Log4perl; 

my $conf = qq| 
    log4perl.category.Stdout_nl=INFO, Date   
    log4perl.appender.Date=Log::Log4perl::Appender::Screen 
    log4perl.appender.Date.layout=PatternLayout 
    log4perl.appender.Date.layout.ConversionPattern=%d %p %m 

    log4perl.category.Stdout=INFO, Number 
    log4perl.appender.Number=Log::Log4perl::Appender::Screen 
    log4perl.appender.Number.layout=PatternLayout 
    log4perl.appender.Number.layout.ConversionPattern= %-3m 
|; 

Log::Log4perl::init(\$conf); 
my $log_date = Log::Log4perl->get_logger("Stdout_nl"); 
my $log_num = Log::Log4perl->get_logger("Stdout"); 
$log_date->info("start:"); 
$log_num->info("10"); 
$log_num->info("20"); 
$log_num->info("30\n"); 

실행이 좋아하는 당신은 또한 줄 바꿈 명시 적으로 추가해야

2012/07/06 12:24:04 INFO start:10 20 30 
관련 문제