log4net は、あなたがリストしたすべてのことを行っていると思います。
プラグイン可能なリスナーはアペンダーのように聞こえます-それらはたくさんあります.実際、ローリングログファイルをハッキングして、(ファイルの関連付けのために)常に .log で終わるようにし、電子メールアペンダーに cc フィールドを追加し、最終的に私のお気に入りの値を調整しました色付きのコンソール アペンダー。私がとても大胆かもしれません - 私の色付きのコンソールの幸福:
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<!-- Can Use:
Blue
Green
Red
White
Yellow
Purple
Cyan
HighIntensity
-->
<mapping>
<level value="FATAL" />
<foreColor value="Yellow, HighIntensity" />
<backColor value="Red" />
</mapping>
<mapping>
<level value="ERROR" />
<foreColor value="White" />
<backColor value="Purple, HighIntensity" />
</mapping>
<mapping>
<level value="WARN" />
<backColor value="Blue" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="INFO" />
<backColor value="Green" />
<foreColor value="White" />
</mapping>
<mapping>
<level value="DEBUG" />
<foreColor value="White" />
</mapping>
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />-->
<!--<conversionPattern value="%-5level %file:%line - %message%newline" />-->
<conversionPattern value="%level %logger:%line %newline %message%newline" />
</layout>
カスタマイズ可能なトレース スイッチ: Log4net には、詳細度の高い順に FATAL ERROR WARN INFO DEBUG のみが付属しています。私が実際に見逃しているのは、誰が何をしたかを記録するための AUDIT だけです。
カスタマイズ可能な構成: 実行時にロードする log4net.config ファイルを使用します (または、ログを c:\ に書き込み、構成が見つからないことを泣き言を言います)。
Try
' Get log4net configuration from file
Dim logConfigFile As FileInfo
logConfigFile = New FileInfo(".\log4net.config")
If logConfigFile.Exists Then
XmlConfigurator.Configure(logConfigFile)
Else
CreateEmergenceLogFile(logConfigFile.FullName)
End If
Catch ex As Exception
Console.Out.WriteLine("Could not load the log4net config file")
End Try
TraceListeners の大きなセットです。スキップしてすみません。あなたの言葉を信じます。
アクティビティ/スコープの相関: すべてのファイル (読み取りクラス) が、個別のログ レベルのしきい値を持つことができる独自の名前付きログを取得するということですか。実際、単一のクラスでもロギングをセグメント化できます(実際には、あまりにも多くのことを行うようになっている可能性があります...)
クラスファイルで:
Private Shared _logger As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
Private Shared _loggerAttribute As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName & ".Attribute")
Private Shared _loggerCache As log4net.ILog = _
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.FullName & ".Cache")
サービス トレース ビューアー: log4net.config 内:
<logger name="NipissingU.ADWrapper.EntryTools.Attribute">
<level value="INFO" />
</logger>
<logger name="NipissingU.ADWrapper.EntryTools.Cache">
<level value="WARN" />
</logger>
それはすべて app.config/web.config で構成可能です。ASP.NET ではそれが良いことなのかもしれませんが、わかりませんが、リッチ クライアント Bean カウント アプリを作成するときは、別の構成ファイルが好きです。
ここにあるものはすべて、私自身のちょっとした使い方のトリックです。
hth、-マイク