.Net WCF Service Trace-Log mit log-Datei-management (Rollen)
Habe ich einige .Net WCF services, für diese Dienste habe ich die app konfiguriert.config-Datei zum protokollieren der gesendeten und empfangenen Nachrichten in einem .svclog-Datei, die lesbar ist "Service Trace Viewer-Tool" (SvcTraceViewer.exe) . Dieses tool macht die log-Dateien schön deutlich, welche die SOAP-Nachrichten verarbeitet werden.
Habe ich das System verwenden.Diagnostik.XmlWriterTraceListener Zuhörer richtig zu formatieren .svclog Datei zu verarbeiten, die durch das Service Trace Viewer-Tool.
Das problem, das ich habe ist, dass die .svclog Datei zu groß wird & das Service Trace Viewer-Tool unbrauchbar aufgrund zu langsamer Reaktionszeiten.
Das Service Trace Viewer-Tool ist eine Einrichtung zu ermöglichen, einen Teil der log-Datei zu öffnen, wenn die Datei > 40 MB in der Größe, aber das ist noch zu langsam. Es scheint keine Möglichkeit in der app.config-Datei zu konfigurieren .svclog automatisch eine neue Datei erstellen, jeden Tag oder, wenn die Datei bekommt zu einer bestimmten Größe.
Es ist ein text-log-listener namens Microsoft.VisualBasic.Die Protokollierung.FileLogTraceListener, die nicht die Unterstützung einer logfilecreationschedule="Täglich" - Eigenschaft, die sich die log-Datei täglich, jedoch ist die daraus resultierende log-Datei von dieser Hörer ist sehr schwierig, in einem Betrieb Unterstützung person zu verwenden, wie die log Einträge sind nicht gut gemacht und die große xml-docs tragen zur Verwirrung.
Was ist die beste Praxis in diesem Bereich, wie es aussieht, kann ich noch so schreiben Sie einen benutzerdefinierten WCF-log-Erweiterung, die scheint wie overkill, nur um befassen sich mit fehlen eine log-Datei-roll-Funktion in das eingebaute System.Diagnostik.XmlWriterTraceListener log listener /appender.
Ich experimentierte auch mit einem Skript zu stoppen meine Anwendung und benennen Sie die log-Dateien aber dies scheint nicht möglich zu sein, da unter Windows die handle.exe und openfile-Dienstprogramme sind nicht in der Nähe einer geöffneten Datei über ein Netzwerk zu teilen, so kann ich nicht umbenennen /verschieben Sie die alte log-Datei, wenn jemand surfen Sie über ein Netzwerk teilen. Auf dem Postweg eine separate Frage in Kürze.
Dank,
Matt.
- Wenn es machbar ist, werden Sie nicht haben soll, WCF-Ablaufverfolgung aktiviert alle Zeiten. Es ist konzipiert als ein Ansatz zur Problembehebung, und hat Auswirkungen auf die Leistung. Deaktivieren Sie es in einer Produktionsumgebung ist die beste Praxis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie entweder entwickeln Sie sich, oder verwenden Sie eine bereits bestehende spezialisierte
XmlWriterTraceListener
oder verwenden Sie eine kreisförmige tracing-Protokoll-Mechanismus.Gibt es eine spezielle Umsetzung der
XmlWriterTraceListener
führt, dass die rolling log tracing auf Codeproject:http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener
Zirkuläre Ablaufverfolgung, Sie haben zwei Dateien, die kann jeder laden bis zur Hälfte der insgesamt gewünschten trace-log-Daten. Der Hörer erzeugt eine Datei und schreibt in diese Datei, bis Sie erreicht die Grenze von der Hälfte der Größe der Daten, an welcher Stelle es schaltet auf eine zweite Datei. Wenn der Hörer das limit erreicht für die zweite Datei - es überschreibt die erste Datei mit einem neuen Spuren.
http://msdn.microsoft.com/en-us/library/aa395205.aspx
Ich zusammen geflickt, ein Powershell-Skript ändert den Namen der Protokolldatei an, die in der SVC ' s web.config, dann erstellt einen Aufgabenplaner job ausführen, um das Skript stündlich.
Das Skript geht davon aus, Sie haben so etwas in Ihrem web.config :
Im Task-Analyse, Aktion, Programm Starten, stellen
Powershell.exe
im Feld Programm/Skript, und fügen Sie dann-ExecutionPolicy ByPass c:\yourfolder\amendWebConfig.ps1
in der Argumente Hinzufügen Feld.Die Aufgabe ausgeführt wird, und aktualisiert anschließend die web.config den initializeData-Datei, zum Beispiel