我认为 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 for who-did-what 日志记录。
可定制的配置:我使用在运行时加载的 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,-迈克