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

與咱們指望的如出一轍,至此,日誌記錄配置完畢,注意以上的問題,你就能夠隨心配置以及記錄各類各樣的日誌文件了,其它的依此類推

相關文章
相關標籤/搜索