跟踪日志位置,查看位置

时间:2014-08-13 12:28:39

标签: c# wcf trace system.diagnostics

在开发MVC或WCF应用程序时,您在哪里看到Trace.Write("");个日志?什么是正确的地方?

1 个答案:

答案 0 :(得分:21)

使用System.Diagnostics.Trace类时,Write方法会写入其跟踪输出" to the trace listeners in the Listeners collection."默认情况下,Trace.Listeners属性仅包含DefaultTraceListener的实例,该实例将消息输出到调试器输出窗口。要查看这些跟踪消息,您必须启用调试。

因此,如果在Visual Studio中调试WCF服务或ASP.NET应用程序,则会在“VS输出”窗格中看到跟踪输出。例如,此代码:

System.Diagnostics.Trace.WriteLine("GetData method was called.");

...导致此输出出现:

debug output

如果您不想运行调试器以查看跟踪输出,则可以删除DefaultTraceListener并将其替换为另一个,例如,TextWriterTraceListener将跟踪输出到文件。这可以通过创建包含以下内容的web.config文件来完成(或者只是将system.diagnostics部分添加到预先存在的web.config中):

<configuration>
    <system.diagnostics>
      <trace autoflush="true" indentsize="4">
        <listeners>
          <remove name="Default" />
          <add name="myListener" type="System.Diagnostics.TextWriterTraceListener"
               initializeData="c:\myListener.log" />
        </listeners>
      </trace>
    </system.diagnostics>
</configuration>

之后(假设您在有权写入输出位置的模式下运行),您的跟踪将输出到指定的文件。

如果您想将跟踪写入事件日志而不是文件,您也可以使用EventLogTraceListener

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="TraceListenerLog" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

请注意确保您的应用在帐户上下文中运行,并具有写入事件日志的权限。

您可以使用跟踪进行更多操作(例如将其输出到ASP.NET页面本身。您将找到更多示例here的演练。