TextWriterTraceListener无法正常工作

时间:2015-07-03 09:35:48

标签: c# asp.net trace diagnostics

我正在尝试将跟踪添加到我的.net 4.5 ASP.NET MVC项目中。我做了什么:

(web.config中)

<system.diagnostics>
  <trace autoflush="true">
    <sources>
      <source name="TraceSource" switchName="Switch" switchType="System.Diagnostics.SourceSwitch">
        <listeners>
          <add type="System.Diagnostics.TextWriterTraceListener" name="TextWriter" initializeData="C:\log\trace.log" traceOutputOptions="ProcessId, DateTime, Callstack"/>
        </listeners>
      </source>
    </sources>
    <switches>
      <add name="Switch" value="Warning"/>
    </switches>
  </trace>
</system.diagnostics>

在应该写入日志的类中:

ts = new TraceSource("TraceSource");
ts.TraceEvent(TraceEventType.Information, 0, "Authenticating as user: " + CredentialCache.DefaultCredentials.ToString()); Trace.Flush();

基本上,

  • 我将监听器添加到了web.config中的TraceSource,
  • 将autoflush设置为true,
  • 在类中初始化TraceSource然后写入它。
  • 通过它调试并看到TraceSource已正确初始化。
  • 检查了DbgView(SysInternals),但我什么都没看到。
  • 使用ProcessMonitor检查是否在某处创建了日志文件。什么都没有。
  • 尝试了不同的路径
  • 查看了应用程序文件夹,在system32中,当然还有在指定的文件夹中。

更多信息:

  • Impersonate = true
  • 本地开发机器
  • IIS Express,Visual Studio 2013
  • 在调试和发布中设置TRACE常量

我错过了什么?为什么它仍然不起作用?

1 个答案:

答案 0 :(得分:1)

看来你的switch语句会阻止输出。

您的开关值为“警告”,其他TraceEventType为“信息”。

尝试将开关值更改为“信息”或“详细”。