log4net使用相关要点汇总

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

 

log4net.Config.XmlConfigurator.Configure(); //默认的 



log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath("../Log4Net.config")));
 

2.配置文件样本

Log4net.config配置文件的内容:

<?xml version="1.0" encoding="utf-8"?>

<log4net>

  <logger name="KangarooLog">

    <!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->

    <!--如果没有定义LEVEL的值,则缺省为DEBUG-->

    <level value="ALL" />

    <!--<appender-ref ref="SmtpAppenderKangaroo"></appender-ref>-->

    <appender-ref ref="FileAppenderKangaroo"></appender-ref>

  </logger>

  <appender name="SmtpAppenderKangaroo" type="log4net.Appender.SmtpAppender">

    <to value="[email protected]"></to>

    <from value="[email protected]" />

    <subject value="Kangaroo Log Message" />

    <smtpHost value="smtp.800best.com" />

    <username value="Kangaroo" />

    <password value="Kangaroo" />

    <bufferSize value="2048" />

    <!--超长部分是否丢弃-->

    <lossy value="false" />

    <!--evaluator时好时坏,靠不住,还是用filter实在-->

    <!--<evaluator type="log4net.Core.LevelEvaluator">

      <threshold value="ERROR"/>

    </evaluator>-->

    <!--<evaluator type="log4net.Core.LevelEvaluator,log4net">

      <threshold value="WARN" />

    </evaluator>-->

    <!--将导致不能写日志-->

    <!--<filter type="log4net.Filter.DenyAllFilter" />-->

    <!--输出级别在定义之间的日志-->

    <filter type="log4net.Filter.LevelRangeFilter">

      <param name="LevelMin" value="ALL" />

      <param name="LevelMax" value="OFF" />

    </filter>

    <layout type="log4net.Layout.PatternLayout">

      <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] : %newline%message%newline" />

    </layout>

  </appender>

 

 <appender name="FileAppenderKangaroo" type="log4net.Appender.RollingFileAppender">

    <!--绝对路径-->

    <!--<file value="D:\KangarooLog.txt"></file>-->

    <param name="File" value="./Log/KangarooLog.log" />

    <param name="AppendToFile" value="true" />

    <!--相对路径,在项目的根目录下-->

    <!--以最后一个路径为准,所以上面的绝对路径下不会写日志-->

    <!--<file value="./Log/Kangaroo.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" />

    <!--当备份文件时,为文件名加的后缀-->

    <!--后缀为*.txt时,例:AX.txt_2008-07-24.PxP  应该是程序上的一个bug-->

    <!--后缀为*.TXT时,例:AX.txt_2008-07-25.TXT-->

    <datePattern value="_yyyy-MM-dd.TXT" />

    <!--可用的单位:KB|MB|GB-->

    <!--不要使用小数,否则会一直写入当前日志-->

    <maximumFileSize value="2MB" />

    <!--置为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">

      <conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />

    </layout>

  </appender>

</log4net>

3. layout节点的配置说明

<!--                                                                        Made By AX      -->

<!--        %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.                         -->

4.有用的连接:

日志维护一点心得

日志维护一点心得二

你可能感兴趣的:(log)