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 に答える