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級別的信息,並且不會記錄到其父級中去。

與我們期望的一模一樣,至此,日志記錄配置完畢,注意以上的問題,你就可以隨心配置以及記錄各種各樣的日志文件了,其它的依此類推


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM