2015-07-13 63 views
0

我log4net的配置是:log4net的RollingFileAppender進行意想不到的文件名時,文件已經打開

<log4net> 
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="C:\LogFiles\Staging_WebAQPro\s_waq_" /> 
     <datePattern value="yyyy-MM-dd'.log'" /> 
     <staticLogFileName value="false" /> 
     <preserveLogFileNameExtension value="true" /> 
     <appendToFile value="true" /> 
     <countDirection value="1" /> 
     <rollingStyle value="Composite" /> 
     <maxSizeRollBackups value="-1" /> 
     <maximumFileSize value="10MB" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="[%d]: %15property{adrs}: %4t: %5p: %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="DEBUG" /> 
     <appender-ref ref="RollingLogFileAppender" /> 
    </root> 
    </log4net> 

和IIS w3wp進程開始時,我得到的預期文件名: s_waq_2015-07-13.0.log

但是,當IIS回收進程時,我得到文件名(這有點令人厭惡): s_waq_2015-07-13.02015-07-13.log.0.log

這是因爲IIS保留舊進程周圍,​​同時新流程即將啓動。新進程無法打開預期的文件名,因爲它仍在使用中。我不想使用最小限度的鎖定,因爲它慢得多(並且這個問題每天只發生一次)。

有關如何在這種情況下獲得更合理的文件名的任何想法?

非常感謝 羅尼

回答

1

一個解決方案可以通過包括在你的日誌文件名中的ProcessID:

<file type="log4net.Util.PatternString" value="C:\LogFiles\Staging_WebAQPro\s_waq_%processid_" /> 

這將修復文件名的雙重日期。

相關問題