我使用VS 2013和Log4Net来记录.Net应用程序的数据。我可以创建日志。但是当我尝试删除或移动日志文件时,它说
The file is open in another process...
即使浏览器已关闭,我也会收到此消息。当我关闭Visual Studio IDE工具时,我只能编辑/剪切/重命名日志文件。我怎么解决这个问题。我希望能够随时删除/编辑文件。 以下是web.config中使用的log4net的代码
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="c:\logs\jwhXMLDev.log" />
<appendToFile value="true" />
<!-- <layout type="log4net.Layout.XmlLayout"/>-->
<layout type="log4net.Layout.XmlLayout" />
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
<onlyFixPartialEventData value="true" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFile" />
</root>
</log4net>
答案 0 :(得分:5)
关于关闭浏览器的评论
浏览器不是打开/锁定/操作文件而是Web服务器。
浏览器向Web服务器发送请求,该请求回复响应,但同时在这些请求/响应交换之外的两者之间没有链接。如果在收到响应后关闭浏览器,则服务器不知道它。它只是等待浏览器提出更多可能的请求,它无法知道它已被关闭。
您的网络服务器可能是IIS Express或本地IIS。这是Web服务器,它是锁定文件的过程。
如何立即发布文件
如果您使用的是IIS Express,则在Visual Studio中启动应用程序时会启动/关闭它。当你停止调试时,它应该释放文件。
如果您使用的是本地或远程IIS而无法让它发布文件,那么回收应用程序池或重新启动IIS就可以了。
防止这种情况发生
Log4Net会对文件进行锁定,但您可以通过在<appender
元素中添加以下行来修改其行为:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
这是你的配置再添加一行:
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="c:\logs\jwhXMLDev.log" />
<appendToFile value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!-- <layout type="log4net.Layout.XmlLayout"/>-->
<layout type="log4net.Layout.XmlLayout" />
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender">
<onlyFixPartialEventData value="true" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFile" />
</root>
</log4net>