结合log4j和log4perl日志

时间:2011-02-23 17:59:27

标签: log4j log4perl

我有一个Java应用程序,它使用Runtime.exec启动Perl程序,等待它返回然后继续。我希望Java应用程序的log4j输出和Perl程序的log4perl输出转到同一个文件。

在我的log4j.properties文件中,我有:

log4j.appender.app=org.apache.log4j.DailyRollingFileAppender log4j.appender.app.File=/path/app.log log4j.appender.app.DatePattern=.yyyy-MM-dd log4j.appender.app.Append=false log4j.appender.app.layout=org.apache.log4j.PatternLayout log4.appender.app.layout.ConversionPattern=%5p [%t] (%F:%L) %m%n

(我将Append设置为false,因为如果重新启动Java应用程序,我想在同一天覆盖任何以前的日志文件。)

在Perl程序中,我有:

Log::Log4perl->easy_init({level => $DEBUG, file => ">>/path/app.log"});

这导致log4j输出,后跟log4perl输出,转到同一个文件,但是当Perl程序完成时,Java应用程序似乎无法写入该文件。

我可以以某种方式重置Java端的文件句柄吗? 我可以以某种方式将记录器传递给Perl程序而不是文件名吗?

我想过将两者的输出发送到控制台,然后将其保存到文件中,但这对我来说是一种功能损失,因为我正在利用向控制台和文件发送不同级别的输出。

0 个答案:

没有答案