私はOSGiと宣言型サービス(DS)を使用しており、現在、ロギングを適切に処理する方法を考えています。私はとにかくDSを使用しているので、OSGiサービス大要で指定されたLogServiceを必須のサービス参照として使用するのは自然なことのようです。私はネットのekkesコーナーやnogunnersのブログでたくさん読んでいますが、まだ何かがはっきりしていません。
さまざまなサービスコンポーネント(またはファクタリングされたコンポーネントを使用する場合はさまざまなサービスコンポーネントインスタンス)を適切に区別するにはどうすればよいですか?
Logbackを使用したLogListenerの初心者の実装を見ると、彼はそれらを区別するためにbundlecontextからBundle-Idを使用しています。これまでのところわかりました。しかし、サービスコンポーネントをどのように区別しますか?LogServiceオブジェクトには当然BundleContextへの参照が含まれていますが、(LogServiceインターフェイスを見ると)ServiceReferenceはユーザー(実際に何かをログに記録するユーザー)自身が指定する必要がありますか?これは私には壊れやすいようです。フレームワークがBundleContextを提供するのに、なぜこれを提供できないのですか?
そして、私がそれに取り組んでいる間、なぜOSGi仕様logger.log(LogService.LOG_INFO,...)
は準標準logger.info(...), logger.warn(..)
などの代わりに冗長を使用するのですか?それには特別な理由がありますか?