2015-07-13 91 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_" /> 

这将修复文件名的双重日期。

相关问题