zoukankan      html  css  js  c++  java
  • 进阶系列三【绝对干货】----Log4.Net的介绍

    一、介绍

      当我们开发软件时,一般都会加入运行期的跟踪手段,以方便后续故障分析和Bug调试。.net framework本身提供了一个System.Diagnostics.Trace类来实现流程跟踪功能,但很多时候却不能满足我们的需求,这时往往需要一个更加强大的第三方日志系统。Log4Net是一个开源的日志记录组件。和其他开源组件一样,它也是从Java中移植过来的。log4net来源于java应用中的log4J。

    二、官网以及文档地址

    官方网站:http://logging.apache.org/

    下载地址:http://logging.apache.org/log4net/download_log4net.cgi 目前最新版本是1.2.15

    三、示例

    1、首先创建一个控制台程序

    2、在Nuget中下载Log4Net

    3、单独配置在xml文件中,当然也可以配置在App.config或Web.config中。配置信息下面详讲。

    4、在程序启动处读取日志配置信息,如果是CS程序,在根目录的Program.cs中的Main方法中添加下面语句。如果是BS程序,在根目录的Global.asax.cs(没有新建一个)中的Application_Start方法中添加:

    log4net.Config.XmlConfigurator.Configure();

    除了这种方式,也可以直接在项目的AssemblyInfo.cs文件里添加以下的语句来定义配置文件的路径信息。

    [assembly: log4net.Config.XMLConfigurator(ConfigFile = “log4net.config”, Watch = true)]

     5、在程序中使用Log4Net

    log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器
    
    log.Info(DateTime.Now.ToString() + ": login success");//写入一条新log

    可以定义多个log对象,每个log对象分别取配置文件不同的<logger>标记,每个<logger>分别取不同的appender。

    这样就可以用不同的log对象把日志输出到不同的文件或者其它介质。

    End。

    四、Log4Net的五大组成部分

    分别为:Logger记录器,Appenders附着器, Filters过滤器, Layouts 和Object Renders。

    4.1、Logger记录器

    Logger是应用程序需要交互的主要组件,它用来产生日志消息。产生的日志消息并不直接显示,还要预先经过Layout的格式化处理后才会输出。

    Log4net框架定义了一个叫做LogManager的类,用来管理所有的Logger对象。它有一个GetLogger()静态方法,用我们提供的名字参数来检索已经存在的Logger对象。如果框架里不存在该Logger对象,它也会为我们创建一个Logger对象。代码如下所示:

    log4net.ILog log = log4net.LogManager.GetLogger("logger-name");

    日志级别:

    Logger的Level属性可以设置为以下值,由高到低为OFF,FATAL,ERROR,WARN,INFO,DEBUG,ALL. 高于设定值方法都不能写入日志。
    Off所有的写入方法都不写到日志里,ALL则相反。例如当我们设成Info时,logger.Debug就会被忽略而不写入文件,但是FATAL,ERROR,WARN,INFO会被写入,因为他们等级高于INFO;

    4.2Appender

    一个好的日志框架应该能够产生多目的地的输出。比如说输出到控制台或保存到一个日志文件。log4net 能够很好的满足这些要求。它使用一个叫做Appender的组件来定义输出介质。正如名字所示,这些组件把它们附加到Logger日志组件上并将输出传递到输出流中。你可以把多个Appender组件附加到一个日志对象上。 Log4net框架提供了几个Appender组件。关于log4net提供的Appender组件的完整列表可以在log4net框架的帮助手册中找到。有了这些现成的Appender组件,一般来说你没有必要再自己编写了。但是如果你愿意,可以从log4net.Appender.AppenderSkeleton类继承。

    负责向存储介质中追加日志, 一般在配置文件中配置,根据保存日志介质的不同Appender有多种,
    比如:AdoNetAppender,EventLogAppender,RollingFileAppender等.参见:
    http://logging.apache.org/log4net/release/config-examples.HTML.

    4.3Filter

    负责过滤日志, 一般和Appender联合使用,在配置文件中配置

    4.4Layout

    负责日志消息的格式, 一般和Appender联合使用,在配置文件中配置。

     Layout 组件用于向用户显示最后经过格式化的输出信息。输出信息可以以多种格式显示,主要依赖于我们采用的Layout组件类型。可以是线性的或一个XML文件。Layout组件和一个Appender组件一起工作。API帮助手册中有关于不同Layout组件的列表。一个Appender对象,只能对应一个Layout对象。要实现你自己的Layout类,你需要从log4net.Layout.LayoutSkeleton类继承,它实现了ILayout接口。

    ----------------------------------------------------------------------

    log4net标签的框架如下, 该标签下有root, logger, appender等标签

    root标签

    所有的logger都从root继承, root本身也是一个logger

    logger标签

    每个logger标签代表一个logger,appender-ref表示该logger产生的日志消息传递给哪个appender,一个logger可以把相同的消

    息传递给多个appender记录

    appender标签

    每个appender表示一个日志的存储位置,name不能和type一样

    设定参数

     日志根据日期滚动

     日志文件名格式为

     日志文件名是否是固定不变的

    4.5散打

    五、Log4net.config配置

  • 相关阅读:
    页面使用本地IE版本
    C#获取客户端ip
    获取存储过程返回数据
    自制js表格排序
    读取数据用rs.open sql,conn,1,1
    学习存储过程
    COLLATE Chinese_PRC_CI_AS
    sqlserver存储过程语句(转)
    用P3P header解决iframe跨域访问cookie(转载)
    java通过dom创建和解析xml
  • 原文地址:https://www.cnblogs.com/duyao/p/5779404.html
Copyright © 2011-2022 走看看