maddin Geschrieben 25. September 2008 Geschrieben 25. September 2008 Gudde, ich habe zwei kleine Probleme mit dem Logging Application Block der Enterprise Library 4.0. Und zwar möchte ich sowohl trace-Informationen als auch Fehler,- Debugmeldungen, ... in EINE Datei loggen. Ich habe mir dafür zwei TraceListener konfiguriert. Der erste schreibt nur Meldungen vom Typ 'ActivityTracing' in die Log-Datei. Der zweite den ich konfiguriert habe soll eigentlich Meldungen vom Typ 'Verbose' in die selbe Datei schreiben. Beide TraceListener sind identisch konfiguriert, abgesehen vom Filter und vom Formatter. Das Problem ist, der erste TraceListener, der die Meldungen vom Typ 'ActivityTracing' loggen soll, tut dies auch und schreibt diese in die richtige Datei (trace.log). Der zweite TraceListener allerdings schreibt seine Meldungen in eine andere Datei, bei der sich der Dateiname aus einer GUID und dem konfigurierten Dateinamen zusammensetzt. Wie kann ich erreichen, dass beide TraceListener in die selbe Datei schreiben? Zum zweiten Problem: Die TraceInformationen werden geloggt mit der Nachricht z.B. 'Start Trace <ID> in <Methode> at <TICKS>'. Kann ich die Informationen auch einzelnen über einen Formatter ausgeben. Also z.B. nur die Methode oder nur die 'elapsed time' bei der End Trace Meldung? Zitieren
Jakan Geschrieben 25. September 2008 Geschrieben 25. September 2008 Hi ich hoffe ich verstehe dich richtig, du willst per trace sowohl die Informationen als auch Fehler in einer Datei protokollieren... falls das so ist hier die Lösung (weil genau das mache ich auch) In der "Programmname".exe.config folgendes einfügen: <system.diagnostics> <trace autoflush="true" indentsize="4"> <listeners> <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="Dateiname.exe.log" > <!-- filter type="System.Diagnostics.EventTypeFilter" initializeData="Warning" /--> </add> <remove name="Default" /> </listeners> </trace> </system.diagnostics> und im Programm selber entweder: Trace.TraceInformation verwenden oder eben Trace.TraceError und schon schreibt er das gemeinsam in eine log-Datei! Zitieren
maddin Geschrieben 25. September 2008 Autor Geschrieben 25. September 2008 Vielleicht etwas ausführlicher. Ich habe folgenden Code z.B. in einer Methode: public void f(int a) { using (new Tracer("Trace")) { Logger.Write("Hallo Welt!", "Kategorie", priority, eventId, severity); } } Läuft das Programm in den using-Block bekomme ich einen Log-Eintrag 'Start Trace id in Method f at xxx ticks' beim verlassen 'End Trace ... (elapsed time xxxx)'. Die Nachricht 'Hallo Welt!' sollte eigentlich zwischen den beiden Einträgen geschrieben werden, wird allerdings in einer andere Datei geschrieben. Mit deiner Methode kann ich dazu nur Fehler, Warnungen, Informationen loggen, keine Debug-Informationen, ... und ich kann keine Kategorie, Priotität, EventId oder Severity festlegen. Aber genau das möchte ich für die spätere Auswertung. Auch werden kritische Fehler bei mir direkt via E-Mail weitergeleitet, damit ich sofort weiß, wenn das Programm meinen Eingriff benötigt. Zitieren
maddin Geschrieben 25. September 2008 Autor Geschrieben 25. September 2008 Ich schiebe gerne noch einmal das config-file nach: ... <loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="" logWarningsWhenNoCategoriesMatch="true"> <listeners> <add fileName="trace.log" header="" footer="" formatter="Error Formatter" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="Error TraceListener" /> <add fileName="trace.log" header="" footer="" formatter="Trace Formatter" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" traceOutputOptions="None" filter="ActivityTracing" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="ActivityTracing TraceListener" /> </listeners> <formatters> <add template="{tab}{message}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="Error Formatter" /> <add template="{timestamp}{tab}{message}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="Trace Formatter" /> </formatters> <specialSources> <allEvents switchValue="All" name="All Events"> <listeners> <add name="Error TraceListener" /> <add name="ActivityTracing TraceListener" /> </listeners> </allEvents> <notProcessed switchValue="All" name="Unprocessed Category" /> <errors switchValue="All" name="Logging Errors & Warnings" /> </specialSources> </loggingConfiguration> ... ich habe damit ein log file mit den trace-Informationen: 25.09.2008 12:49:36 Start Trace: Activity ... in method '...' at 650225559653451 ticks 25.09.2008 12:50:11 End Trace: Activity ... in method '...' at 650307298882797 ticks (elapsed time: 34,142 seconds) 25.09.2008 12:50:11 Start Trace: Activity ... in method '...' at 650307303699732 ticks 25.09.2008 12:50:17 End Trace: Activity ... in method '...' at 650323300569660 ticks (elapsed time: 6,681 seconds) 25.09.2008 12:50:17 Start Trace: Activity ... in method '...' at 650323301642244 ticks 25.09.2008 12:50:23 End Trace: Activity '...' in method '...' at 650337230759175 ticks (elapsed time: 5,818 seconds) und ein log file mit allen Informationen: Start Trace: Activity ... in method '...' at 650225559653451 ticks Hallo Welt! End Trace: Activity ... in method '...' at 650307298882797 ticks (elapsed time: 34,142 seconds) Start Trace: Activity ... in method '...' at 650307303699732 ticks Hallo Welt! End Trace: Activity ... in method '...' at 650323300569660 ticks (elapsed time: 6,681 seconds) Start Trace: Activity ... in method '...' at 650323301642244 ticks Hallo Welt! End Trace: Activity ... in method '...' at 650337230759175 ticks (elapsed time: 5,818 seconds) Bei Informationen sollen allerdings, wie angesprochen in einer Datei landen, allerdings mit unterschiedlichen Formattern formatiert. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.