2013-05-15 26 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; 

到程序的开始,看看是否有帮助。