Log4j: Как настроить несколько приложений: один направлен на консоль и файл, а другой строго на файл? - PullRequest
2 голосов
/ 22 сентября 2011

Для моего приложения мне удалось настроить 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'.

Я также думал о том, чтобы отключить консоль для обоихappenders и используйте: tail -f X.log внутри окна оболочки для просмотра журналов, но это не очень удобно при работе внутри Eclipse.

Любые советы будут с благодарностью.

С уважением,

Ответы [ 3 ]

2 голосов
/ 22 сентября 2011

А как насчет того, чтобы не выводить корневой логгер в stdout, а вместо этого отправлять свой логгер X и приложениям X, и stdout? Таким образом, ваш регистратор Y также не будет выводить на стандартный вывод.

log4j.logger.X=DEBUG,X,stdout
2 голосов
/ 22 сентября 2011

Единственный способ, которым я знаю, - отключение аддитивности для определенных регистраторов (категорий) в той точке, где вы направляете их в одного или другого приложения.Например,

log4j.logger.com.foo.bar=INFO, X
log4j.additivity.com.foo.bar=false
1 голос
/ 22 сентября 2011

Оба приложения выводятся на консоль и в файл.

Я думаю, вы не понимаете разницы между регистратором и приложением.

Приложение может перейти только в одно место - в вашей конфигурации вы объявили ConsoleAppender и FileAppender.Это две разные сущности.Ни один из этих добавочных устройств не выводит данные в более чем одно местоположение.

Регистраторы могут быть настроены на отправку своих выходных данных на ноль многим вспомогательным устройствам, и вы настроили все свои регистраторы для отправки своих выходных данных на консоль благодаряrootLogger.

Если вы хотите, чтобы вывод на консоль выводили только определенные регистраторы, не настраивайте корневой регистратор на использование консоли, а только конкретные имена регистраторов для этого.

Если вы хотите, чтобы все логгеры , за исключением X, отправляли свои выходные данные на консоль, вам нужно отключить аддитивность для X, чтобы она не наследовалась от корневого логгера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...