• log4net应用


    1.写配置文件。

    log4net.config
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <log4net>
        <!--所有logger的基,root的设置在所有logger中都起作用。 
            当在root和logger中重复设定相同的appender时,你会发现同一日志信息将被记录两次。-->
        <!--<root> 
                <level value="ALL"/> 
                <appender-ref ref="FileAppender"/> 
                <appender-ref ref="ConsoleAppender"/> 
            </root>-->
        
        <logger name="logger">
          <!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
          <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
          <level value="INFO" />
          <appender-ref ref="FileAppender"></appender-ref>
        </logger>
    
    
        <appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
          <!--路径-->
          <!--<file value="\\log.txt"></file>-->
          
          <!--路径,在项目的根目录下-->
          <!--以最后一个路径为准-->
          <file value="./Log/log.txt"></file>
          
          <!--防止多线程时不能写Log,线程非安全-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          
          <appendToFile value="true" />
          
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <rollingStyle value="composite" />
          
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <maxSizeRollBackups value="10" />
          
          <!--当备份文件时,为文件名加的后缀-->
          <datePattern value="_yyyy-MM-dd.txt" />
          
          <!--可用的单位:KB|MB|GB-->
          <!--不要使用小数,否则会一直写入当前日志-->
          <maximumFileSize value="1024KB" />
          
          <!--置为true,当前最新日志文件名永远为file节中的名字-->
          <staticLogFileName value="true" />
          
          <!--输出级别在INFO和ERROR之间的日志-->
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="INFO" />
            <param name="LevelMax" value="ERROR" />
          </filter>
          
          <!--必须结合起来用,第一个只过滤出WARN,第二个拒绝其它其它日志输出-->
          <!--<filter type="log4net.Filter.LevelMatchFilter">
            <param name="LevelToMatch" value="WARN" />
          </filter>
          <filter type="log4net.Filter.DenyAllFilter" />-->
    
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="
              %n异常时间:%d [%t]  
              %n异常级别:%-5p
              %n异 常 类:%c [%x]
              %n文 件 名:%F
              %n行    号:%L
              %n异常信息:%m 
              %n " />
          </layout>
        </appender>
      </log4net>
    
    
      <!--==================layout节点的配置说明======================-->
      <!--        %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息                          -->
      <!--        %n(new line):换行                                                                   -->
      <!--        %d(datetime):输出当前语句运行的时刻                                                 -->
      <!--        %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数                           -->
      <!--        %t(thread id):当前语句所在的线程ID                                                  -->
      <!--        %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等                           -->
      <!--        %c(class):当前日志对象的名称,例如:                                                -->
      <!--               模式字符串为:%-10c -%m%n                                                    -->
      <!--               代码为:                                                                     -->
      <!--        ILog log=LogManager.GetLogger(“Exam.Log”);                                        -->
      <!--        log.Debug(“Hello”);                                                               -->
      <!--            则输出为下面的形式:                                                            -->
      <!--        Exam.Log       - Hello                                                              -->
      <!--        %L:输出语句所在的行号                                                              -->
      <!--        %F:输出语句所在的文件名                                                            -->
      <!--        %-数字:表示该项的最小长度,如果不够,则用空格填充                                  -->
      <!--        例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出: -->
      <!--        176 [main] INFO org.foo.Bar - Located nearest gas station.                         -->
      <!--                                                                                        -->
      <!--=========================================================-->
    
    </configuration>


    2.添加引用(废话)

    3.winform调用组件方法。

      在AssemblyInfo.cs文件中添加

      a.如果log4net的配置直接写在app.config里面的话添加

      [assembly: log4net.Config.XmlConfigurator(Watch=true)]

      b.如果log4net的配置单独写在一个文件中,则添加

      [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]

    4.web调用组件方法
      在Global.aspx.cs文件中的Application_Start方法中添加

      a.如果log4net的配置直接写在web.config里面的话添加

      log4net.Config.XmlConfigurator.Configure();

      b.如果log4net的配置单独写在一个文件中,则添加

      log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("log4net.config")));

    5.调用记录日志方法

    WriteLog
    static log4net.ILog log = log4net.LogManager.GetLogger("logger");
            public static void WriteLog(string message)
            {
                log.Info(message);
                //log.Warn(message);
                //log.Error(message);
                //...
            }

     6.测试效果。

    a.winform

    异常时间:2013-01-18 16:30:13,475 [1]            
    异常级别:ERROR          
    异 常 类:logger [(null)]          
    文 件 名:d:\Visual Studio Project\TestLog4Net\TestLog4Net\Form1.cs          
    行    号:25          
    异常信息:输入字符串的格式不正确。

    b.web

    异常时间:2013-01-18 16:44:02,527 [8]            
    异常级别:INFO           
    异 常 类:logger [(null)]          
    文 件 名:d:\Visual Studio Project\TestLog4Net\WebLog4NetTest\Default.aspx.cs          
    行    号:26          
    异常信息:输入字符串的格式不正确。

    7.测试发现一个问题。

    在winform中,行号记录的是实际发生错误的行。

    在web中,行号记录的是记录错误代码的行。

    不知道是什么原因。。。。

  • 相关阅读:
    BT协议分析(1)—1.0协议
    Qt线程(2) QThread中使用WorkObject
    新浪微博的开放平台官方文档太粗略,记:仿大平台来实现
    58同城 骗子太多
    代码实现业务经验(程序员的核心能力)
    gitbash 本地文件提交为一个新的项目 到 gitlab
    Spring 核心容器 IOC
    spring AOP 理解
    java不返回某些字段,包括 null
    CentOS7安装 Redis5 单实例
  • 原文地址:https://www.cnblogs.com/fishes/p/2866722.html
Copyright © 2020-2023  润新知