一 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目前支持的输出方式包括:1 AdoNetAppender 将日志记录到数据库中。可以采用SQL和存储过程两种方式。2 AnsiColorTerminalAppender
在ANSI 窗口终端写下高亮度的日志事件。3 AspNetTraceAppender
能用asp.net中Trace的方式查看记录的日志。4 BufferingForwardingAppender
在输出到子Appenders之前先缓存日志事件。5 ConsoleAppender
将日志输出到控制台。6 EventLogAppender
将日志写到Windows Event Log.7 FileAppender
将日志写到文件中。8 LocalSyslogAppender
将日志写到local syslog service (仅用于UNIX环境下). 9 MemoryAppender 将日志存到内存缓冲区。10 NetSendAppender
将日志输出到Windows Messenger service.这些日志信息将在用户终端的对话框中显示。11 RemoteSyslogAppender
通过UDP网络协议将日志写到Remote syslog service。12 RemotingAppender
通过.NET Remoting将日志写到远程接收端。13 RollingFileAppender
将日志以回滚文件的形式写到文件中。14 SmtpAppender
将日志写到邮件中。15 TraceAppender
将日志写到.NET trace 系统。16 UdpAppender
将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。 三) 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怎么用于输出日志。本例中,日志将会记录到文件,控制台,事件日至和Access数据库中。一)主要代码:
复制代码 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-->1011<!--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-->
http://daisheshe.blog.163.com/blog/static/1309457102013316112341492/
http://www.cnblogs.com/qianlifeng/archive/2011/04/22/2024856.html