• log4N配置方式


    方式一、

      

      <log4net>
        <!-- 启动日志 -->
        <appender name="PayAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="../Logs/Haier.Design.Web/Pay.log"></param>
          <param name="AppendToFile" value="true"></param>
          <param name="MaxSizeRollBackups" value="10"></param>
          <param name="MaximumFileSize" value="5MB"></param>
          <param name="RollingStyle" value="Size"></param>
          <param name="StaticLogFileName" value="true"></param>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d - %m%n"></param>
          </layout>
        </appender>
        <category name="Pay.Loger">
          <priority value="DEBUG"></priority>
          <appender-ref ref="PayAppender"></appender-ref>
        </category>
        <!--异常日志-->
        <appender name="LogAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="../Logs/Haier.Design.Web/"></param>
          <param name="AppendToFile" value="true"></param>
          <param name="MaxSizeRollBackups" value="10"></param>
          <param name="MaximumFileSize" value="3MB"></param>
          <param name="RollingStyle" value="Size"></param>
          <rollingStyle value="Date" />
          <datePattern value="yyyy-MM-dd&quot;.log&quot;" />
          <param name="StaticLogFileName" value="false"></param>
          <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d(%p) %F(%L)%n %m%n"></param>
          </layout>
        </appender>
        <category name="Logerror">
          <priority value="ERROR|DEBUG"></priority> 
          <appender-ref ref="LogAppender"></appender-ref>
        </category>
      </log4net>

    方式二、

      

    <log4net>
        <logger name="logerror">
          <level value="ALL" />
          <appender-ref ref="ErrorAppender" />
        </logger>
        <logger name="loginfo">
          <level value="ALL" />
          <appender-ref ref="InfoAppender" />
        </logger>
        <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="Log//LogError//" />
          <param name="AppendToFile" value="true" />
          <param name="MaxSizeRollBackups" value="100" />
          <param name="MaxFileSize" value="10240" />
          <param name="StaticLogFileName" value="false" />
          <param name="DatePattern" value="yyyy//yyyyMM//yyyyMMdd-hh'.txt'" />
          <param name="RollingStyle" value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%newline %n====================================== %n记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}]  %n错误描述:%n%message %newline %n--------------------------------------%n"/>
          </layout>
        </appender>
        <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
          <param name="File" value="Log//LogInfo//" />
          <param name="AppendToFile" value="true" />
          <param name="MaxSizeRollBackups" value="100" />
          <param name="MaxFileSize" value="10240" />
          <param name="StaticLogFileName" value="false" />
          <param name="DatePattern" value="yyyy//yyyyMM//yyyyMMdd-hh'.txt'" />
          <param name="RollingStyle" value="Date" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%newline %n====================================== %n记录时间:%date %n线程ID:[%thread] %n日志级别:%-5level %n出错类:%logger property: [%property{NDC}]  %n错误描述:%n%message %newline %n--------------------------------------%n"/>
          </layout>
        </appender>
      </log4net> 

    另外,log4N的优先级是有一定规则的,如下(摘自:http://blog.csdn.net/hu8hong9/article/details/2799199):

    Logger hierarchy(层次级别)

    Logger都是已经命名的实体。

    Logger的名称区分大小写并遵循以下规则:

    1、如果A logger的名称如果是B logger名称的前缀(通过“.”连接),则说A logger是B logger的祖父级。

    2、如果A logger的名称和B logger的名称之间不存在其他的logger名称,则A logger是B logger的父级。

            例子:A logger名称为“Foo.Bar”,B logger名称为“Foo.Bar.Baz”,A为B的父级。名称为“System”的logger是名称为“System.Text.StringBuilder”的祖父级。

    Root logger位于logger层次级别中的顶级。

    它有例外的三条规则:

    1、Root logger总是存在的。

    2、Root logger不能通过名称或取。

    3、Root logger 有一个默认的Level 值为 Debug。

    Logger 可以通过log4net.LogManager类的静态方法GetLogger获取。

    Level值:ALL/DEBUG/INFO/WARN/ERROR/FATAL/OFF

    Level 继承规则:如果一个logger没有定义Level,它的Level值将从它的父级(定义了Level)继承。

    日志纪录请求通过调用logger实例的输出方法实现。

    这些输出方法有Debug,Info,Warn,Error和Fatal。

    通过定义,输出方法决定了日志纪录请求的Level。

    例如,log是一个logger实例,那么语句log.Info(“..”)的日志纪录请求Level为INFO。 如果日志纪录请求的Level比logger本身定义(或继承)的Level高,则请求是可行的,否则不可行。

    简单规则:如果日志记录请求的Level为L,logger本身定义(或继承)Level为K,当L>=K时,日志纪录请求是可行的。

    Level级别:DEBUG <INFO<WARN<ERROR<FATAL

    通过名称,调用log4net.LogManager.GetLogger方法,可以获取同一个logger的实例引用。

    这样在配置了一个logger后,不用在代码中传递引用而可以获取同一个logger的引用了。

    与生物上的亲子关系(父亲总是先于孩子)基本相反,在log4net 里,logger可以被创建和配置成任何顺序。

    特别的是,一个父级logger可能比子级logger后实例化,但却可以在子级中查找到。

  • 相关阅读:
    netty ByteToMessageDecoder 分析
    netty 编/解码处理
    MAC 入门
    netty 学习
    php ioc and web rest design
    spring 启动流程
    淘宝美衣人
    ecslipe cdt lib link
    阿里巴巴中间件团队招人了!
    架构师速成-架构目标之伸缩性安全性
  • 原文地址:https://www.cnblogs.com/ismallboy/p/5612253.html
Copyright © 2020-2023  润新知