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

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

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

<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各个参数的说明以及示例。

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

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

 

2  理解logger段的配置, <logger name="WYCms"> 这里的name代表我们项目的一个命名空间,注意,这里是项目的命名空间的名称,度娘上各种千奇百怪的东西,如果照抄,你可能可以得到日志,但是你永远得不到你想到或者只需要的日志,而且logger的配置是继承自root的配置信息的,这就是为什么会有重复的日志产生的原因。

我分别写在这样的代码:

现在我们来看上面的配置信息:

root 日志级别配置的为:ALL 

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

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配置的日志信息中。我们来测试一下,是否正确,如下图:

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

与我们期望的一模一样,至此,日志记录配置完毕,注意以上的问题,你就可以随心配置以及记录各种各样的日志文件了,其它的依此类推

相关文章