現在私はlog4j2に切り替えています。私はOSGi環境で作業しています。 log4j 2.7ブランチにOSGiの問題が2つありました。私は最終的なライブラリとして2.8を取得するよう奨励しました。
事は、私は私のプロジェクトで実装されたカスタムPatternConvertersのカップルを持っていると私は彼らがロードされ、そのうちの少なくとも10はありますが、Log4j 2.8はOSGi環境でカスタムコンバータをロードできません
DEBUG Initializing configuration XmlConfiguration[location=C:\Program Files\...\etc\log4j2.xml]
.
.
DEBUG Took 0,001043 seconds to load 0 plugins from package common.audit.sink.impl.log4j2.converter
を認識持って管理することはできませんです。以下のようなエラーがこの後の結果:
DEBUG Building Plugin[name=layout, class=org.apache.logging.log4j.core.layout.PatternLayout].
DEBUG PatternLayout$Builder(pattern="%ED;...
ERROR Unrecognized format specifier [ED]
ERROR Unrecognized conversion specifier [ED] starting at position 3 in conversion pattern.
は、私は、必要に応じて設定するほとんどすべてを(それはとにかく2.7で働いていた)があります。
注釈付きプラグインの実装との両方のnewInstance、フォーマット方法はthis guide
に従ってlog4j2.xmlにパッケージ宣言実装:プラグインメタデータは*で発生し、存在する
<Configuration status="trace" name="Systemtest_Server" packages="common.audit.sink.impl.log4j2.converter">
した.jarプラグインを含むバンドル
META-INF\org\apache\logging\log4j\core\config\plugins\Log4j2Plugins.dat
log4j-core- 2.8.jarバンドルは、Equinoxコンテナの起動時にlog4j-api-2.8.jarとともにアクティブになります。設定ファイルはシステムのプロパティで指し示され、動作します(私が受け取るデバッグメッセージから明らかです)。
しかし、私はそれがorg.apache.loggingをインポートするためにのlog4j-API-2.8.jarを修正するまで、私は同じ例外に直面していたように私の問題のようなものであるのlog4jのJira、上に報告this issueを見つけました。 log4j.core.utilパッケージので、サーバが正常に起動します。これがOSGiのlog4j2の非拡張性をもたらすかもしれないことを示唆するコメントがいくつかあります。
この問題を解決する方法はいくつかあります(クイックフィックスで十分です)。あるいは、私がここで設定するのを忘れるかもしれない何かがありますか?
ありがとうございました。