我认为log4net正在做你为我列出的每一件事.
可插入侦听器听起来像是appender——有很多,事实上,我甚至侵入了滚动日志(log)文件,以始终结束.日志(log)(用于文件关联),向邮箱appender添加了一个cc字段,并最终为彩色控制台appender调整了我最喜欢的值.
<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>
可定制的跟踪switch :Log4net仅附带致命错误警告信息DEBUG,按详细程度递增的顺序.我实际上唯一错过的是对谁做了什么日志(log)的审计.
可定制配置:我使用log4net.我在运行时加载的配置文件(或者写一个日志(log)到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:很抱歉跳过这一集-我相信你的话.
活动/作用域的关联:你是说像每个文件(读类)都有自己的命名日志(log),可以有单独的日志(log)级别阈值吗.事实上,您甚至可以在单个类中对日志(log)进行分段(事实上,这可能已经变得太多了…)
在类文件中:
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中.配置:
<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,
-迈克