Como ativar o rastreamento do WCF?

160

Atualizar:

Eu tenho tentado ativar o rastreamento do WCF , mas ainda não obtém sucesso ... Abaixo está minha última atualização.

Preciso de uma permissão para escrever no local abaixo?

  <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>

Estou usando o .NET Framework 3.5.

Qual é a instrução passo a passo para ativar o rastreamento do WCF para fins de depuração?

Nick Kahn
fonte

Respostas:

230

A seguinte configuração obtida do MSDN pode ser aplicada para ativar o rastreamento no seu serviço 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>

Para exibir o arquivo de log, você pode usar "C: \ Arquivos de Programas \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe".

Se o "SvcTraceViewer.exe" não estiver no seu sistema, você poderá baixá-lo do pacote "Microsoft Windows SDK para Windows 7 e .NET Framework 4" aqui:

Download do SDK do Windows

Você não precisa instalar a coisa toda, apenas a parte ".NET Development / Tools".

Quando / se ocorrer um erro não sensorial durante a instalação, a resposta da Petopas à Falha na instalação do Windows 7 SDK resolveu meu problema.

Rohan West
fonte
18
onde eu vejo o arquivo é gerado Error.svclog?
Nick Kahn
4
O arquivo será gerado no mesmo diretório que sua montagem. Provavelmente o seu diretório bin. Pode ser necessário reciclar o processo do operador se os serviços estiverem hospedados no IIS.
Rohan West
9
Verifique se o seu Pool de aplicativos - Identidade tem permissão para gravar nessa pasta. Eu costumo ter uma conta dedicada atribuído ao meu pool de aplicativos, desta forma eu posso conceder ler \ acesso de gravação para esse usuário específico
Rohan Oeste
2
No ambiente de desenvolvimento, o arquivo Error (initializeData = "Error.svclog") é armazenado dentro do projeto da solução. Mudá-lo para outros locais não funcionou.
LCJ
5
Consegui fazer com que ele registrasse em uma pasta usando o seguinte: initializeData = "C: \ wcflogs \ wcf_svclog.svclog" />
Adrian Carr
32

No seu web.config (no servidor), adicione

<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>
Christoph
fonte
1
Eu adicionei assim, já que não tenho acesso ao desenvolvedor, exceto a pasta, initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>e não vejo esse arquivo ser gerado depois de tentar acessar os serviços.
Nick Kahn
5
Por padrão, ele é armazenado em buffer (pode ser possível alterar isso). Você pode forçar a descarga reciclando o pool de aplicativos. Verifique também se a identidade do pool de aplicativos pode gravar no local.
Christoph
20

Vá para o diretório Microsoft SDKs. Um caminho como este:

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

Abra o Editor de configuração do WCF (Editor de configuração de serviço da Microsoft) desse diretório:

SvcConfigEditor.exe

(outra opção para abrir essa ferramenta é navegando no Visual Studio 2017 para "Ferramentas"> "Editor de configuração de serviço do WCF")

editor de configuração wcf

Abra o arquivo .config ou crie um novo usando o editor e navegue para Diagnóstico.

Lá você pode clicar no "Ativar MessageLogging".

ativar o registro de mensagens

Mais informações: https://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx

Com o visualizador de rastreamento do mesmo diretório, é possível abrir os arquivos de log de rastreamento:

SvcTraceViewer.exe

Você também pode ativar o rastreamento usando o WMI. Mais informações: https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx

juFo
fonte
2
muito obrigado por me apresentar esse utilitário da GUI. tornará a edição dos arquivos de configuração muito mais fácil!
symbiont
Awesome.it me ajuda muito a entender o Tracelog.
ksrds 20/04
1

Em vez de adicionar manualmente o bit de ativação de rastreamento no web.config, você também pode tentar usar o editor de configuração do WCF que vem com o VS SDK para ativar o rastreamento

https://stackoverflow.com/a/16715631/2218571

CSharped
fonte