log4net按级别写到不同文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  
  <log4net>
    <root>
      <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
      <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
      <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
      <level value="ALL" />
      <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
      <appender-ref ref="InfoFileAppender"></appender-ref>
      <appender-ref ref="WarnFileAppender"></appender-ref>
      <appender-ref ref="ErrorFileAppender"></appender-ref>
      <appender-ref ref="DebugFileAppender"></appender-ref>
      <!--<appender-ref ref="ConsoleAppender"></appender-ref>-->
    </root>

    <appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--<rootDir value="/logs" />-->
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="INFO" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <File value="LogsInfo" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd.LOG" />
      <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <maxSizeRollBackups value="10" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />-->
        <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" />
      </layout>
    </appender>

    <appender name="WarnFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="WARN" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <File value="LogsWarn" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd.LOG" />
      <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <maxSizeRollBackups value="10" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />-->
        <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" />
      </layout>
    </appender>

    <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="Error" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <File value="LogsError" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd.LOG" />
      <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <maxSizeRollBackups value="10" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />-->
        <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" />
      </layout>
    </appender>

    <appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="Debug" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
      <File value="LogsDebug" />
      <!-- 将日志信息追加到已有的日志文件中-->
      <appendToFile value="true" />
      <!-- 指定按日期切分日志文件 -->
      <rollingStyle value="Date" />
      <!-- 日志文件的命名规则 -->
      <datePattern value="yyyyMMdd.LOG" />
      <!-- 是否只写到一个文件中,当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
      <staticLogFileName value="false" />
      <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <maxSizeRollBackups value="10" />
      <layout type="log4net.Layout.PatternLayout">
        <!--<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />-->
        <conversionPattern value="%date| %newline%message%newline--------------------------------%newline" />
      </layout>
    </appender>
    
    <!--<appender name="ConsoleAppender"  type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern"  value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>-->
    
  </log4net>
</configuration>