带有TextWriterTraceListener的Trace.WriteLine()最终会停止在已发布的ASP.NET站点上工作

时间:2015-02-05 22:43:00

标签: c# asp.net asp.net-mvc logging trace

我正在使用Trace将日志记录添加到新的ASP.NET站点。当我在本地运行项目时,日志记录按预期工作。当我发布项目时(通过文件系统通过Visual Studio发布),该站点将成功登录一段时间(从几秒到几分钟),但最终会停止写入输出文件。

以下是我在TraceListener中初始化Global.asax.cs的方式:

protected void Application_Start() 
{  
    textWriterTL = new TextWriterTraceListener(logFilePath);
    Trace.Listeners.Add(textWriterTL);
    Trace.AutoFlush = true;

    ...
}

稍后,在Web API控制器方法中,我这样写Trace

Trace.WriteLine("An error occurred").

我不觉得我做任何非传统的事情。为什么我的网站会在一段时间后停止记录?

1 个答案:

答案 0 :(得分:0)

根据MSDN文档,在<system.diagnostics> <trace autoflush="true"> <listeners> <add type="System.Diagnostics.TextWriterTraceListener" name="FileListener" initializeData="MyLog.log" /> <remove name="Default" /> </listeners> </trace> </system.diagnostics> 方法中你不能实例化任何类:

  

您应该在应用程序启动期间仅设置静态数据。不要设置   任何实例数据,因为它只能用于第一个   创建的HttpApplication类的实例。

我建议在Web.config中设置TraceListener,就像这个示例:

{{1}}

参考:https://msdn.microsoft.com/en-us/library/ms178473.aspx