【问题标题】:TextWriterTraceListener not workingTextWriterTraceListener 不工作
【发布时间】:2015-07-03 09:35:48
【问题描述】:

我正在尝试将跟踪添加到我的 .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 中添加了 Listener,
  • 将 autoflush 设置为 true,
  • 在类中初始化 TraceSource,然后写入它。
  • 通过调试发现 TraceSource 已正确初始化。
  • 检查了 DbgView (SysInternals) 但我什么也没看到。
  • 使用 ProcessMonitor 检查是否在某处创建了日志文件。什么都没有。
  • 尝试了不同的路径
  • 查看了应用程序文件夹、system32,当然还有指定的文件夹。

更多信息:

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

我错过了什么?为什么还是不行?

【问题讨论】:

  • 什么时候调用 Trace Source 的 Flush。即 ts.Flush()?
  • 自动刷新为真。我也尝试过手动冲洗,但这也不起作用。 @克里希纳
  • 抱歉错过了 - IISExpress 用户是否有权访问此文件“C:\log\trace.log”?
  • 您也可以尝试使用更大的消息进行日志记录,我发现这个链接似乎在同一行中解释了更多。 stackoverflow.com/questions/14502960/…
  • IISExpress 以管理员用户身份运行。我也看到了那个链接,但我看不到任何我还不知道的东西。你能具体说明你的意思吗? @克里希纳

标签: c# asp.net trace diagnostics


【解决方案1】:

您的 switch 语句似乎阻止了输出。

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

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

【讨论】:

    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2011-09-07
    • 2015-02-16
    • 1970-01-01
    相关资源
    最近更新 更多