Для моего приложения мне удалось настроить log4j для создания нескольких журналов.
Оба приложения выводят данные на консоль и в файл.
Но поскольку первый журнал является моим основным журналом, я считаю, что этот журнал должен быть единственным журналом, выводимым на консоль.
Можно ли отключить второй журнал, чтобы log4j не использовал консоль, но все равно писать в файл?
log4j.rootLogger=DEBUG, stdout
# stdout is set to be ConsoleAppender sending its output to System.out
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss SSS}ms %-5p [%t] - %m%n
log4j.appender.X=org.apache.log4j.FileAppender
log4j.appender.X.File=X.log
log4j.appender.X.Append=false
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss SSS}ms %-5p [%t] - %m%n
log4j.logger.X=DEBUG,X
второй присоединитель "Y" настраивается так же, как "X".
Я также думал полностью отключить консоль для обоих приложений и использовать: tail -f X.log внутри окна оболочки для просмотра журналов, но это не очень практично при работе внутри Eclipse.
Мы будем очень благодарны за любые советы.
С уважением,
Ответ 1 · рейтинг 2 · Péter Török
Единственный известный мне способ - отключить аддитивность для определенных регистраторов (категорий) в тот момент, когда вы направляете их в тот или иной аппендер. Например.
log4j.logger.com.foo.bar=INFO, X
log4j.additivity.com.foo.bar=false
Ответ 2 · рейтинг 2 · John B
Как насчет того, чтобы не выводить корневой регистратор на стандартный вывод, а вместо этого отправить свой регистратор X в приложения X и stdout? Таким образом, ваш Y-логгер также не будет выводить на стандартный вывод.
log4j.logger.X=DEBUG,X,stdout
Ответ 3 · рейтинг 1 · matt b
Оба приложения выводят данные на консоль и в файл.
Я думаю, вы запутались в разнице между регистратором и приложением.
Приложение идет только в одно место - в вашей конфигурации вы объявили ConsoleAppender и FileAppender. Это две отдельные сущности. Ни один из этих приложений не выводит данные более чем в одно место.
Регистраторы могут быть настроены на отправку своих выходных данных в ноль многим приложениям, и вы настроили все свои регистраторы для отправки своих выходных данных на консоль в силу rootLogger.
Если вы хотите, чтобы только определенные регистраторы отправляли вывод на консоль, не настраивайте корневой регистратор для использования консоли, а только определенные имена регистраторов.
Если вы хотите, чтобы все регистраторы кроме X отправляли свои выходные данные на консоль, вам необходимо отключить аддитивность для X, чтобы он не наследовал от корневого регистратора.