Запустите Logback в Debug - PullRequest
       8

Запустите Logback в Debug

32 голосов
/ 27 сентября 2010

Я недавно переключился с log4j на logback, и мне интересно, есть ли простой способ запустить logback в режиме отладки, похожий на свойство log4j.debug log4j. Мне нужно посмотреть, где он забирает мой logback.xml.

В документах упоминается использование StatusPrinter для распечатки внутреннего статуса logback, но для этого потребуются изменения кода.

Ответы [ 5 ]

50 голосов
/ 27 сентября 2010

[EDIT]

Это было исправлено в Logback 1.0.4.Теперь вы можете использовать -Dlogback.debug=true, чтобы включить отладку настройки logback.

- Старый ответ -

К сожалению, нет способа включить отладку с помощью свойства System.Вы должны использовать <configuration debug="true"> в logback.xml.Пожалуйста, отправьте запрос функции.

4 голосов
/ 04 мая 2011

Вот как я это делаю.Я устанавливаю системное свойство с именем 'log.level', а затем ссылаюсь на него в logback.xml.

Edit: Недостатком является то, что вы ДОЛЖНЫ всегда иметь значение 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>
1 голос
/ 01 ноября 2017

Вы можете установить статус слушателя класса через системное свойство:

java -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener ...

См .: Руководство по возврату

1 голос
/ 04 мая 2017

Я не мог заставить его работать, используя выбранный ответ.Однако сработало следующее:

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: Настройка обратного входа

0 голосов
/ 28 сентября 2016

В eclipse вы можете иметь несколько конфигураций пробега. Откройте свой основной класс. Перейдите в раскрывающийся список «Отладка» на панели инструментов «Затмение» и выберите «Отладка конфигурации». Щелкните значок «Новая конфигурация запуска» в левом верхнем углу. Дайте вашей конфигурации запуска лучшее имя. Перейдите на вкладку «Аргументы» под именем и введите -Dlog.level = debug или что угодно. Нажмите Закрыть или Отладить

Вы можете сделать это снова и указать, например, -Dlog.level = warn.

...