Śledzenie i rejestrowanie komunikatów
W przykładzie TracingAndLogging pokazano, jak włączyć śledzenie i rejestrowanie komunikatów. Wynikowe ślady i dzienniki komunikatów są wyświetlane przy użyciu narzędzia podglądu śledzenia usługi (SvcTraceViewer.exe). Ten przykład jest oparty na rozpoczynaniu pracy.
Uwaga
Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.
Śledzenie
Program Windows Communication Foundation (WCF) używa mechanizmu śledzenia zdefiniowanego System.Diagnostics w przestrzeni nazw. W tym modelu śledzenia dane śledzenia są generowane przez źródła śledzenia implementowane przez aplikacje. Każde źródło jest identyfikowane przez nazwę. Użytkownicy śledzenia tworzą odbiorniki śledzenia dla źródeł śledzenia, dla których chcą pobrać informacje. Aby odbierać dane śledzenia, należy utworzyć odbiornik dla źródła śledzenia. W programie WCF można to zrobić, dodając następujący kod do pliku konfiguracji usługi lub klienta, ustawiając źródło switchValue
śledzenia modelu usługi:
<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>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-service.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Aby uzyskać więcej informacji na temat źródeł śledzenia, zobacz sekcję Źródło śledzenia w temacie Konfigurowanie śledzenia .
Śledzenie i propagacja działań
Po ActivityTracing
włączeniu system.ServiceModel
i propagateActivity
ustawieniu true
wartości w źródłach śledzenia zarówno dla klienta, jak i usługi zapewniają korelację śladów w jednostkach logicznych przetwarzania (działań), między działaniami w punktach końcowych (za pośrednictwem transferów działań) i między działaniami obejmującymi wiele punktów końcowych (za pośrednictwem propagacji identyfikatora działania).
Te trzy mechanizmy (działania, transfery i propagacja) mogą pomóc w znalezieniu głównej przyczyny błędu szybciej za pomocą narzędzia Podgląd śledzenia usługi. Aby uzyskać więcej informacji, zobacz Używanie przeglądarki śledzenia usługi do wyświetlania skorelowanych śladów i rozwiązywania problemów.
Istnieje możliwość rozszerzenia śledzenia udostępnianego przez usługę ServiceModel przez utworzenie śladów aktywności zdefiniowanych przez użytkownika. Śledzenie aktywności zdefiniowane przez użytkownika umożliwia użytkownikowi tworzenie działań śledzenia w celu:
Grupuj ślady w jednostkach logicznych pracy.
Korelowanie działań za pośrednictwem transferów i propagacji.
Zmniejszyć koszt wydajności śledzenia WCF (na przykład koszt miejsca na dysku pliku dziennika).
Aby uzyskać więcej informacji na temat śledzenia działań zdefiniowanych przez użytkownika, zobacz przykład Rozszerzanie śledzenia .
Rejestrowanie komunikatów
Rejestrowanie komunikatów można włączyć zarówno na kliencie, jak i w usłudze dowolnej aplikacji WCF. Aby włączyć rejestrowanie komunikatów, należy dodać następujący kod do klienta lub usługi:
<configuration>
<system.serviceModel>
<diagnostics>
<!-- Enable Message Logging here. -->
<!-- log all messages received or sent at the transport or service model levels -->
<messageLogging logEntireMessage="true"
maxMessagesToLog="300"
logMessagesAtServiceLevel="true"
logMalformedMessages="true"
logMessagesAtTransportLevel="true" />
</diagnostics>
</system.serviceModel>
</configuration>
Po zarejestrowaniu komunikatu typ śledzenia zależy od tego, czy jest śledzony na kliencie, czy na serwerze. Na przykład komunikat "Dodaj", który jest wysyłany do klienta, jest śledzony w kategorii "TransportWrite" na kliencie, natomiast ten sam komunikat jest śledzony w kategorii "TransportRead" w usłudze.
Skonfiguruj odbiornik śledzenia, dodając następujący kod do System.Diagnostics sekcji pliku App.config klienta lub pliku Web.config usługi:
<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>
</sources>
<sharedListeners>
<add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener"
name="xml" />
</sharedListeners>
<trace autoflush="true" />
</system.diagnostics>
Komunikaty są rejestrowane w formacie XML w katalogu docelowym określonym w pliku konfiguracji.
Uwaga
Pliki śledzenia nie są tworzone bez początkowego tworzenia katalogu dziennika. Upewnij się, że katalog C:\logs\ istnieje lub określ alternatywny katalog rejestrowania w konfiguracji odbiornika. Aby uzyskać więcej informacji, zobacz instrukcje dotyczące początkowej konfiguracji na końcu tego dokumentu.
Aby uzyskać więcej informacji na temat rejestrowania komunikatów, zobacz temat Konfigurowanie rejestrowania komunikatów .
Aby skonfigurować, skompilować i uruchomić przykład
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Przed uruchomieniem przykładu Śledzenie i rejestrowanie komunikatów utwórz katalog C:\logs\ dla usługi, aby zapisać pliki svclog do. Nazwa tego katalogu jest zdefiniowana w pliku konfiguracji jako ścieżka do rejestrowania śladów i komunikatów i można je zmienić. Nadaj użytkownikowi dostęp do zapisu w usłudze sieciowej do katalogu logs.
Aby skompilować wersję rozwiązania W#, C++lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Kompilowanie przykładów programu Windows Communication Foundation.
Aby uruchomić przykład w konfiguracji pojedynczej lub między komputerami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.