Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

詳細

コンパチ可能なリプレース

  • lon4netNLogにリプレース。
    • 足回り(ライブラリ)をリプレースするだけで、設計自体は変更しない。
    • そのため、ユーザコード側の変更を最小限に抑える。
    • ただし、NLogの定義などを一気に揃える必要がある。
  • コンパチブルにする
    • 以下の何れかの設計変更が必要になる。
    • コレにより、lon4netからNLogに、段階的に移行可能になる。

DIコンテナでは難しい。

DIだと、config処理をユーザ側に持たせる必要がある。
(Program.csや、Setup.csに書かせるようなconfigをユーザ側に強いる)

  • 共通I/F
  • 下位スタックでDIされたLoggerを使用する場合、
    共通I/Fが無いならレイトバインドするしかない。
  • 共通I/Fがあれば、下位はインターフェイスのみ実装し、
    config用ライブラリも含め、実体を上位からDIすることもできるのだが。
  • lon4netNLogに共通のインターフェイスは無い。
    • 従って、コンパチの情報もない。
    • DIはユーザ・レイヤでのみ可能。
  • よくよく考えると、DIされたLoggerを、基盤側で使用している
    ようなケースは無い(ASP.NET Coreでも無い)ですね...。

ベースクラス2からDIする。

ベースクラス2からDIすれば、
最小限の初期化コードで済みそう。

  • Public(ライブラリ)側に、
    共通I/F(純粋仮想関数)を定義する。
  • Business(ベースクラス2)側に、
    • 共通I/Fを継承した、ManagerとLoggerを定義する。
    • Businessで初期化を行い、PublicにDIする。
  • Publicの共通I/F(純粋仮想関数)経由でログ出力する。

ベースクラス1や共通部品内で完結させる。

ただ、初期化処理自体が面倒という話もある。

  • 実装の方法
    • LogIF内部をIF文で分割。
    • LogManager?内部でクラスを分割。

ログ出力方式

lon4net

NLog

参考

マイクロソフト系技術情報 Wiki

OpenTouryoProject?/OpenTouryo?


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-05-25 (火) 02:06:29 (156d)