1

我在 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");

谢谢

4

1 回答 1

0

这段代码对我来说很好,所以我不能确定这是正确的解决方案,但通常当某些代码没有打印出你想要的内容时,这是因为自动刷新问题。你可以尝试添加这个:

$| = 1

或者,如果您愿意:

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

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

于 2013-06-29T18:55:32.390 回答