zoukankan      html  css  js  c++  java
  • Log4Net的使用[转]

    log4net的使用并不复杂,三步走就可以了:

    1,引用log4net.dll;

    2,新建配置文件log4net.config;

    3,使用log4net

    附件是dll文件和config文件样例,可以参考使用。

    实际使用中,通常写一个类负责初始化log4net和返回log4net实例:

    public static class Log4Net
    {
    /// <summary>
    /// Log4Net初始化
    /// </summary>
    public static void Log4NetInit()
    {
        log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath("../Log4Net.config")));
    }
    /// <summary>
    /// 返回日志对象
    /// </summary>
    public static log4net.ILog Log()
    {
        return log4net.LogManager.GetLogger("KangarooLog");
    }
    }

    在Global.asax中,初始化Log4Net配置:

    void Application_Start(object sender, EventArgs e)
        {
            //在应用程序启动时运行的代码
            //初始化Log4Net配置
            Log4Net.Log4NetInit();
        }

    页面上的使用:

    Log4Net.Log().Error("Error");
    Log4Net.Log().Warn("Warn");
    Log4Net.Log().Info("Info");
     
    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="Kangaroo@800best.com"></to>
        <from value="Kangaroo@800best.com" />
        <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>
    <!--==================================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.                         -->
     
    文章来源:

  • 相关阅读:
    Sql Sugar
    GoLang 环境部署
    Typora 自动添加序号
    C# 操作 Oracle批量执行Insert Blob
    C# 生成读取二维码
    Asp.net core 使用Serilog记录日志
    Asp.net Core 将日志输出到文件
    云原生领域的一些技术展望
    C# BeginInvoke用法记录
    C# 委托及线程
  • 原文地址:https://www.cnblogs.com/saptechnique/p/1814434.html
Copyright © 2011-2022 走看看