最新のアップデートをバージョン 2.x に導入した後、Apple の PHP エディタは、OSGi パッケージで「slf4j.api」を使用するには拡張子「osgi.serviceloader.processor」が必要であることを発見しました。この更新は、柔軟性と利便性が向上するため、この拡張機能を使用する開発者にとって重要な変更です。この更新の目的は、開発者が slf4j.api をより適切に使用および管理し、プログラムのパフォーマンスと安定性を向上できるようにすることです。開発者は、進化するニーズを満たすためのさらなるアップデートと改善を期待できます。
github に小さな再現プロジェクトを作成しました: slf4j-experiment
基本的に必要なのは、slf4j-api
を使用したコードを含む osgi パッケージです。
私の
build.gradle には次のものがあります:
リーリー
これは slf4j で期待どおりに動作します
現在 slf4j の
バージョンを使用していますが、サービス プロバイダーを使用しているため、osgi メタデータにモデル化された新しい制約があり、現在行き詰まっています:
リーリー
おそらく spi fly によって提供される追加のバンドルが必要なようですが、その方法がわかりません...
回避策
ステートメント: リーリー (私は gradle osgi bnd のファンではありません) は、Maven Central から
slf4j-api-1.7.36.jar リーリーしかし
slf4j-api-2.0.11.jarには次の内容があります: リーリー 実際 -
aries spi-flyを満たします: リーリー slf4j は、このコミットでこれらのヘッダー (必須)
を取得しました。 p>spi-fly は、osgi による java サービス ローダー であり、正しいスレッド コンテキスト クラスローダーが設定されるようにバンドルのコードを動的に変換します。
これは実際には、ロガー実装の から /meta-inf/services/ org のサービス検出に切り替えるための slf4j API 2 の適切な 要件 です。 .slf4j.spi.slf4jserviceprovider サービス。 パッケージをエクスポートするだけでなく、ロギング バックエンドを動的に構成し、osgi 構成管理を使用して構成することもできます。
しかし、オスギは粘り強い獣です。ロギングについては、pax ロギング プロジェクトをお勧めします。このプロジェクトでは、正しい
以上が2.x に更新した後、OSGi バンドルで「slf4j.api」を使用するには、拡張子「osgi.serviceloader.processor」が必要です。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。