Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

EntLib4: Logging Application Block

Empfohlene Antworten

Veröffentlicht

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?

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!

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.