インターネットを検索したところ、STDOUT を 2 つの異なる場所に接続するための適切な解決策がいくつか見つかりました。ログファイルと画面を同時に表示します。一例を次に示します。
use IO::Tee;
my $log_filename = "log.txt";
my $log_filehandle;
open( $log_filehandle, '>>', $log_filename )
or die("Can't open $log_filename for append: $!");
my $tee = IO::Tee->new( $log_filehandle, \*STDOUT );
select $tee;
しかし、この解決策では、STDERR は画面のみに表示され、STDERR は画面と、STDOUT が記録されている同じログ ファイルの両方に表示されます。それは可能ですか?
私の仕事は、ビルド プロセスをログに記録することですが、通常どおり IDE の画面にも表示したいと考えています。また、エラー メッセージをログに記録することは、ハッピー メッセージをログに記録することと同じくらい重要です。また、エラーを別のログ ファイルに記録することは、適切な解決策ではありません。