2008-10-16 3 views
6

Ich habe begonnen, die integrierten TraceSource und TraceListener-Klassen und ich möchte das Ausgabeformat der Ereignisse unabhängig von den TraceSources und TraceListeners ändern. Es scheint, dass die TraceListeners ihre eigene Formatierung anwenden. Ist es möglich, die Formatierung vollständig zu ändern, ohne für jeden von mir verwendeten TraceListener eine neue Klasse zu erstellen?Hat das .Net-TraceSource/TraceListener-Framework etwas Ähnliches wie log4nets Formatters?

Antwort

5

Der Enterprise Library Logging-Anwendungsblock (http://msdn.microsoft.com/en-us/library/cc309506.aspx) basiert auf den Klassen .Net TraceSource und TraceListener (so dass Sie ihn einfach in Ihr Projekt einfügen können und es funktioniert) und unterstützt einen Nachrichtenformatierer kann in der web.config (oder app.config) konfiguriert werden.

+0

EntLib hat sehr schlechte Leistung, daher empfehle ich, es nicht zu verwenden. Vergleich hier: https://essentialdiagnostics.codeplex.com/wikipage?title=Comparison&referringTitle=Guidance –

0

Sie können die direkten Write() oder WriteLine() Methoden auf Trace verwenden, um geraden Text in Ihren TraceListener zu setzen.

+1

Die Frage ist über TraceSource, nicht Trace. – agarcian

2

Dies ist viel zu spät, aber für alle Nachzügler, die nach einer TraceSource/TraceListener-Lösung suchen, die eine ähnliche Formatierung wie in log4net, NLog und LAB unterstützt, könnten Sie versuchen Ukadc.Diagnostics. Sie können die von Ukadc bereitgestellten TraceListeners mit einer Formatierungszeichenfolge konfigurieren, und sie wird angewendet, wenn Traces zum Listener geschrieben werden. Sie können auch eigene Token schreiben und sie zur Formatierung hinzufügen. Zum Beispiel habe ich einen zum Spaß geschrieben, der einfach einen Zähler jedes Mal erhöht, wenn sein Wert abgerufen wird. Das Ergebnis ist, dass in der Protokolldatei jede Zeile eine sequenziell steigende Nummer erhält. Ich habe eine weitere geschrieben, die es ermöglicht, Informationen aus Trace.CorrelationManager.LogicalOperationStack zur Ausgabe hinzuzufügen.

Ich habe jetzt keinen einfachen Zugriff auf meinen Computer, der daran arbeitet, oder ich würde diese Beispiele veröffentlichen.

0

Für alle, die hier landen und immer noch nach einer benutzerdefinierten Formatierung für TraceListeners suchen, gibt es auch Essential.Diagnostics https://essentialdiagnostics.codeplex.com/ (Offenlegung: Ich bin in das Projekt involviert).

Um die ursprüngliche Frage zu beantworten, kann ein TraceListener benutzerdefinierte Eigenschaften in der Konfiguration akzeptieren, so dass es möglich ist, einen TraceListener zu schreiben, der mehrere Formate basierend auf Konfiguration verarbeitet, was flexibler als das Schreiben mehrerer ist.

Dies ist, was Essential.Diagnostics hat, es hat sowohl einen ColoredConsoleTraceListener als auch RollingFileTraceListener, die benutzerdefinierte Formatzeichenfolgen unterstützen, mit vielen Formatwerten bereits verfügbar.

Verwandte Themen