Zum Inhalt springen

EntLib4: Logging Application Block


maddin

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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!

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...