私は Eclipse プラグイン (技術的には OSGi プラグイン) の開発を始めていますが、最初に遭遇した問題の 1 つは、通常のように commons-logging 出力を制御できないように見えることです。
プラグインの依存関係に commons-logging パッケージを含めました。実際、何かをログに記録すると (INFO 以上の重大度で)、コンソールにログが記録されます。ただし、下位レベル (DEBUG や TRACE など) ではログを記録できないようです。
log4j.properties ファイルを指定しました。これはクラスパス上にあります (commons-logging パッケージと同じように、ランタイムの場合) が、そのプロパティ ファイルの設定はロガーの動作に影響しません。
log4j.properties ファイルは次のとおりです。
# Log4j Logging levels, in order of decreasing importance are:
# FATAL, ERROR, WARN, INFO, DEBUG, TRACE
#
# Root logger option
log4j.rootLogger=ERROR,stdout
#,LOGFILE
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %r (%l) %t%n - %m%n
ロガーの出力を実際に制御するには、どうすればよいですか?
フォーマットが java.util.logging のデフォルトと一致するか、他のヒントを提供することを期待して、いくつかのサンプル出力メッセージを次に示します。
Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
SEVERE: fatal_message
Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
WARNING: warn_message
Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
INFO: info_message
アップデート:
私は今、次のさまざまな組み合わせを試しました。
- org.osgi.service.log.LogService など。
- slf4j
- Log4J
- コモンズロギング
- java.util.logging
また、 OSGi をプロンプトから手動で実行している場合にのみ、DEBUG またはそれ以下のレベルのメッセージが表示されます (これは私が開発しているものには非現実的です)。さらに、さまざまなプロパティ ファイルを介して、他の種類のログ構成に影響を与えることはできません。その点で私が試みることはすべて、日食の設定によって上書きされるようです。
また、上記のライブラリのさまざまな構成ファイルを、ここで提案されているようにそれぞれのライブラリに接続されたプラグイン フラグメントなど、さまざまな場所に配置しようとしましたが、それでも同じ結果が発生します。
私はカスタム LogListener を実装し、System.out.println を使用してログ メッセージのパス全体をトレースし (とにかく方法は知っています)、デバッグ メッセージは、基礎となるログ API によって出力されるまで存在します。私は使用していますが、それらは消えます。