2013-05-15 49 views
1

我在perl中記錄一些消息時遇到了問題。我創建了簡單的日誌包。我仍然只是第一行到文件。似乎有追加到文件無法正常工作。有任何想法嗎?在perl中追加到文件的問題

即使我運行該腳本多次,輸出日誌文件中也沒有任何更改。總是隻寫「東西」。我需要將「somethingElse」附加到輸出文件。我的日誌有誤嗎?

package Logger; 

sub new { 
    my $package = shift; 
    my $self = {}; 
    bless $self , $package; 
    $self->initialize(@_); 
    return $self; 
} 

sub initialize { 
    my $self = shift; 
    $self->{logfile} = shift; 
    return; 
} 

sub logger { 
    my $self = shift; 
    my $message = shift; 
    my (undef,$script, $line) = caller; 
    open(LOG, ">>$self->{logfile}"); 
    print LOG substr(scalar localtime(),4,15), " ", $message, "\n"; 
    close(LOG); 

    return; 
} 


my $log = Logger->new('/usr/local/logs/test.log'); 
$log->logger("something"); 
$log->logger("somethingElse"); 

謝謝

+3

這不完全相當的代碼,但它_does_爲我工作。啓用警告,並至少檢查「open」的返回值以確定發生了什麼。 – innaM

+0

同上,它也適用於我。按原樣運行,最終在日誌文件中有兩行。 –

回答

0

此代碼工作對我很好,所以我不能肯定這是正確的解決方案,但往往當一些代碼不打印你想要的它,是因爲的自動刷新問題。您可以嘗試添加此:

$| = 1 

或者如果你喜歡:

use English qw(-no_match_vars); 
$OUTPUT_AUTOFLUSH = 1; 

到程序的開始,看看是否有幫助。