2

我有一个 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 程序而不是文件名吗?

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

4

0 回答 0