2014-08-28 624 views
1

我在IIS託管的WCF服務中有一個log4net記錄器。記錄器按大小配置爲滾動文件appender。該服務部署到3個不同的環境 - QA,測試PRODlog4net RollingFileAppender刪除所有舊文件

該問題僅發生在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

可能需要刪除StaticLogFileName和PreserveFileNameExtension選項(或將它們設置爲false)?你的配置說'不保留備份,所有的時間使用相同的文件名' - 所以log4net嘗試最好。只是我在這裏假設