3

ランチャーのシステムプロパティを使用してクラスのログレベルを変更する方法はありますか?作業しているクラスに応じて、クラスのデバッグレベルを簡単かつ迅速に変更できるようにしたいと考えています。起動時に-Dcom.example.package.myclass.logger.level=TRACE
またはのようなものでそれを行うことができる
-Dcom.slf4j.trace=com.example.package.myclass

とても便利でしょう。

私はslf4j/logbackを使用していますが、log4jでそれを行う方法にも興味があります

プログラムでレベルを変更する方法は知っていますが、コードを変更する必要はなく、ランチャーだけを変更する必要があります

関連する場合は、構成ファイルを使用していますlogback-test.xml

それが不可能な場合、コードを変更したり、クリーンなxmlファイルを汚染したりせずにこれを行う別のトリックはありますか?

4

2 に答える 2

3

[アップデート]

私はあなたの質問を読み直しました、そして私たちはもっと近づくことができると思います。

logback.xmlに以下を追加します。

  <if condition='isDefined("com.slf4j.trace")'>
    <then>
      <logger name="${com.slf4j.trace}" level="TRACE"/>
    </then>
  </if>

Logback Setupページの説明に従って、CodehausJaninoおよびApachecommons-compilerjarをクラスパスに追加します。

今、あなたはあなたのアプリを起動します

-Dcom.slf4j.trace=com.example.package.MyClass
于 2012-11-15T01:38:30.310 に答える
0

ログバックドキュメントからのいくつかのアイデア:

Logback-classicは、構成ファイルの変更をスキャンし、構成ファイルが変更されたときに自動的に再構成できます。

<configuration scan="true" scanPeriod="30 seconds" > 
  ...
</configuration>

また、デフォルトの構成ファイルの場所をシステムプロパティとして指定することもできます。

java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1

だから、あなたがそれを説明したよりもさらに便利です。

于 2012-11-15T00:54:51.017 に答える