【发布时间】:2015-03-12 11:28:08
【问题描述】:
我在 ASP.NET MVC 4 应用程序中使用 log4net,我正在尝试从 log4Net 下载生成的日志文件。
我想用 FileResult 下载日志文件,例如:
[Authorize(Roles = "Admin")]
public FileResult DownloadUserInterfaceLog()
{
// Get the path of the log file
string path = (LogManager.GetCurrentLoggers()[0].Logger.Repository.GetAppenders()[0] as FileAppender).File;
// Get the file
byte[] fileBytes = System.IO.File.ReadAllBytes(path);
string fileName = "Log.txt";
// Return the expected file
return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
我的问题是当我调用System.IO.File.ReadAllBytes(path);我得到一个异常,导致日志文件已被另一个进程使用。
我已经输入<lockingModel value="log4net.Appender.FileAppender+MinimalLock" /> (which should release the file after any modification) in my Web.Config,但没有成功。
在 Web.Config 中开始 log4Net 配置:
<log4net>
<appender name="Appender-root" type="log4net.Appender.RollingFileAppender">
<lockingModel value="log4net.Appender.FileAppender+MinimalLock" />
<file value="Path..." />
<appendToFile value="true" />
【问题讨论】:
标签: c# asp.net-mvc logging log4net