2012-05-28 6 views
9

Ich habe einige .Net WCF-Dienste, für diese Dienste habe ich die app.config-Datei konfiguriert, um die gesendeten und empfangenen Nachrichten in einer .svclog-Datei zu protokollieren von "Service Trace Viewer Tool" (SvcTraceViewer.exe). Dieses Tool zeigt die Protokolldateien übersichtlich an und zeigt die verarbeiteten SOAP-Nachrichten an..Net WCF-Dienst Ablaufprotokoll mit Protokolldateiverwaltung (Rolling)

Ich muss den System.Diagnostics.XmlWriterTraceListener Listener verwenden, um die .svclog Datei korrekt zu formatieren, damit sie vom Service Trace Viewer Tool verarbeitet werden kann.

Das Problem, das ich habe, ist, dass die .svclog Datei zu groß wird & das Service Trace Viewer Tool wird unbrauchbar aufgrund der langsamen Antwortzeiten.

Das Service-Trace-Viewer-Tool bietet die Möglichkeit, einen Teil der Protokolldatei zu öffnen, wenn die Datei> 40 MB groß ist. Dies ist jedoch immer noch zu langsam. Es scheint keine Funktion in der Datei app.config zu geben, um den .svclog so zu konfigurieren, dass er jeden Tag automatisch eine neue Datei erstellt oder wenn die Datei eine bestimmte Größe erreicht.

Es gibt einen Textprotokoll-Listener mit dem Namen Microsoft.VisualBasic.Logging.FileLogTraceListener, der eine Eigenschaft logfilecreationschedule = "Daily" unterstützt, die die Protokolldatei täglich rollt, jedoch ist die resultierende Protokolldatei dieses Listeners für eine Operationssupportperson schwierig zu verwenden, da die Protokolleinträge nicht gut gerendert werden und die großen XML-Dokumente zur Verwirrung beitragen.

Was ist die beste Vorgehensweise in diesem Bereich, sieht es so aus, als ob ich eine benutzerdefinierte WCF-Protokollerweiterung schreiben muss, die wie Overkill erscheint, nur um das Fehlen einer Protokolldatei Roll-Funktion in der integrierten System.Diagnostics zu behandeln. XmlWriterTraceListener Protokoll Listener/Appender.

Ich experimentierte auch mit einem Skript, um meine Anwendung zu stoppen und die Protokolldateien umzubenennen, aber das scheint nicht möglich, weil unter Windows die handle.exe und openfile Dienstprogramme eine über eine Netzwerkfreigabe geöffnete Datei nicht schließen können Die alte Protokolldatei kann nicht umbenannt/verschoben werden, wenn jemand sie über eine Netzwerkfreigabe durchsucht. Wird in Kürze eine separate Frage dazu stellen.

Danke, Matt.

+0

Obwohl es machbar ist, werden Sie nicht annehmen WCF haben Tracing alle Zeiten aktiviert. Es ist als Problemlösung konzipiert und hat Auswirkungen auf die Leistung. Deaktivieren Sie es in der Produktionsumgebung ist eine bewährte Methode. –

Antwort

9

Sie können entweder selbst entwickeln oder eine bereits vorhandene spezialisierte XmlWriterTraceListener verwenden oder einen kreisförmigen Protokollierungsmechanismus verwenden.

Es ist eine spezielle Implementierung des XmlWriterTraceListener die Rollprotokoll auf Codeproject Tracing führt:

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

Mit Kreis Tracing Sie zwei Dateien, die kann jeder Speicher bis zu der Hälfte der Gesamtspuren Logdaten erwünscht . Der Listener erstellt eine Datei und schreibt diese in die Datei, bis sie die Grenze der Hälfte der Datengröße erreicht. An diesem Punkt wird zu einer zweiten Datei gewechselt. Wenn der Listener das Limit für die zweite Datei erreicht, überschreibt er die erste Datei mit neuen Traces.

http://msdn.microsoft.com/en-us/library/aa395205.aspx

+0

Danke Sergio, du kennst entweder deine WCF oder deine Web-Suchfähigkeiten weit über meinen. Entweder kann, sehr geschätzt. Beide Lösungen sind praktikabel. Ich bin mir nicht sicher, mit wem ich noch gehen werde. Ich kann beides versuchen. – MattG

Verwandte Themen