2015-02-05 61 views
0

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

这里是我如何初始化我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"). 

我不感觉我正在做非常规的事情。为什么我的网站在一段时间后停止记录?

回答

0

这是因为在Application_Start方法,你souldn't实例的任何类,根据MSDN文档:

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

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

<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add type="System.Diagnostics.TextWriterTraceListener" name="FileListener" initializeData="MyLog.log" /> 
     <remove name="Default" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 

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