Ich möchte in der Lage sein, Nachrichteninformationen in einer Datenbank zu protokollieren, und ich versuche zu entscheiden, wie das am besten funktioniert. Ist es möglich, die Protokollierungsmechanismen von WCF so zu konfigurieren, dass sie in eine Datenbank anstatt in eine Datei schreiben? Danke.
Sie müssen zwei Dinge haben:
Für # 1 :
Sie müssen zuerst die Ablaufverfolgung in WCF aktivieren - Sie benötigen einen Eintrag in <system.serviceModel>
, der die Ablaufverfolgung aktiviert:
Als nächstes müssen Sie die .NET-Ablaufverfolgung als solche konfigurieren:
%Vor%Hier können Sie anstelle des WebTraceListeners oder anderer vordefinierter Listener auch Ihren eigenen datenbankorientierten Trace-Listener anschließen.
Für # 2:
Sie können natürlich Ihre eigene SqlTraceListener
schreiben - oder Sie können eine der vielen vorgefertigten Lösungen verwenden, zum Beispiel diese hier (lade den Code von Codeplex ) herunter.
Wenn Sie nicht die gesamte SOAP-Nachricht benötigen, würde ich vorschlagen, log4net mit benutzerdefiniertem IParameterInspector oder IDispatchMessageInspector-Implementierung, denn in diesem Fall können Sie schreiben, um nur das zu protokollieren, was Sie benötigen. Andernfalls nehmen Sie die Lösung von marc_s.
Tags und Links wcf database performance logging