Запуск журнала в отладочном режиме

Недавно я переключился с 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.