Объединение журналов log4j и log4perl

У меня есть Java-приложение, которое запускает Perl-программу, используя Runtime.exec, ждет ее возврата и затем продолжает. Я хотел бы, чтобы выходные данные log4j из приложения Java и выходные данные log4perl из программы Perl переходили в один и тот же файл.

В моем файле 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 ответов

Другие вопросы по тегам