Есть ли способ настроить log4j так, чтобы он выводил разные уровни ведения журнала в разные приложения?
Я пытаюсь создать несколько файлов журнала. Главный файл журнала будет улавливать все сообщения INFO и выше для всех классов. (В процессе разработки он будет улавливать все сообщения DEBUG и выше, а также TRACE для определенных классов.)
Затем я хотел бы иметь отдельный файл журнала. Этот файл журнала будет улавливать все сообщения DEBUG для определенного подмножества классов и игнорировать все сообщения для любого другого класса.
Есть ли способ получить то, что мне нужно?
Спасибо, Дэн
Ответы:
Это должно помочь вам начать:
источник
Возможно, что-то подобное?
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- general application log --> <appender name="MainLogFile" class="org.apache.log4j.FileAppender"> <param name="File" value="server.log" /> <param name="Threshold" value="INFO" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/> </layout> </appender> <!-- additional fooSystem logging --> <appender name="FooLogFile" class="org.apache.log4j.FileAppender"> <param name="File" value="foo.log" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %t [%-40.40c] %x - %m%n"/> </layout> </appender> <!-- foo logging --> <logger name="com.example.foo"> <level value="DEBUG"/> <appender-ref ref="FooLogFile"/> </logger> <!-- default logging --> <root> <level value="INFO"/> <appender-ref ref="MainLogFile"/> </root> </log4j:configuration>
Таким образом, все информационные сообщения записываются в server.log; Напротив, foo.log содержит только сообщения com.example.foo, включая сообщения уровня отладки.
источник
У меня был этот вопрос, но с изюминкой - я пытался записывать разный контент в разные файлы. У меня была информация для журнала отладки LowLevel и журнала пользователя HighLevel. Я хотел, чтобы LowLevel переходил только к одному файлу, а HighLevel - к файлу и syslogd.
Мое решение состояло в том, чтобы настроить 3 приложения, а затем настроить ведение журнала следующим образом:
log4j.threshold=ALL log4j.rootLogger=,LowLogger log4j.logger.HighLevel=ALL,Syslog,HighLogger log4j.additivity.HighLevel=false
Мне было трудно понять, что в log4j.logger могло быть несколько добавленных файлов. Я пытался делать это по одной строчке за раз.
Надеюсь, это поможет кому-то в какой-то момент!
источник
Для основного файла журнала / приложения настройте,
.Threshold = INFO
чтобы ограничить то, что фактически регистрируется в приложении, до INFO и выше, независимо от того, включены ли в регистраторах DEBUG, TRACE и т. Д.Что касается отлова DEBUG и ничего выше этого ... вам, вероятно, придется написать собственный аппендер.
Однако я бы порекомендовал этого не делать, так как это может усложнить устранение неполадок и анализ:
источник
Демо-ссылка: https://github.com/RazvanSebastian/spring_multiple_log_files_demo.git
Мое решение основано на использовании конфигурации XML
spring-boot-starter-log4j
. Пример представляет собой базовый пример использованияspring-boot-starter
и двух регистраторов записи в разные файлы журнала.источник