[[Open棟梁>https://github.com/OpenTouryoProject]] wiki
「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>アプリケーション設計のポイント]]

*目次 [#h94eb5ed]
#contents

*概要 [#e0d82e07]
ログ出力方式について纏める。
-ページを分割しました。
-本ページへのアンカーは、[[ログ出力方式 (lon4net)>#c71097de]]を、ご参照ください。

Open棟梁では内部でlon4netを使用しているので、~
個々の記述は ≒ lon4netの仕様を説明となっている。
*詳細 [#u9a4036f]

*出力先 [#g907f29b]
アペンダで定義する。
アペンダには以下のような種類がある。
**コンパチ可能なリプレース [#w42698ff]
-[[lon4net>#c71097de]] を [[NLog>#v2ab16ed]]にリプレース。
--足回り(ライブラリ)をリプレースするだけで、設計自体は変更しない。
--そのため、ユーザコード側の変更を最小限に抑える。
--ただし、[[NLog>#v2ab16ed]]の定義などを一気に揃える必要がある。

名前空間は、log4net.Appender
ベースクラスは、.AppenderSkeleton
-コンパチブルにする
--以下の何れかの設計変更が必要になる。
--コレにより、[[lon4net>#c71097de]]から[[NLog>#v2ab16ed]]に、段階的に移行可能になる。

-参考:Apache log4net – Apache log4net: Config Examples~
https://logging.apache.org/log4net/release/config-examples.html
***DIコンテナでは難しい。 [#h11838cb]
DIだと、config処理をユーザ側に持たせる必要がある。~
(Program.csや、Setup.csに書かせるようなconfigをユーザ側に強いる)

**ファイル [#g9c6971b]
-.FileAppender~
テキストファイル
-.RollingFileAppender~
ローリング・テキストファイル
-共通I/F

**イベントログ [#i7123a08]
-.EventLogAppender
--下位スタックでDIされたLoggerを使用する場合、~
共通I/Fが無いならレイトバインドするしかない。

**DB [#r4d9bf6f]
-.AdoNetAppender
-.AdoNetAppenderParameter
--共通I/Fがあれば、下位はインターフェイスのみ実装し、~
config用ライブラリも含め、実体を上位からDIすることもできるのだが。

**コンソール [#s820b4d0]
-.ConsoleAppender
-.ColoredConsoleAppender
--[[lon4net>#c71097de]] と [[NLog>#v2ab16ed]]に共通のインターフェイスは無い。
---従って、コンパチの情報もない。
---DIはユーザ・レイヤでのみ可能。

-.DebugAppender
-よくよく考えると、DIされたLoggerを、基盤側で使用している~
ようなケースは無い(ASP.NET Coreでも無い)ですね...。

-.TraceAppender~
System.Diagnostics.Trace system
***[[ベースクラス2]]からDIする。 [#j990ed96]
[[ベースクラス2]]からDIすれば、~
最小限の初期化コードで済みそう。

-Public(ライブラリ)側に、~
共通I/F(純粋仮想関数)を定義する。

**ネットワーク [#u6f73c8e]
-.UdpAppender
-.NetSendAppender
-.TelnetAppender
-.SmtpAppender
-.SmtpPickupDirAppender
-.RemotingAppender
-Business([[ベースクラス2]])側に、
--共通I/Fを継承した、ManagerとLoggerを定義する。
--Businessで初期化を行い、PublicにDIする。

**Syslog(LinuxおよびUNIX) [#g7f451b2]
-.LocalSyslogAppender
-.RemoteSyslogAppender
-Publicの共通I/F(純粋仮想関数)経由でログ出力する。

**その他 [#u103adde]
-.AnsiColorTerminalAppender
-.AppenderCollection
***[[ベースクラス1]]や共通部品内で完結させる。 [#j9f65813]
ただ、初期化処理自体が面倒という話もある。

-依存ライブラリが少ないので両方サポートしても良さそう。
--https://www.nuget.org/packages/log4net/
--https://www.nuget.org/packages/NLog/

-.BufferingAppenderSkeleton
-.BufferingForwardingAppender
-.ForwardingAppender
-.MemoryAppender
-.TextWriterAppender
-実装の方法
--LogIF内部をIF文で分割。
--LogManager内部でクラスを分割。

-.AspNetTraceAppender~
ASP.NET TraceContext
**ログ出力方式 [#d49a9d28]
***[[lon4net>ログ出力方式 (lon4net)]] [#c71097de]
***[[NLog>ログ出力方式 (NLog)]] [#v2ab16ed]

-.OutputDebugStringAppender~
OutputDebugString Win32API
*参考 [#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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS