我正在使用Log :: Dispatch处理一个或多个输出的消息传递。在一种情况下,我设置了一个记录到文件的守护进程,但如果它使用的第三方模块写入STDERR,那么我在日志中看不到。我希望能够将任何写入STDERR的内容重定向到Log :: Dispatch。这可能吗?
答案 0 :(得分:5)
你可以tie
它做任何你想做的事。见perltie
:
{
package StderrToLogDispatch;
sub TIEHANDLE {
my ($pkg) = @_;
return bless {}, $pkg;
}
sub PRINT {
my @msg = @_;
chomp $msg[-1];
# I don't use Log::Dispatch, so don't know if this is even close
Log::Dispatch->logToFile(@msg);
}
}
tie *STDERR, 'StderrToLogDispatch';
print STDERR 'foo'; # invokes StderrToLogDispatch->PRINT