[问题记录]——log4net记录多个级别文件

前言

不知不觉可都快又一年了,最近这段时间一直在忙着图形方面的东西(确实快给我搞死了),虽然说时间仍是相对有的,可是精力耗费的十有十一,把问题记录单开一栏,是为了后续记录使用中遇到的问题及相应的解决方法。api

Log4net

关于这个日志记录类库,我也不须要多说,具体配置可见:net core Webapi基础工程搭建(四)——日志功能log4netapp

今天恰好一个网友问我,说业务上须要不一样级别存储到不一样文件,确实在日志记录上,常规不会把全部级别的日志文件放到同一个,这样会把本身眼给看坏的,由于以前作过这块儿的操做,因此这里也就很少说,直接看代码吧。测试

首先,咱们须要在log4net.config中加上一个新的填充日志的方法,这里说下filter,很明显,这是个过滤器,做用呢就是能够指定记录日志的级别,因此,也就不用多说了,一看便知。debug

<?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>

而后咱们来作个测试吧,问题记录之后尽可能精简不废话。3d

测试

ValuesController的测试接口更改日志测试为如下代码。日志

#region ========日志测试========
            //日志测试
            LogUtil.Info("测试");
            LogUtil.Error("错误测试");
            #endregion

运行程序。code

测试

咱们来看下效果,首先默认的日志文件仍是记录了多个级别的日志。
测试xml

再来看下error下面的日志文件。
测试htm

小结

ok,基本上到这里就结束了,其实这篇东西很少,只是想借此也开一个问题记录栏,毕竟示例是一回事,实际业务使用又是一回事(固然,提及来这个WebApi工程很久没动过了,唉,搞毛啊),后续仍是会继续鼓捣东西,一点点儿的经过这个示例工程来展现效果。

相关文章
相关标签/搜索