2015-05-11 54 views
0

我有两个appender,一个文件appender和一个数据库appender的配置文件。我想将所有内容都记录到文件appender,并且只将日志记录到数据库appender。在部分中设置appender时,它会记录日志,但所有日志事件都发送给appender,这不是我想要的。我的log4net配置文件有什么问题

我改变了配置,但是使用这个当前配置,异常会被记录到数据库,并且没有任何内容被写入文件appender。谁能告诉我为什么我没有得到任何写入文件appender的东西?

<log4net debug="true"> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\Log4net\Workflow\TestLog.txt" /> 
     <threshold value="All" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="10KB" /> 
     <staticLogFileName value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%-5p {%logger} %d %5rms %-22.22c{1} %-18.18M - %m%n" /> 
     </layout> 
    </appender> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <!-- Removed to keep this snippet simple--> 
    </appender> 
    <root> 
     <level value="Error" /> 
     <appender-ref ref="AdoNetAppender" /> 
    </root> 
    <logger name="AllLogs"> 
     <level value="ALL" /> 
     <appender-ref ref="RollingLogFileAppender" />  
    </logger> 

    </log4net> 

回答

1

你在这里什么是以下几点:

  • 所有日志同级别事件Error以上会去从一个记录器,其名义发起的AdoNetAppender
  • 所有日志中的事件是基于AllLogs将去RollingLogFileAppender

从我的理解你想所有日志默认为f ile,并且只有错误的数据才会被发送到数据库。然后,只需两个附加目的地添加到您的根记录这样既得到的所有事件,并添加过滤器,只让你感兴趣的穿过过滤器:在你的数据库的appender的水平范围过滤器将工作

<log4net debug="true"> 

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <!-- rest of config snipped to save space --> 
    </appender> 
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
     <filter type="log4net.Filter.LevelRangeFilter"> 
      <levelMin value="ERROR" /> 
      <levelMax value="FATAL" /> 
     </filter> 
     <!-- rest of config snipped to save space --> 
    </appender> 

    <root> 
     <appender-ref ref="AdoNetAppender" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
</log4net> 

当然如果您不希望在滚动文件附件

以上过滤错误和以上错误