1

私はログバック1.0.7でslf4j1.7.2を使用しています。stdoutに記録されるメッセージのレベルを設定するコマンドラインパラメータをJavaアプリケーションに提供できるようにしたい。たとえば-logLevel trace、すべてのメッセージがログに記録されますが-logLevel warning、警告とエラーのみが表示されます。ログは、アプリケーション内のすべてのロガー(=ルートロガー)から取得する必要があります。

現在、私は、によって、メッセージのみがstdoutに出力されることを保証するためのConsoleAppenderforを持っています。ルートロガーはそれを参照します。このアペンダーのフィルター処理されたレベルをプログラムで変更する方法がわかりません。これは、ログに記録されたレベルをコマンドラインパラメーターに基づいて作成する必要があります。System.outTresholdFilterinfo warningerror

diagnostics.txtstdoutにログに記録されるレベルは影響を受けるはずですが、ルートロガーがすべてのレベルをログに記録するようにしたいのです。たとえば、常にすべてのレベルが必要なファイルなど、他のアペンダーに送信されるからです。

乾杯!
コンラッド

4

1 に答える 1

2

Logbackの構成ファイルでは、変数を使用できます。Systemプロパティ(JVMの-Dパラメーター)を定義し、その値を構成ファイルで使用できます。構文は次のとおりです。

${VARIABLE_NAME}

-DSYSOUT_LOG_LEVEL = ERRORなどの変数を定義できるはずです。次に、logback.xmlファイルで、フィルターに特定のレベルを設定する代わりに、${SYSOUT_LOG_LEVEL}を使用できます。

<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  <level>${SYSOUT_LOG_LEVEL}</level>
</filter>
于 2013-02-22T19:00:41.670 に答える