NetCore log4net 集成以及配置日志信息不重复显示或者记录

NetCore log4net 集成,这是一个很常见并且网上大批大批的博文了,我写这个博文主要是为了记录我在使用过程当中的一点小收获,之前在使用的过程当中一直没有注意可是其实网上说的不清不楚的问题。html

官方文档的连接:http://logging.apache.org/log4net/release/manual/configuration.html  apache

 
 
<log4net>
    <!-- A1 is set to be a ConsoleAppender -->
    <appender name="A1" type="log4net.Appender.ConsoleAppender">
 
        <!-- A1 uses PatternLayout -->
        <layout type="log4net.Layout.PatternLayout">
            <!-- Print the date in ISO 8601 format -->
            <conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" />
        </layout>
    </appender>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="log-file.log" />
      <appendToFile value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <!-- Set root logger level to DEBUG and its only appender to A1 -->
    <logger name="WYCms.Api">
      <level value="info" />
      <appender-ref ref="ManagedColoredConsoleAppender" />
    </logger>

    <logger name="WYCms.Api.Controller" additivity="false">
      <level value="Error" />
      <appender-ref ref="ManagedColoredConsoleAppender" />
    </logger>
    </logger>
</log4net>

相信这段配置很日常,可是咱们如何实现,在项目中只不让日志重复显示信息,只显示,为此,我通读了:http://logging.apache.org/log4net/release/manual/configuration.html  这里关于log4net各个参数的说明以及示例。app

1.首先理解,上面的 root 和logger,最后的效果是什么,首先,配置了root 以及 自定义的logger,那么按照官方的文档上面来讲,这时候就会生成:测试

log-file.log  文件,以及在 控制台下面按色彩打印出相关lever级别的信息,经过验证发现,确实如此.

 

 

2  理解logger段的配置, <logger name="WYCms"> 这里的name表明咱们项目的一个命名空间,注意,这里是项目的命名空间的名称,度娘上各类千奇百怪的东西,若是照抄,你可能能够获得日志,可是你永远得不到你想到或者只须要的日志,并且logger的配置是继承自root的配置信息的,这就是为何会有重复的日志产生的缘由。spa

我分别写在这样的代码:日志

如今咱们来看上面的配置信息:code

root 日志级别配置的为:ALL orm

logger  name="WYCms.Api"  日志级别配置为:infohtm

logger name="WYCms.Api.Controller" additivity="false" 日志级别为:error 而且 additivity配置为false,阻止向父级继承,也就是说,在命名空间WYCms.Api.Controller下写的日志信息,只会保留error级别的日志信息,不会同步记录到 logger name="WYCms.Api"以及root中,而因为 logger name="WYCms.Api"没有阻止继承,那么,在命名空间"WYCms.Api"产生的日志信息,也会同步记录到root配置的日志信息中。咱们来测试一下,是否正确,以下图:blog

与咱们预料中的同样,再来测试,在controller级别的日志信息是否只显示error级别的信息,而且不会记录到其父级中去。

与咱们指望的如出一辙,至此,日志记录配置完毕,注意以上的问题,你就能够随心配置以及记录各类各样的日志文件了,其它的依此类推

相关文章
相关标签/搜索