35

log4j にはプロパティがありlog4j.debug、ロギング システムの構成に実際に使用された構成ファイルをユーザーに示すのに役立ちます。

(そうでなければ優れた) Logback ロギング フレームワークと同等のものを見つけることができませんでした。実行時に (診断目的で) 印刷する方法はありますか? Logback が自身をブートストラップするために使用した構成ファイル

[編集] 明確にするために、構成ファイル自体を変更する必要のないソリューションが理想的です (たとえば、不適切にアセンブルされたサードパーティの JAR が誤って取得される可能性があり、logback 構成の前にXML)。

4

4 に答える 4

35

Logback デバッグ情報を出力するように Java システム プロパティを設定できます。

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

これは、自動ステータス出力の Logback ドキュメント(一番下にステータス出力の強制について言及されています) とlogback.statusListenerClass プロパティによってさらに説明されています。

ステータス メッセージがない場合、不正な logback.xml 構成ファイルを追跡するのは困難な場合があります。特に、アプリケーション ソースを簡単に変更できない本番環境ではそうです。不正な構成ファイルの場所を特定するために、「logback.statusListenerClass」システム プロパティ (以下で定義) を介して StatusListener を設定し、ステータス メッセージの出力を強制することができます。「logback.statusListenerClass」システム プロパティを使用して、エラーが発生した場合に自動的に生成される出力を無音にすることもできます。

于 2016-01-28T21:25:49.450 に答える
27

に深く入りたい場合Logbackは、次のことができます。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.joran.util.ConfigurationWatchListUtil;

public class Main {

    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) throws Exception {
        LoggerContext loggerContext = ((ch.qos.logback.classic.Logger)logger).getLoggerContext();
        URL mainURL = ConfigurationWatchListUtil.getMainWatchURL(loggerContext);
        System.out.println(mainURL);
        // or even
        logger.info("Logback used '{}' as the configuration file.", mainURL);
    }
}

URLロードされた構成ファイルを出力します。

于 2013-09-20T17:53:05.127 に答える