温莎城堡 - log4net - RollingFileAppender - 问题 - 信息在文件中写入两次

windsor castle - log4net - RollingFileAppender - Issue - Information is written twice in the file

问题:记录的所有信息都在文件中写入了两次。 请找到我使用的以下配置: 我只有在引入多个记录器时才能观察到这个问题。

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

你能找出其中的错误吗?如何解决?

您添加了两次附加程序:一次添加到根元素,一次添加到每个记录器。

根元素或记录器中删除 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 -->