Как создать 2 отдельных файла журнала с одним конфигурационным файлом log4j?

Я не могу понять, как настроить мой log4j, чтобы мои debugLog и мои отчеты были отделены друг от друга (не аддитивны). Почему это, в приведенной ниже конфигурации, reportsLog всегда пуст?

log4j.rootLogger=TRACE, stdout, debugLog log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.appender.debugLog=org.apache.log4j.FileAppender log4j.appender.debugLog.File=logs/debug.log log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.reportsLog=DEBUG,reportsLog log4j.appender.reportsLog=org.apache.log4j.FileAppender log4j.appender.reportsLog.File=logs/reports.log log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n 

И вот мой код Java:

 package test; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class HelloLogger { static final Logger debugLog = Logger.getLogger("debugLog"); static final Logger resultLog = Logger.getLogger("reportsLog"); public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); debugLog.debug("Hello debugLog message"); resultLog.debug("Hello reportsLog message"); } } 

Попробуйте следующую конфигурацию:

 log4j.rootLogger=TRACE, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.appender.debugLog=org.apache.log4j.FileAppender log4j.appender.debugLog.File=logs/debug.log log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.appender.reportsLog=org.apache.log4j.FileAppender log4j.appender.reportsLog.File=logs/reports.log log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n log4j.category.debugLogger=TRACE, debugLog log4j.additivity.debugLogger=false log4j.category.reportsLogger=DEBUG, reportsLog log4j.additivity.reportsLogger=false 

Затем настройте регистраторы в коде Java соответственно:

 static final Logger debugLog = Logger.getLogger("debugLogger"); static final Logger resultLog = Logger.getLogger("reportsLogger"); 

Вы хотите, чтобы выходные данные выводились на stdout ? Если нет, измените первую строку log4j.properties на:

 log4j.rootLogger=OFF 

и избавиться от строк stdout .

Измените файл log4j.properties соответственно:

 log4j.rootLogger=TRACE,stdout ... log4j.logger.debugLog=TRACE,debugLog log4j.logger.reportsLog=DEBUG,reportsLog 

Измените уровни журналов для каждого регистратора в зависимости от ваших потребностей.

  • Создать файл журнала MSI
  • Какая библиотека регистрации лучше?
  • Как отправить записи журнала на удаленный сервер, на котором запущен journald (systemd)
  • Конфигурирование Log4j Loggers Programmatically
  • Как регистрировать запросы PostgreSQL?
  • Записываются ли программы Windows в журнал?
  • В чем проблема с алгоритмом обнаружения времени выполнения Apache Commons Logging
  • Отключить ведение журнала HttpClient
  • Как включить ведение журнала проводки для java HttpURLConnection трафика?
  • Имя файла журнала, в котором загружается процесс загрузки
  • Как изменить уровень регистрации maven для отображения только предупреждений и ошибок?
  • Давайте будем гением компьютера.