[問題記錄]——log4net記錄多個級別文件


前言

不知不覺可都快又一年了,最近這段時間一直在忙着圖形方面的東西(確實快給我搞死了),雖說時間還是相對有的,但是精力耗費的十有十一,把問題記錄單開一欄,是為了后續記錄使用中遇到的問題及相應的解決方法。

Log4net

關於這個日志記錄類庫,我也不需要多說,具體配置可見:net core Webapi基礎工程搭建(四)——日志功能log4net

今天剛好一個網友問我,說業務上需要不同級別存儲到不同文件,確實在日志記錄上,常規不會把所有級別的日志文件放到同一個,這樣會把自己眼給看壞的,因為之前做過這塊兒的操作,所以這里也就不多說,直接看代碼吧。

首先,我們需要在log4net.config中加上一個新的填充日志的方法,這里說下filter,很明顯,這是個過濾器,作用呢就是可以指定記錄日志的級別,所以,也就不用多說了,一看便知。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- This section contains the log4net configuration settings -->
  <log4net debug="false">

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--很關鍵的一句,讓日志文件不被占用-->
      <file value="logs/" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd'.log'" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
    </appender>

	<!--這里就是只記錄對應級別的配置-->
    <appender name="RollingErrorLogAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--很關鍵的一句,讓日志文件不被占用-->
      <file value="logs/error/" />
      <appendToFile value="true" />
      <rollingStyle value="Composite" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd'.log'" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="ERROR" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

    <!-- Setup the root category, add the appenders and set the default level -->
    <root>
      <level value="ALL" />
      <appender-ref ref="RollingLogFileAppender" />
      <!--這里是新增一個配置-->
      <appender-ref ref="RollingErrorLogAppender" />
    </root>

  </log4net>
</configuration>

然后我們來做個測試吧,問題記錄以后盡量精簡不廢話。

測試

ValuesController的測試接口更改日志測試為以下代碼。

            #region ========日志測試========
            //日志測試
            LogUtil.Info("測試");
            LogUtil.Error("錯誤測試");
            #endregion

運行程序。

測試

我們來看下效果,首先默認的日志文件還是記錄了多個級別的日志。
測試

再來看下error下面的日志文件。
測試

小結

ok,基本上到這里就結束了,其實這篇東西不多,只是想借此也開一個問題記錄欄,畢竟示例是一回事,實際業務使用又是一回事(當然,說起來這個WebApi工程好久沒動過了,唉,搞毛啊),后續還是會繼續鼓搗東西,一點點兒的通過這個示例工程來展示效果。


免責聲明!

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



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