Jak włączyć śledzenie WCF?

160

Aktualizacja:

Próbowałem włączyć śledzenie WCF , ale nadal bez powodzenia ... Poniżej znajduje się moja ostatnia aktualizacja.

Czy potrzebuję pozwolenia na pisanie do poniższej lokalizacji?

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

Używam .NET Framework 3.5.

Jaka jest instrukcja krok po kroku, aby włączyć śledzenie WCF na potrzeby debugowania?

Nick Kahn
źródło

Odpowiedzi:

230

Następującą konfigurację pobraną z MSDN można zastosować, aby włączyć śledzenie w usłudze 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>

Aby wyświetlić plik dziennika, możesz użyć „C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ SvcTraceViewer.exe”.

Jeśli w systemie nie ma pliku „SvcTraceViewer.exe”, możesz go pobrać z pakietu „Microsoft Windows SDK dla Windows 7 i .NET Framework 4” tutaj:

Pobieranie zestawu Windows SDK

Nie musisz instalować całej rzeczy, tylko część „.NET Development / Tools”.

Kiedy / jeśli bombarduje podczas instalacji z niesensownym błędem, odpowiedź Petopasa na niepowodzenie instalacji zestawu SDK systemu Windows 7 rozwiązała mój problem.

Rohan West
źródło
18
gdzie widzę, że plik jest generowany Error.svclog?
Nick Kahn
4
Plik zostanie wygenerowany w tym samym katalogu co zestaw. Najprawdopodobniej twój katalog bin. Może być konieczne ponowne uruchomienie procesu roboczego, jeśli usługi są hostowane w usługach IIS.
Rohan West,
9
Upewnij się, że Twoja pula aplikacji - tożsamość ma uprawnienia do zapisu w tym folderze. Zwykle mam dedykowane konto przypisane do mojej puli aplikacji, w ten sposób mogę przyznać dostęp do odczytu / zapisu temu konkretnemu użytkownikowi
Rohan West
2
W środowisku programistycznym plik błędu (initializeData = "Error.svclog") jest przechowywany w projekcie rozwiązania. Zmiana na inne lokalizacje nie działa.
LCJ
5
Udało mi się zmusić go do zalogowania się do folderu za pomocą tego: initializeData = "C: \ wcflogs \ wcf_svclog.svclog" />
Adrian Carr,
32

W swoim web.config (na serwerze) dodaj

<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
źródło
1
Dodałem w ten sposób, ponieważ nie mam dostępu do dev z wyjątkiem folderu initializeData="\\servername\drive$\Project\WCFTraces.svclog"/>i nie widzę, że plik jest generowany po próbie dostępu do usług.
Nick Kahn
5
Domyślnie jest buforowany (może być w stanie to zmienić). Możesz zmusić go do opróżnienia, ponownie ustawiając pulę aplikacji. Upewnij się również, że tożsamość puli aplikacji może zapisywać w lokalizacji.
Christoph,
20

Przejdź do katalogu Microsoft SDK. Taka ścieżka:

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

Otwórz Edytor konfiguracji WCF (Edytor konfiguracji usługi firmy Microsoft) z tego katalogu:

SvcConfigEditor.exe

(Inną opcją otwarcia tego narzędzia jest przejście w programie Visual Studio 2017 do pozycji „Narzędzia”> „Edytor konfiguracji usługi WCF”)

edytor konfiguracji wcf

Otwórz plik .config lub utwórz nowy za pomocą edytora i przejdź do Diagnostyka.

Tam możesz kliknąć "Włącz MessageLogging".

włączyć messagelogging

Więcej informacji: https://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx

Za pomocą przeglądarki śledzenia z tego samego katalogu można otworzyć pliki dziennika śledzenia:

SvcTraceViewer.exe

Możesz również włączyć śledzenie za pomocą WMI. Więcej informacji: https://msdn.microsoft.com/en-us/library/ms730064(v=vs.110).aspx

juFo
źródło
2
dziękuję bardzo za wprowadzenie mnie do tego narzędzia GUI. znacznie ułatwi to edycję plików konfiguracyjnych!
symbiont
Awesome. To bardzo pomaga mi zrozumieć Tracelog.
ksrds
1

Zamiast ręcznego dodawania śledzenia umożliwiającego śledzenie do pliku web.config można również spróbować użyć edytora konfiguracji WCF, który jest dostarczany z VS SDK, aby włączyć śledzenie

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

CSharped
źródło