我认为log4net正在为您列出的所有内容。
可插拔侦听器听起来像附加器,实际上有很多附加器,实际上,我什至修改了滚动日志文件,使其始终以.log结尾(用于文件关联),在电子邮件附加器中添加了抄送字段,并最终调整了我喜欢的值彩色的控制台附加程序。如果我这么大胆-彩色控制台的幸福感:
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<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="%level %logger:%line %newline %message%newline" />
</layout>
可自定义的跟踪开关:Log4net仅随详细程度的增加而附带致命错误警告信息调试。我真正想念的唯一一个是谁做了什么日志记录的审核。
可自定义的配置:我使用在运行时加载的log4net.config文件(或将日志写到c:\抱怨找不到我的配置。)
Try
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-麦克