• Log4net简介及在项目中的简单应用


    Log4net 是一个开源的类库,可以通过它将.NET 应用程序的日志记录到多种介质中(控制台、SMTP或者文本文件等)。Log4net 起源自Java应用中的log4J.

    日志的记录通过一个或多个logger来实现。logger为日志信息提供了五种不同级别(由低至高):

    1.Debug

    2.Information

    3.Warnings

    4.Error 

    5.Fatal

    每一个logger可以记录指定级别的日志信息,因此,5种不同级别的信息处理可有效帮助开发,而当项目发布后,你可以选择只记录Fatal级别的日志,这一切的配置都非常简单。

    如何指定日志信息保存的地址呢?Appender用于指定保存日志信息保存的路径。利用Appender可以将日志信息保存至数据库、email等。你可以通过配置使用多个Appender,用于向多个介质中存储日志信息并可控制记录不同级别的日志信息。Appender的配置在一个外置的XML文件中,配置它是一件极其简单的事。

    OK,我们知道通过Logger将日志信息保存到Appender指定的路径,而怎么指定日志信息保存的格式呢?Log4net通过配置每一个Appender的layouts来指定记录日志信息的格式。这些layouts指定日志信息是保有存为简单的文本还是XML文件,或是不是记录日志信息生成的时间等。

    下面用代码说明如何使用Log4net

    
    
    C# code
    using log4net;
    using log4net.Config;

    class LogTest
    {
        
    private static readonly ILog logger = LogManager.GetLogger(typeof(LogTest));

        
    static LogTest()
        {
            XmlConfigurator.Configure();
        }
        
    static void Main(string[] args)
        {
            logger.Debug(
    "Here is a debug log.");
            logger.Info(
    ".... and an Info log.");
            logger.Warn(
    ".... and a warning.");
            logger.Error(
    ".... and an error.");
            logger.Fatal(
    "... and a fatal error.");
        }
    }
    
    
    Web config
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      
      
    <configSections>
        
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
      
    </configSections>
      
      
    <log4net>
        
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
          
    <param name="File" value="LogTest.text"/>
          
    <param name="AppendToFile" value="true"/>
          
    <layout type="log4net.Layout.PatternLayout">
            
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
          
    </layout>
        
    </appender>
        
        
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
          
    <layout type="log4net.Layout.PatternLayout">
            
    <param name="Header" value="[Header]\r\n"/>
            
    <param name="Footer" value="[Footer]\r\n"/>
            
    <param name="ConversionPattern" value="%d %-5p -- Line:%L %F  %c %m%n"/>
          
    </layout>
        
    </appender>
        
        
    <root>
          
    <level value="Info"/>      <!--value可以指定Debug/Info/Warn/Error/Fatal中的任意一种-->
          
    <appender-ref ref="LogFileAppender"/>
          
    <appender-ref ref="ConsoleAppender"/>
        
    </root>
      
      
    </log4net>
    </configuration>

    控制台输出:

    console

    文本输出:

    txt

    layout 的参数ConversionPattern的值的含义:

    %d(date time):当前语句执行的时间

    %p(priority):日志当前级别(Debug,Info,eg)

    %L(line):输出语句所在的行号

    %F(file):输出语句所在的文件名

    %c(class):当前日志对象的名称

    %m(message):当前记录的日志信息

    %n(new line):换行

    %t(thread id):当前语句所在的线程ID

    %r(run time):输出程序从运行至执行当前语句消耗的毫秒数

    %-数字:表示该项的最小长度,不够用空格填充(如%-5p)

    注意:%后的字母区分大小写

    根据应用程序需要可创建多个logger记录不同信息,如一个logger专门记录bug信息,而另一个logger专门记录网站流量信息,关于如何创建多个logger,

    具体可参考:http://www.codeproject.com/KB/trace/log4net_intro2.aspx 

    关于logger对象的叠加,root 与自定义的logger之间存在继承关系(root 为父对象,自定义的logger为子对象),如果新建一个logger不与root 存在继承关系,可通过设置属性 additivity="false" 来完成。

    具体可参考:http://raderustc.blog.ccidnet.com/blog-htm-do-showone-type-blog-itemid-144436-uid-1406.html

      

    本文部分翻译自:http://www.codeproject.com/KB/trace/log4net_intro.aspx

  • 相关阅读:
    java url 获取文件_[转]从URL获取文件保存到本地的JAVA代码,url 请求设置http请求头
    解决Mybatis中出现的Invalid bound statement (not found)问题
    使用多线程往LIST添加数据 线程安全list
    spring BeanUtils 工具实现对象之间的copy 属性复制,属性拷贝
    idea 打开Service窗口一个管理所有服务的地方
    java实现大文件下载(http方式)
    Java @Override注解写与不写的区别
    Linux下C++共享内存
    Linux配置开机自启
    Linux中zsh出现 zsh: corrupt history file /XXX/.zsh_history解决办法
  • 原文地址:https://www.cnblogs.com/spirit/p/1584169.html
Copyright © 2020-2023  润新知