Запуск Logback в режиме отладки
Я недавно перешел с log4j на logback и хотел бы узнать, есть ли простой способ запустить logback в режиме отладки, аналогичный свойству log4j.debug
в log4j. Мне нужно увидеть, откуда он берет мой файл logback.xml
.
В документации упоминается использование StatusPrinter
для вывода внутреннего статуса logback, но это потребует внесения изменений в код.
3 ответ(ов)
[ИЗМЕНЕНИЕ]
Эта проблема была исправлена в Logback 1.0.4. Теперь вы можете использовать -Dlogback.debug=true
для включения отладки настройки Logback.
-- Старый ответ --
К сожалению, на данный момент нет способа включить отладку через системное свойство. Вам нужно использовать <configuration debug="true">
в файле logback.xml
. Пожалуйста, подайте запрос на добавление этой функции.
Вот как я это делаю. Я устанавливаю системное свойство с названием log.level
, а затем ссылаюсь на него в logback.xml
.
Редактирование: Недостаток в том, что log.level
всегда должен быть установлен. Чтобы с этим справиться, я проверяю это в своем методе main
и устанавливаю уровень на INFO
, если он еще не задан, обязательно делаю это перед первыми вызовами логирования. Тогда я могу переопределить его из командной строки и иметь разумное значение по умолчанию.
Вот как это выглядит в моем logback.xml
:
<configuration>
<logger name="com.mycompany.project" level="${log.level}" />
<logger name="httpclient" level="WARN" />
<logger name="org.apache" level="WARN" />
<logger name="org.hibernate" level="WARN" />
<logger name="org.hibernate.cfg.AnnotationBinder" level="WARN" />
<logger name="org.hibernate.cfg.annotations" level="WARN" />
<logger name="org.quartz" level="WARN" />
<logger name="org.springframework" level="WARN" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-16thread] %-5level %-35.35logger{30} - %msg%n</pattern>
</encoder>
</appender>
<root level="${log.level:-INFO}">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Это довольно просто. Вы можете использовать следующий вариант:
log.level = debug
в файле application.properties
вашего Spring Boot приложения.
Либо вы можете установить уровень логирования в файле конфигурации logback.xml
, добавив следующий код:
<root level="${log.level}">
<appender-ref ref="ANY_APPENDER" />
</root>
Оба подхода позволят вам настроить уровень логирования в вашем приложении.
Как зарегистрировать SQL-запросы в Spring Boot?
java.util.logging.Logger не учитывает уровень java.util.logging.Level?
Знаете ли вы о каких-либо инструментах для анализа логов сборки мусора в Java? [закрыто]
Что значит 'synchronized'?
Как объявить массив в одну строку?