当没有在文件中放置错误时,停止使用log4net(或服务)



我有以下log4net配置

<?xml version="1.0" encoding="utf-8" ?>
<log4net xmlns="urn:log4net">
<appender name ="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="C:tempGenerator.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maximumFileSize value="500KB" />
<maxSizeRollBackups value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{DATE} %level %thread %logger - %message%newline" />
</layout>
</appender>
<appender name ="GenerationErrors" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="c:tempGenerationErrors.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{DATE} %level %thread %logger - %message%newline" />
</layout>
</appender>
<root>
<appender-ref ref="RollingFile" />
<level value="INFO" />
</root>
<logger name ="GPA.Module.Generate">
<level value="INFO" />
<appender-ref ref="GenerationErrors" />
</logger>
<logger name="PmuManagement">
<level value="INFO" />
<appender-ref ref="GenerationErrors" />
</logger>
</log4net>

第一个appender根据需要记录我所有进程的所有错误,第二个只记录特定的一组错误。

我需要能够在运行中删除第二个日志文件的内容,但这目前是不可能的,因为程序需要不断访问它才能运行(如果你尝试进行任何更改,你会得到"该文件正被另一个程序使用"错误。

有没有一种方法让log4net只需要在需要写入错误时访问该文件?

或者有没有一种更通用的方法可以暂时停止需要访问文件的服务/程序,并在不久后再次允许访问?

感谢

我在这里发现了这个问题间歇性log4net RollingFileAppender锁定文件问题,答案就是我需要的。我只是简单地将<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />添加到我的第二个appender中。

最新更新