「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>アプリケーション設計のポイント]] *目次 [#h94eb5ed] #contents *概要 [#e0d82e07] -ページを分割しました。 -本ページへのアンカーは、[[ログ出力方式 (lon4net)>#c71097de]]を、ご参照ください。 *詳細 [#u9a4036f] **コンパチ可能なリプレース [#w42698ff] -[[lon4net>#c71097de]] を [[NLog>#v2ab16ed]]にリプレース。 --足回り(ライブラリ)をリプレースするだけで、設計自体は変更しない。 --そのため、ユーザコード側の変更を最小限に抑える。 --ただし、[[NLog>#v2ab16ed]]の定義などを一気に揃える必要がある。 -コンパチブルにする --以下の何れかの設計変更が必要になる。 --コレにより、[[lon4net>#c71097de]]から[[NLog>#v2ab16ed]]に、段階的に移行可能になる。 ***DIコンテナでは難しい。 [#h11838cb] DIだと、config処理をユーザ側に持たせる必要がある。~ (Program.csや、Setup.csに書かせるようなconfigをユーザ側に強いる) -共通I/F --下位スタックでDIされたLoggerを使用する場合、~ 共通I/Fが無いならレイトバインドするしかない。 --共通I/Fがあれば、下位はインターフェイスのみ実装し、~ config用ライブラリも含め、実体を上位からDIすることもできるのだが。 --[[lon4net>#c71097de]] と [[NLog>#v2ab16ed]]に共通のインターフェイスは無い。 ---従って、コンパチの情報もない。 ---DIはユーザ・レイヤでのみ可能。 -よくよく考えると、DIされたLoggerを、基盤側で使用している~ ようなケースは無い(ASP.NET Coreでも無い)ですね...。 ***[[ベースクラス2]]からDIする。 [#j990ed96] [[ベースクラス2]]からDIすれば、~ 最小限の初期化コードで済みそう。 -Public(ライブラリ)側に、~ 共通I/F(純粋仮想関数)を定義する。 -Business([[ベースクラス2]])側に、 --共通I/Fを継承した、ManagerとLoggerを定義する。 --Businessで初期化を行い、PublicにDIする。 -Publicの共通I/F(純粋仮想関数)経由でログ出力する。 ***[[ベースクラス1]]や共通部品内で完結させる。 [#j9f65813] ただ、初期化処理自体が面倒という話もある。 -依存ライブラリが少ないので両方サポートしても良さそう。 --https://www.nuget.org/packages/log4net/ --https://www.nuget.org/packages/NLog/ -実装の方法 --LogIF内部をIF文で分割。 --LogManager内部でクラスを分割。 **ログ出力方式 [#d49a9d28] ***[[lon4net>ログ出力方式 (lon4net)]] [#c71097de] ***[[NLog>ログ出力方式 (NLog)]] [#v2ab16ed] *参考 [#r1886bdd] -log4net の開発休止宣言に伴い NLog に移行 - Life like a clown~ https://clown.cube-soft.jp/entry/2020/06/01/log4net-to-nlog **マイクロソフト系技術情報 Wiki [#j1c81919] ***OpenTouryoProject/OpenTouryo [#rd6b29af] -The log4net project would be dormanted. · Issue #363~ https://github.com/OpenTouryoProject/OpenTouryo/issues/363 -OpenTouryo/root/files/resource/Log at master~ https://github.com/OpenTouryoProject/OpenTouryo/tree/master/root/files/resource/Log -OpenTouryo/root/programs/CS/Frameworks/Infrastructure/Public/Log~ https://github.com/OpenTouryoProject/OpenTouryo/tree/master/root/programs/CS/Frameworks/Infrastructure/Public/Log --https://github.com/OpenTouryoProject/OpenTouryo/blob/master/root/programs/CS/Frameworks/Infrastructure/Public/Log/LogIF.cs --https://github.com/OpenTouryoProject/OpenTouryo/blob/master/root/programs/CS/Frameworks/Infrastructure/Public/Log/LogManager.cs -OpenTouryo/root/files/resource/Log at master~ https://github.com/OpenTouryoProject/OpenTouryo/tree/master/root/files/resource/Log IP:210.234.63.131 TIME:"2021-05-25 (火) 02:06:29" REFERER:"https://opentouryo.osscons.jp/index.php?cmd=edit&page=%E3%83%AD%E3%82%B0%E5%87%BA%E5%8A%9B%E6%96%B9%E5%BC%8F" USER_AGENT:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"