我在IIS托管的WCF服务中有一个log4net记录器。记录器按大小配置为滚动文件追加器。该服务部署到3个不同的环境 - QA , TEST 和 PROD 。
仅在 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。两者都不应该影响按大小滚动的文件。
有什么想法吗?
答案 0 :(得分:0)
您可能需要删除StaticLogFileName和PreserveFileNameExtension选项(或将它们设置为false)吗?你的配置说不要保留备份,一直使用相同的文件名&#39; - 所以log4net尝试它是最好的。只是我在这里的假设