gpt4 book ai didi

perl - 我可以将 STDOUT 和 STDERR 发送到日志文件以及 Win32 Perl 中的屏幕吗?

转载 作者:行者123 更新时间:2023-12-04 11:13:27 26 4
gpt4 key购买 nike

我在互联网上搜索并找到了一些很好的解决方案,可以将 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 屏幕上看到它。记录错误消息与记录快乐消息一样重要。将错误记录到单独的日志文件中并不是一个好的解决方案。

最佳答案

我用 Log::Log4perl对于这样的事情。它为您处理将输出发送到多个地方,包括屏幕、文件、数据库或您喜欢的任何其他地方。一旦你变得有点复杂,你就不应该自己做这些事情。

而不是打印到文件句柄,您只需给 Log4perl 一条消息,它就会计算出其余的信息。我在 Mastering Perl 中有一个简短的介绍.它是基于Log4j的,你在Log4j中可以做的大部分事情你在Log4perl中都可以做,这也意味着一旦你知道它,它就变成了一种可以转移的技能。

关于perl - 我可以将 STDOUT 和 STDERR 发送到日志文件以及 Win32 Perl 中的屏幕吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com