Запуск журнала в отладочном режиме
Недавно я переключился с log4j на logback и задаюсь вопросом, есть ли простой способ запустить logback в режиме отладки, аналогично свойству log4j log4j.debug
. Мне нужно посмотреть, откуда он берет мой logback.xml
.
В документах упоминается использование StatusPrinter
для распечатки внутреннего состояния журнала, но для этого потребуется изменение кода.
Ответы
Ответ 1
[EDIT]
Это исправлено в Logback 1.0.4. Теперь вы можете использовать -Dlogback.debug=true
для включения отладки установки журнала.
- Старый ответ -
К сожалению, нет возможности включить отладку через свойство System. Вы должны использовать <configuration debug="true">
в logback.xml
. Отправьте запрос функции.
Ответ 2
Вот как я это делаю. Я установил системное свойство, называемое "log.level", затем ссылаюсь на него в logback.xml.
Изменить: Недостатком является то, что вы ДОЛЖНЫ иметь всегда установлен "log.level". Способ, которым я занимаюсь этим, - проверить мой основной метод и установить его в 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>
Ответ 3
Я не мог заставить его работать, используя выбранный ответ. Однако работало следующее:
java -Dlogback.configurationFile=/path/to/config-debug.xml com.domain.Main
Просто добавьте файл (config-debug.xml
в этом примере) где-нибудь на вашем сервере и оставьте его там, когда вам нужно отлаживать. Как показано ниже.
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{dd-MMM-yyyy HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
Запустите приложение, используя вышеупомянутый параметр -D
.
Когда все вернется к нормальному состоянию, удалите параметр -D
и перезапустите приложение.
Источник: Глава 3: Конфигурация протокола
Ответ 4
Вы можете установить класс слушателя состояния через системное свойство:
java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener ...
Смотрите: Руководство по протоколу
Ответ 5
В eclipse вы можете иметь несколько конфигураций запуска. Откройте свой основной класс. Перейдите в раскрывающееся меню Debug на панели инструментов eclipse и выберите "Конфигурации отладки". Нажмите значок "Новый запуск" в левом верхнем углу. Дайте вашему стартовому конфигурированию лучшее имя. Перейдите на вкладку "Аргументы" под именем и введите -Dlog.level = debug или что угодно. Нажмите "Закрыть" или "Отладить"
Вы можете сделать это снова и указать, например, -Dlog.level = warn.