【问题标题】:log4net RollingFileAppender deletes all old fileslog4net RollingFileAppender 删除所有旧文件
【发布时间】:2014-08-28 08:48:54
【问题描述】:

我在 IIS 托管的 WCF 服务中有一个 log4net 记录器。记录器按大小配置为滚动文件附加器。该服务部署到 3 个不同的环境 - QATESTPROD

仅在 QA 环境中发生的问题是没有保存旧的日志文件。当打开一个新的日志文件时,它会替换旧文件。

这是 QA 环境中存在问题的 log4net 配置:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
    <appender name="B2BAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <!--<param name="File" type="log4net.Util.PatternString" value="Log/%property{LogName}"/>-->
      <param name="File" type="log4net.Util.PatternString" value="Log/B2BService.log"/>
      <param name="AppendToFile" value="true"/>
      <param name="RollingStyle" value="Size"/>
      <param name="MaximumFileSize" value="50KB"/>
      <param name ="MaxSizeRollBackups" value="-1"/>
      <param name="StaticLogFileName" value="true"/>
      <param name="countDirection" value="1"/>
      <param name="PreserveLogFileNameExtension" value="true"/>
      <layout type="log4net.Layout.PatternLayout, log4net">
        <param name="ConversionPattern" value="%date{dd/MM/yyyy HH:mm:ss.fff} [%level]: %message"/>
      </layout>
    </appender>
    <logger name="B2BLog">
      <level value="ALL"/>
      <appender-ref ref="B2BAppender"/>
    </logger>
</log4net>  

在这种环境中,文件 B2BService.log 每次都会被覆盖。不保留旧的日志文件。

这是 PROD 环境中的 log4net 配置,可以正常工作:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
<log4net>
    <appender name="B2BAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <!--<param name="File" type="log4net.Util.PatternString" value="Log/%property{LogName}"/>-->              
      <param name="File" type="log4net.Util.PatternString" value="Log/B2BService.log"/>
      <param name="AppendToFile" value="true"/>
      <param name="RollingStyle" value="Size"/>
      <param name="MaximumFileSize" value="10MB"/>
      <param name ="MaxSizeRollBackups" value="-1"/>
      <param name="StaticLogFileName" value="true"/>
      <param name="countDirection" value="1"/>
      <param name="PreserveLogFileNameExtension" value="true"/>
      <layout type="log4net.Layout.PatternLayout, log4net">
        <param name="ConversionPattern" value="%date{dd/MM/yyyy HH:mm:ss.fff} [%level]: %message%newline"/>
      </layout>
    </appender>
    <logger name="B2BLog">
      <level value="ALL"/>
      <appender-ref ref="B2BAppender"/>
    </logger>
</log4net>

在这种环境中,旧的日志文件被保存为名称 B2BService.1.log、B2BService.2.log 等。

如您所见,唯一的区别是MaximumFileSize(我知道在QA 中太小了,会被更改)和ConversionPattern。两者都不应影响按大小滚动的文件。

有什么想法吗?

【问题讨论】:

    标签: .net wcf logging log4net rollingfileappender


    【解决方案1】:

    您可能需要删除 StaticLogFileName 和 PreserveFileNameExtension 选项(或将它们设置为 false)?您的配置说“不要保留备份,始终使用相同的文件名” - 所以 log4net 尽力而为。只是我的假设

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-07
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      相关资源
      最近更新 更多