2016-02-09 210 views
0

问题:所有记录的信息在文件中写入两次。 请查看我使用的以下配置: 只有引入多个记录器时,我才能观察到此问题。windsor castle - log4net - RollingFileAppender - 问题 - 信息在文件中写入两次

<root> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogFileAppender" /> 
     <appender-ref ref="MemoryAppender"/> 
     <appender-ref ref="EventsFileAppender" /> 
    </root> 
    <logger name="FileLogger"> 
     <level value="DEBUG" /> 
     <appender-ref ref="LogFileAppender" /> 
     <appender-ref ref="MemoryAppender"/> 
    </logger> 
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" > 
     <param name="File" value="C:\log-file.txt" /> 
     <param name="AppendToFile" value="true" /> 
     <rollingStyle value="Size" /> 
     <maxSizeRollBackups value="10" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <filter type="log4net.Filter.LoggerMatchFilter"> 
      <LoggerToMatch value="FileLogger" /> 
     </filter> 
     <filter type="log4net.Filter.DenyAllFilter" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="ConversionPattern" value="%date [%thread] %-5level - %message%newline" /> 
     </layout> 
    </appender> 
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender"> 
    <filter type="log4net.Filter.LoggerMatchFilter"> 
     <LoggerToMatch value="FileLogger" /> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter" /> 
</appender> 

<logger name="EventsLogger"> 
    <level value="DEBUG" /> 
    <appender-ref ref="EventsFileAppender" /> 
</logger>  
<appender name="EventsFileAppender" type="log4net.Appender.RollingFileAppender" > 
    <param name="File" value="C:\ObjectServerEvents\ObjectServerEvents-file.txt" /> 
    <param name="AppendToFile" value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="100MB" /> 
    <staticLogFileName value="true" /> 
    <filter type="log4net.Filter.LoggerMatchFilter"> 
     <LoggerToMatch value="EventsLogger" /> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter" /> 
    <layout type="log4net.Layout.PatternLayout"> 
     <param name="ConversionPattern" value="%date [%thread] %-5level - %message%newline" /> 
    </layout> 
</appender> 

你能发现这个错误吗?如何解决这个问题?

回答

1

您正在两次添加appender:一次到根元素,一次到每个记录器。

根元素或记录器中取出附加器的声明,和每个事件将只记录一次。

<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="LogFileAppender" /> 
    <appender-ref ref="MemoryAppender"/> 
    <appender-ref ref="EventsFileAppender" /> 
</root> 
<logger name="FileLogger"> 
    <level value="DEBUG" />  
</logger> <!-- etc -->