Log4Net

Log4Net很早以前就听说过 可一直没有仔细看过
终于有时间 想看看它了 花了点时间研究了下
1.介绍
Log4net是基于.net开发的一款非常著名的记录日志开源组件。他最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源于另外的一个非常著名的姐妹组件-log4j(可惜.net下怎么就没有这样优秀的软件首先出现呢,都要从j那边“引进”)。Log4net记录日志的功能非常强大。它可以将日志分不同的等级,比不同的样式,将日志输出到不同的媒介。
官方网站:http://logging.apache.org/log4net/
下载:http://logging.apache.org/log4net/download.html开源
下载包里包括.net 1.0/1.1/2.0等版本和各种平台下的DEMO
官方SDK:http://logging.apache.org/log4net/release/sdk/index.html
2.使用
   2.1引入log4net.dll组件
   2.2建立一个配置文件
两种方法,一种是在Web.Config或App.Config里
加入以下配置节

Code

上面的配置节,复制就可以用了加入log4net配置内容的定义,这个紧接着上面的内容定义在config文件里就可以了,下面是一个范例:

Code

   2.3 关联配置文件
当我们创建了上面的配置文件后,我们接下来需要把它和我们的应用联系起来。缺省的,每个独立的可执行程序集都会定义它自己的配置。log4net框架使用 log4net.Config.DOMConfiguratorAttribute在程序集的级别上定义配置文件。
例如:可以在项目的AssemblyInfo.cs文件里添加以下的语句
[assembly:log4net.Config.DOMConfigurator(ConfigFile="filename",
  ConfigFileExtension="ext",Watch=true/false)]
l         ConfigFile:[/B]指出了我们的配置文件的路径及文件名,包括扩展名。
l         ConfigFileExtension:[/B]如果我们对被编译程序的程序集使用了不同的文件扩展名,那么我们需要定义这个属性,缺省的,程序集的配置文件扩展名为”config”。
l         Watch (Boolean[/B]属性):[/B] log4net框架用这个属性来确定是否需要在运行时监视文件的改变。如果这个属性为true,那么FileSystemWatcher将会被用来监视文件的改变,重命名,删除等事件。
其中:ConfigFile和ConfigFileExtension属性不能同时使用,ConfigFile指出了配置文件的名字,例如,ConfigFile=”Config.txt”
ConfigFileExtension则是指明了和可执行程序集同名的配置文件的扩展名,例如,应用程序的名称是”test.exe”,ConfigFileExtension=”txt”,则配置文件就应该是”test.exe.txt” ;
对于Web网站 可以在Global.asax 配置如下:

Code


2.4 测试 
    

Code

3.说明:
  关键在于配置,弄清楚了2.2中的配置以后,对于使用就没有任何问题了。
  这个东西的强大是有很多中记录日志的方式,在我给出的配置文件里 写出了好几种记录输出方式,经过我亲自测试,都是可以使用的。其实还有很多记录输出方式(参见http://www.cnblogs.com/shyblog/archive/2008/11/18/1336052.html),感觉很少会用到,我这里就没有提到了。
个人推崇的三种记录日志方式:
(1)数据库记录(如果不影响系统性能,此为首选,方便查询与统计)
(2)windows 事件日志 (这个使我感到它的强大)
(3)电子邮件
其实在实际过程中可以筛选,或者多种输出方式交替使用,比如 所有类型的日志都记录到数据库,等级在WARN以上的日志记录到windows或者文本中,ERROR类型以上的的发送到管理员邮箱。
4.其他:
   其实还有很多配置和使用我没有了解清楚,这个还有待以后具体了解。
   同时我还碰到几个问题
(1)日志记录近数据库时,感觉有较长的延时(慢5分钟左右,数据库为SQL Server 2000),不知为何
(2)若用多种方式,或者仅用一种方式输出日志时,对系统性能是否有较大影响
(3)应用系统出了关键错误时,那个时候log4net是不是根本就没发发挥作用了,因为系统挂掉了~
5.参考文章(排名部分先后):
(1)Log4Net使用指南 http://www.cnblogs.com/dragon/archive/2005/03/24/124254.html
(2)解决log4net独占日志文件的问题以及 log4net的各种输出配置(Appender) http://www.cnblogs.com/jacktu/archive/2007/12/05/984487.html
(3).NET开源项目介绍及资源推荐:日志记录  http://www.cnblogs.com/Terrylee/archive/2006/12/03/opensource_framework_and_resource_recommendation_Log.html
(4)Log4Net五步走 http://heroman.cnblogs.com/archive/2006/01/09/314053.html
(5)Log4Net 开发文档 http://www.cnblogs.com/macroxu-1982/archive/2008/12/04/1347407.html
(6)Log4net学习笔记  http://www.cnblogs.com/agtaimaer/archive/2008/11/15/log4net.html
(7)DEMO下载 https://files.cnblogs.com/agtaimaer/Log4netDemo.rar

原文地址:https://www.cnblogs.com/ucetgg/p/log4net.html