【发布时间】:2015-02-20 15:04:41
【问题描述】:
我这样做是为了记录在我的脚本中发送到STDOUT 的每条消息。
open(STDOUT," | tee $log") or die "Unable to open $log";
是否可以轻松过滤所有发送到日志的消息?说替换字符?
【问题讨论】:
-
open(STDOUT, "| perl -pe's/.../.../' | tee $log")
我这样做是为了记录在我的脚本中发送到STDOUT 的每条消息。
open(STDOUT," | tee $log") or die "Unable to open $log";
是否可以轻松过滤所有发送到日志的消息?说替换字符?
【问题讨论】:
open(STDOUT, "| perl -pe's/.../.../' | tee $log")
不是你这样做的方式,因为你所做的是将所有内容发送到tee,然后tee 正在打印它正在记录的内容。
您也许可以创建一个内置 sed 的管道。但另一种方法可能是编写您自己的“log_line”子程序,它会显式地打印到日志文件和标准输出。
sub print2 {
print {$output_fh} @_;
print @_;
}
您可以构建自己的转换。
您还可以利用几个模块,例如IO::Tee 和log4perl。如果您想对STDOUT 和您的日志进行不同的处理,那么可能值得考虑做一个功能更齐全的日志记录。
【讨论】: