【问题标题】:Trace.WriteLine() with TextWriterTraceListener eventually stops working on a published ASP.NET site带有 TextWriterTraceListener 的 Trace.WriteLine() 最终停止在已发布的 ASP.NET 站点上工作
【发布时间】:2015-02-05 22:43:00
【问题描述】:

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

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

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

    ...
}

稍后,在 Web API 控制器方法中,我写信给Trace,如下所示:

Trace.WriteLine("An error occurred").

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

【问题讨论】:

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


    【解决方案1】:

    根据 MSDN 文档,这是因为在 Application_Start 方法中您没有实例化任何类:

    您应该在应用程序启动期间仅设置静态数据。不要设置 任何实例数据,因为它只对第一个可用 所创建的 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

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 2010-10-01
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多