web-dev-qa-db-ja.com

デバッグでログバックを実行する

私は最近log4jからlogbackに切り替えましたが、log4jのlog4j.debugプロパティのように、デバッグモードでlogbackを実行する簡単な方法があるかどうか疑問に思っています。 logback.xmlをどこから取得するかを確認する必要があります。

ドキュメントは、StatusPrinterを使用してログバックの内部ステータスを出力することを述べていますが、コードの変更が必要になります。

36
dogbane

[編集]

これはLogback 1.0.4で修正されています。 -Dlogback.debug=trueを使用して、ログバック設定のデバッグを有効にできるようになりました。

-以前の回答-

残念ながら、システムプロパティを介してデバッグを有効にする方法はありません。 <configuration debug="true">ではlogback.xmlを使用する必要があります。機能のリクエストを送信してください。

59
Aaron Digulla

これが私のやり方です。 「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>
4
David Roussel

システムプロパティでステータスリスナークラスを設定できます。

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

参照: ログバックマニュアル

1
deve

選択した答えを使用してそれを動作させることができませんでした。ただし、以下は機能しました。

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章:ログバック構成

1
Andres