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? Vielen Dank.Wie kann ich die WCF-Protokollierung aktivieren, sodass sie in eine Datenbank schreibt?
Antwort
Sie müssen zwei Dinge:
- eine richtige Config .NET zu ermöglichen
- eine Spur Zuhörer Verfolgung der Trace-Meldungen zu erfassen und speichern sie in einer Datenbank
Für # 1:
Zuerst müssen Sie die Ablaufverfolgung in WCF machen - Sie müssen einen Eintrag in <system.serviceModel>
die Tracing ermöglicht:
<system.serviceModel>
<diagnostics>
<messageLogging
logEntireMessage="true"
logMalformedMessages="false"
logMessagesAtServiceLevel="true"
logMessagesAtTransportLevel="false"
maxMessagesToLog="300000"
maxSizeOfMessageToLog="200000"/>
</diagnostics>
</system.serviceModel>
Als nächstes müssen Sie .NET-Tracing als solche konfigurieren:
<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 name="xml" type="WcfTrace.Trace.WebTraceListener,WcfTrace.Trace" />
</sharedListeners>
</system.diagnostics>
hier statt Wenn Sie WebTraceListener oder andere vordefinierte Listener verwenden, können Sie auch einen eigenen datenbankorientierten Trace Listener anschließen.
für 2 #:
Sie können - natürlich - Ihre eigene SqlTraceListener
schreiben - oder Sie können dort eine der vielen vorgefertigten Lösungen nutzen, zum Beispiel this one here (Download Code Codeplex).
können Sie verwenden Log4Net
Wenn Sie nicht die gesamte SOAP-Nachricht benötigen, würde ich vorschlagen, log4net mit benutzerdefinierten IParameterInspector oder IDispatchMessageInspector-Implementierung zu verwenden, denn in diesem Fall können Sie schreiben, nur um zu protokollieren, was Sie brauchen. Andernfalls nehmen Sie die Lösung von marc_s.
- 1. Wie kann ich die Bildschirm-/Desktopgröße in Qt finden, sodass ich eine Desktopbenachrichtigung anzeigen kann?
- 2. Wie kann ich die Klasse synchronisieren, sodass ich sie aus UI-Thread- und Hintergrundthreads verwenden kann?
- 3. Wie programmatisch erhalten Sie die aktuelle Datenbank Mongoid schreibt?
- 4. Wie kann ich eine Abfrage in einer Django-Vorlage speichern, sodass sie nur einmal ausgeführt wird?
- 5. Wie kann ich BinaryLiterals aktivieren?
- 6. Kann ich die Verfolgung in OWIN aktivieren?
- 7. Wie kann ich die Migration aktivieren, um meine Datenbank in MVC4 zu aktualisieren?
- 8. Wie kann ich eine Async-Funktion verwenden, die in eine Service-Bus-Warteschlange schreibt?
- 9. Wie kann ich die Anmeldung im RhinoETL-Prozess aktivieren?
- 10. Erstellen Sie eine Pipe, die in mehrere Dateien schreibt (tee)
- 11. Wie kann ich eine SQLite-Datenbank "erweitern"?
- 12. Freetds schreibt numerisch als Ganzzahl in die Datenbank
- 13. Wie kann ich eine SQLite-Datenbank sperren?
- 14. Wie kann ich die Breakpoint-Marge in VS2010 aktivieren
- 15. Wie kann ich die Anmeldung in android Chrom aktivieren?
- 16. Wie kann ich die C-Erweiterung in jRuby aktivieren?
- 17. Reduce Datenbank schreibt mit memached
- 18. Amazon SQS-Datenbank Trichter schreibt
- 19. Kann ich die ausführliche DEX-Protokollierung aktivieren?
- 20. Wie kann ich eine Datenbank effektiv dokumentieren?
- 21. Wie kann ich eine mySQL-Datenbank sichern?
- 22. Wie kann ich eine Komponente aktivieren und deaktivieren?
- 23. Wie kann ich deaktivierte Optionsfelder aktivieren?
- 24. Wie kann ich eine Datenbank massiv aktualisieren?
- 25. Wie kann ich ein JButton wieder aktivieren
- 26. Mongoose save() -Methode schreibt nicht in die Datenbank
- 27. Wie kann ich Zoom auf Android aktivieren?
- 28. Wie aktivieren Sie die Migrationen in Mein MVC5-Projekt?
- 29. Reduzieren Sie, wie viel xcodebuild in die Befehlszeile schreibt
- 30. Wie kann ich die DynamicCompression-Funktion von IIS programmgesteuert aktivieren?
Blog [Konfigurieren des WCF-Dienstes zur Verwendung der Enterprise Library: Protokollanwendung zum Protokollieren von Daten in der Datenbank] (http://weblogs.asp.net/sukumarraju/archive/2011/11/07/configuring-wcf-service-to- uses-enterprise-library-logging-application-to-log-data-to-database.aspx) enthält eine schrittweise Anleitung, wie man den 'Database Trace Listener' konfiguriert –