• log4net 使用相关要点汇总


    1,写log之前一定要初始化配置文档,相关代码如下:

    1 log4net.Config.XmlConfigurator.Configure(); //默认的
    2  
    3 log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath("../Log4Net.config")));

    2.配置文件样本

    01 Log4net.config配置文件的内容:
    02 <?xml version="1.0" encoding="utf-8"?>
    03 <log4net>
    04   <logger name="KangarooLog">
    05     <!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
    06     <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
    07     <level value="ALL" />
    08     <!--<appender-ref ref="SmtpAppenderKangaroo"></appender-ref>-->
    09     <appender-ref ref="FileAppenderKangaroo"></appender-ref>
    10   </logger>
    11   <appender name="SmtpAppenderKangaroo" type="log4net.Appender.SmtpAppender">
    12     <to value="Kangaroo@800best.com"></to>
    13     <from value="Kangaroo@800best.com" />
    14     <subject value="Kangaroo Log Message" />
    15     <smtpHost value="smtp.800best.com" />
    16     <username value="Kangaroo" />
    17     <password value="Kangaroo" />
    18     <bufferSize value="2048" />
    19     <!--超长部分是否丢弃-->
    20     <lossy value="false" />
    21     <!--evaluator时好时坏,靠不住,还是用filter实在-->
    22     <!--<evaluator type="log4net.Core.LevelEvaluator">
    23       <threshold value="ERROR"/>
    24     </evaluator>-->
    25     <!--<evaluator type="log4net.Core.LevelEvaluator,log4net">
    26       <threshold value="WARN" />
    27     </evaluator>-->
    28     <!--将导致不能写日志-->
    29     <!--<filter type="log4net.Filter.DenyAllFilter" />-->
    30     <!--输出级别在定义之间的日志-->
    31     <filter type="log4net.Filter.LevelRangeFilter">
    32       <param name="LevelMin" value="ALL" />
    33       <param name="LevelMax" value="OFF" />
    34     </filter>
    35     <layout type="log4net.Layout.PatternLayout">
    36       <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] : %newline%message%newline" />
    37     </layout>
    38   </appender>
    39   
    40  <appender name="FileAppenderKangaroo" type="log4net.Appender.RollingFileAppender">
    41     <!--绝对路径-->
    42     <!--<file value="D:\KangarooLog.txt"></file>-->
    43     <param name="File" value="./Log/KangarooLog.log" />
    44     <param name="AppendToFile" value="true" />
    45     <!--相对路径,在项目的根目录下-->
    46     <!--以最后一个路径为准,所以上面的绝对路径下不会写日志-->
    47     <!--<file value="./Log/Kangaroo.txt"></file>-->
    48     <!--防止多线程时不能写Log,官方说线程非安全-->
    49     <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
    50     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
    51     <appendToFile value="true" />
    52     <!--可以为:Once|Size|Date|Composite-->
    53     <!--Composite为Size和Date的组合-->
    54     <rollingStyle value="composite" />
    55     <!--日志最大个数,都是最新的-->
    56     <!--rollingStyle节点为Date时,该节点不起作用-->
    57     <!--rollingStyle节点为Size时,只能有value个日志-->
    58     <!--rollingStyle节点为Composite时,每天有value个日志-->
    59     <maxSizeRollBackups value="10" />
    60     <!--当备份文件时,为文件名加的后缀-->
    61     <!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP  应该是程序上的一个bug-->
    62     <!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT-->
    63     <datePattern value="_yyyy-MM-dd.TXT" />
    64     <!--可用的单位:KB|MB|GB-->
    65     <!--不要使用小数,否则会一直写入当前日志-->
    66     <maximumFileSize value="2MB" />
    67     <!--置为true,当前最新日志文件名永远为file节中的名字-->
    68     <staticLogFileName value="true" />
    69     <!--输出级别在INFO和ERROR之间的日志-->
    70     <filter type="log4net.Filter.LevelRangeFilter">
    71       <param name="LevelMin" value="INFO" />
    72       <param name="LevelMax" value="ERROR" />
    73     </filter>
    74     <!--必须结合起来用,第一个只过滤出WARN,第二个拒绝其它其它日志输出-->
    75     <filter type="log4net.Filter.LevelMatchFilter">
    76       <param name="LevelToMatch" value="WARN" />
    77     </filter>
    78     <filter type="log4net.Filter.DenyAllFilter" />
    79     <layout type="log4net.Layout.PatternLayout">
    80       <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
    81     </layout>
    82   </appender>
    83 </log4net>

    3. layout节点的配置说明

    01 <!--                                                                        Made By AX      -->
    02 <!--        %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息                          -->
    03 <!--        %n(new line):换行                                                                   -->
    04 <!--        %d(datetime):输出当前语句运行的时刻                                                 -->
    05 <!--        %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数                           -->
    06 <!--        %t(thread id):当前语句所在的线程ID                                                  -->
    07 <!--        %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等                           -->
    08 <!--        %c(class):当前日志对象的名称,例如:                                                -->
    09 <!--               模式字符串为:%-10c -%m%n                                                    -->
    10 <!--               代码为:                                                                     -->
    11 <!--        ILog log=LogManager.GetLogger(“Exam.Log”);                                        -->
    12 <!--        log.Debug(“Hello”);                                                               -->
    13 <!--            则输出为下面的形式:                                                            -->
    14 <!--        Exam.Log       - Hello                                                              -->
    15 <!--        %L:输出语句所在的行号                                                              -->
    16 <!--        %F:输出语句所在的文件名                                                            -->
    17 <!--        %-数字:表示该项的最小长度,如果不够,则用空格填充                                  -->
    18 <!--        例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出: -->
    19 <!--        176 [main] INFO  org.foo.Bar - Located nearest gas station.                         -->

    4.有用的连接:

    日志维护一点心得

    日志维护一点心得二

  • 相关阅读:
    C++位运算详解
    SQL语句获取时间的方法
    redis在windows下安装和ThinkPHP中使用
    数据同步存储过程代码
    C#重写OnKeyPress方法
    SQL Server 2008数据库生成数据库脚本(并带数据)
    C#中邮件的发送
    C#中DGV分页功能
    C#中保持文件夹A与B同步
    C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表
  • 原文地址:https://www.cnblogs.com/smallfa/p/1754128.html
Copyright © 2020-2023  润新知