zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    node.js_1
    CSS实现垂直居中的方法
    Javascript实现图片的预加载的完整实现------》转载自(空城计-Code记)
    面向对象----选项卡
    for循环执行步骤
    适配器模式 在Android中的简单理解
    单例模式
    Android的ImageLoader图片加载简单逻辑
    在魅族手机上使用ObjectAnimator竟然不兼容?原来是这样……
    Android异步消息处理机制,Handler,Message,Looper的简单理解
  • 原文地址:https://www.cnblogs.com/ucetgg/p/log4net.html
Copyright © 2011-2022 走看看