「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
詳細 †
コンパチ可能なリプレース †
- lon4net を NLogにリプレース。
- 足回り(ライブラリ)をリプレースするだけで、設計自体は変更しない。
- そのため、ユーザコード側の変更を最小限に抑える。
- ただし、NLogの定義などを一気に揃える必要がある。
DIコンテナでは難しい。 †
DIだと、config処理をユーザ側に持たせる必要がある。
(Program.csや、Setup.csに書かせるようなconfigをユーザ側に強いる)
- 下位スタックでDIされたLoggerを使用する場合、
共通I/Fが無いならレイトバインドするしかない。
- 共通I/Fがあれば、下位はインターフェイスのみ実装し、
config用ライブラリも含め、実体を上位からDIすることもできるのだが。
- lon4net と NLogに共通のインターフェイスは無い。
- 従って、コンパチの情報もない。
- DIはユーザ・レイヤでのみ可能。
- よくよく考えると、DIされたLoggerを、基盤側で使用している
ようなケースは無い(ASP.NET Coreでも無い)ですね...。
ベースクラス2からDIすれば、
最小限の初期化コードで済みそう。
- Public(ライブラリ)側に、
共通I/F(純粋仮想関数)を定義する。
- Business(ベースクラス2)側に、
- 共通I/Fを継承した、ManagerとLoggerを定義する。
- Businessで初期化を行い、PublicにDIする。
- Publicの共通I/F(純粋仮想関数)経由でログ出力する。
ただ、初期化処理自体が面倒という話もある。
- 依存ライブラリが少ないので両方サポートしても良さそう。
- 実装の方法
- LogIF内部をIF文で分割。
- LogManager?内部でクラスを分割。
ログ出力方式 †
参考 †
マイクロソフト系技術情報 Wiki †
OpenTouryoProject?/OpenTouryo? †