如何打开WCF跟踪?


160

更新:

我一直在尝试打开WCF跟踪,但是仍然没有成功...以下是我的最新更新。

我需要写到以下位置的权限吗?

  <system.diagnostics>
    <trace autoflush="true" />
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="sdt"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData= "@\\myservername\folder1\traces.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

我正在使用.NET Framework 3.5。

为调试目的打开WCF跟踪的分步说明是什么?

Answers:


230

可以应用从MSDN进行的以下配置来启用对WCF服务的跟踪。

<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true" >
        <listeners>
             <add name="xml"/>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
      <source name="myUserTraceSource"
              switchValue="Information, ActivityTracing">
        <listeners>
            <add name="xml"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
        <add name="xml"
             type="System.Diagnostics.XmlWriterTraceListener"
             initializeData="Error.svclog" />
    </sharedListeners>
  </system.diagnostics>
</configuration>

要查看日志文件,可以使用“ C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe”。

如果您的系统上没有“ SvcTraceViewer.exe”,则可以从“适用于Windows 7和.NET Framework 4的Microsoft Windows SDK”包中下载它:

Windows SDK下载

您不必安装整个程序,只需安装“ .NET开发/工具”部分。

当/如果安装过程中出现非正常错误的爆炸声,Petopas对Windows 7 SDK安装失败的回答解决了我的问题。


18
我在哪里看到文件的生成Error.svclog
尼克·卡恩

4
该文件将在与程序集相同的目录中生成。最有可能是您的bin目录。如果您的服务托管在IIS中,则可能需要回收工作进程。
罗汉·威斯特

9
确保您的“应用程序池-身份”具有写入该文件夹的权限。我通常将一个专用帐户分配给我的应用程序池,这样我就可以向该特定用户授予读/写访问权限
Rohan West 2010年

2
在开发环境中,错误文件(initializeData =“ Error.svclog”)存储在解决方案项目中。将其更改为其他位置无效。
LCJ 2012年

5
我可以使用以下方法将其记录到文件夹:initializeData =“ C:\ wcflogs \ wcf_svclog.svclog” />
Adrian Carr

32

在您的web.config中(在服务器上)添加

<system.diagnostics>
 <sources>
  <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
   <listeners>
    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="C:\logs\Traces.svclog"/>
   </listeners>
  </source>
 </sources>
</system.diagnostics>

1
我之所以这样添加,是因为除了该文件夹之外我无权访问开发人员,initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>并且在尝试访问服务后看不到该文件。
尼克·卡恩

5
默认情况下,它是缓冲的(也许可以更改它)。您可以通过回收应用程序池来强制刷新。还要确保应用程序池标识可以写入该位置。
Christoph

20

转到您的Microsoft SDKs目录。这样的路径:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools

从该目录打开WCF配置编辑器(Microsoft服务配置编辑器):

SvcConfigEditor.exe

(打开此工具的另一个选项是通过在Visual Studio 2017中导航到“工具”>“ WCF服务配置编辑器”)

wcf配置编辑器

使用编辑器打开.config文件或创建一个新文件,然后导航至“诊断”。

您可以在此处单击“启用MessageLogging”。

启用消息记录

更多信息:https : //msdn.microsoft.com/zh-cn/library/ms732009(v=vs.110).aspx

使用同一目录中的跟踪查看器,您可以打开跟踪日志文件:

SvcTraceViewer.exe

您还可以使用WMI启用跟踪。更多信息:https : //msdn.microsoft.com/zh-cn/library/ms730064(v=vs.110).aspx


2
非常感谢您向我介绍此GUI实用程序。它将使编辑配置文件变得更加容易!
symbiont

Awesome.it对我了解Tracelog很有帮助。
ksrds

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.