「[[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"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS