一 Log4net简介 Log4net是基于.net开发的一款非常著名的记录日志开源组件。他最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源于另外的一个非常著名的姐妹组件-log4j。Log4net记录日志的功能非常强大。它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介。 Log4net可以从http://logging.apache.org/log4net/downloads.html网站下载最新版本。 二 Log4net核心组成 Log4net主要由五个部分组成,分别为Logger,Appenders, Filters, Layouts 和Object Renders。 一) Logger(日志) 1. 记录日志的分类: Log4net能够以多种方式输出日志。支持的日志输出常用的主要媒介有数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite,控制台,文件,事件日志(可以用事件查看器查看)和邮件等多种方式。 2. 日志的级别 Log4net支持多种级别的日志。优先级从高到低依次排列如下: FATAL > ERROR > WARN > INFO > DEBUG 此外还有ALL(允许所有的日志请求)和OFF(拒绝所有的日志请求)这两种特殊的级别。 二) Appenders Appenders决定日志输出的方式。 Appenders必须实现log4net.Appenders.IAppender接口。 Log4net目前支持的输出方式包括: 2 AnsiColorTerminalAppender 3 AspNetTraceAppender 4 BufferingForwardingAppender 5 ConsoleAppender 6 EventLogAppender 7 FileAppender 8 LocalSyslogAppender 10 NetSendAppender 11 RemoteSyslogAppender 12 RemotingAppender 13 RollingFileAppender 14 SmtpAppender 15 TraceAppender 16 UdpAppender 三) Filters Appender对象将日志以缺省的方式传到输出流,然后Filter可以按照不同的标准控制日志的输出。Filter可以再配置文件中配置。最简单的形式是在appender中写明一个Threshold.这样只有级别大于或等于此Threshold的日志才被记录。 Filters必须实现log4net.Filters.IFilter接口。 四) Layouts Layouts控制日志显示的格式样式。日志的显示格式如下: "%timestamp [%thread] %-5level %logger - %message%newline" Timestamp: 表示程序已经开始执行的时间。 单位[毫秒]。 Thread:执行当前代码的线程。 Level:日志的级别。 Logger:日志相关请求的名称。 Message: 日志消息。 Layouts还可以控制日志的输出样式,比如以普通形式或以xml等形式输出。 五) Object Renderers 这是很重要的一项,log4net将按照用户定义的标准输出日志消息。 Object Renders必须实现log4net.ObjectRenderer.IObjectRenerer接口。 三 如何在项目中使用log4net 下面有个基于控制台的demo,举例描述了log4net怎么用于输出日志。 一)主要代码: 1<!--log 4net config start-->
2 <configSections> 3 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 4 <sectionGroup name="ajaxNet"> 5 <section name="ajaxSettings" type="Ajax.AjaxSettingsSectionHandler, Ajax"/> 6 <section name="ajaxConverters" type="Ajax.AjaxConverterSectionHandler, Ajax"/> 7 </sectionGroup> 8 </configSections> 9<!--log 4net config end--> 10 11<!--log 4net config start--> 12 <log4net> 13 <appender name="file" type="log4net.Appender.FileAppender"> 14 <param name="File" value="log4/Web_Log.txt"/> 15 <param name="AppendToFile" value="true"/> 16 <layout type="log4net.Layout.PatternLayout"> 17 <!-- <param name="Header" value="[Log Begin.]" /> --> 18 <param name="ConversionPattern" value="%n %d %n %l %m%n"/> 19 <!-- <param name="Footer" value="[Log End.]" /> --> 20 </layout> 21 </appender> 22 <root> 23 <level value="All"/> 24 <appender-ref ref="stdout"/> 25 <appender-ref ref="file"/> 26 </root> 27 <logger name="*"> 28 <level value="All"/> 29 <appender-ref ref="stdout"/> 30 <appender-ref ref="file"/> 31 </logger> 32 </log4net> 33<!--log 4net config end--> |