log4j: один класс; тот же уровень; два выходных файла - PullRequest
2 голосов
/ 02 октября 2009

Кажется, я не получаю никаких сообщений уровня INFO в Additions.log или Deletions.log, хотя я вижу, как строка отладки выполняется в отладчике. Вот мой файл log4j.properties:

log4j.file.home=.

log4j.rootLogger=INFO, dest1
log4j.rootCategory=INFO, dest1
log4j.logger.org.hibernate=ERROR

log4j.category.dest1=INFO
log4j.appender.dest1=org.apache.log4j.ConsoleAppender
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
log4j.appender.dest1.layout.ConversionPattern=%-22d{dd/MMM/yyyy HH:mm:ss} %-8p %c [%t] - %m (%l)%n

#Log items that are being added
log4j.logger.Additions=INFO
log4j.additivity.Additions=false
log4j.appender.Additions=org.apache.log4j.RollingFileAppender
log4j.appender.Additions.File=${log4j.file.home}/Additions.log
log4j.appender.Additions.MaxFileSize=10000KB
log4j.appender.Additions.MaxBackupIndex=10
log4j.appender.Additions.layout=org.apache.log4j.PatternLayout
log4j.appender.Additions.layout.ConversionPattern=%-22d{dd/MMM/yyyy HH:mm:ss} %-8p %c [%t] - %m (%l)%n

#Log items that are being removed
log4j.logger.Deletions=INFO
log4j.additivity.Deletions=false
log4j.appender.Deletions=org.apache.log4j.RollingFileAppender
log4j.appender.Deletions.File=${log4j.file.home}/Deletions.log
log4j.appender.Deletions.MaxFileSize=10000KB
log4j.appender.Deletions.MaxBackupIndex=10
log4j.appender.Deletions.layout=org.apache.log4j.PatternLayout
log4j.appender.Deletions.layout.ConversionPattern=%-22d{dd/MMM/yyyy HH:mm:ss} %-8p %c [%t] - %m (%l)%n 

и вот мои регистраторы из класса:

private static Logger addLog = Logger.getLogger("Additions");
private static Logger deleteLog = Logger.getLogger("Deletions");

Что еще мне нужно устранить, чтобы понять это?

Ответы [ 2 ]

6 голосов
/ 02 октября 2009

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

Я предлагаю вам переименовать appenders, чтобы они отличались от Logger, чтобы избежать этой путаницы. Затем вам нужно назначить регистраторы регистраторам следующим образом:

log4j.logger.Additions=INFO, Additions
log4j.logger.Deletions=INFO, Deletions

Наконец, я предлагаю вам перейти от формата свойств к формату XML. Это, на мой взгляд, намного более читабельно, и очевидно, что все остальное и каковы структуры.

1 голос
/ 02 октября 2009

Сравнивая это с моей собственной конфигурацией записи нескольких файлов log4j, я бы порекомендовал:

  1. Переместите строки log4j.logger и log4j.additivity, чтобы они были после операторов log4j.appender.
  2. Измените log4j.logger, чтобы указать его, как в "log4j.logger.Additions = INFO, Additions"

Это становится немного понятнее, когда у вашего приложения есть другое имя, чем у регистратора. Вот моя часть:

log4j.appender.ChatLogs=org.apache.log4j.DailyRollingFileAppender
log4j.appender.ChatLogs.layout=org.apache.log4j.PatternLayout
log4j.appender.ChatLogs.layout.ConversionPattern=%d{yyyy-MMM-dd HH:mm:ss:SSS}: %m%n
log4j.appender.ChatLogs.File=logs/chats.log
log4j.appender.ChatLogs.Threshold=INFO
log4j.appender.ChatLogs.Priority=INFO
log4j.appender.ChatLogs.DatePattern='.'yyyy-MM-dd

log4j.logger.chatfilter.ChatFilterPlugin=info, ChatLogs
log4j.additivity.chatfilter.ChatFilterPlugin=false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...