Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
PS EventLogManager [Updated 10.02.2013]
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2349

Themenstarter:

PS EventLogManager [Updated 10.02.2013]

beantworten | zitieren | melden

EventLogManager
Aktuelle Version: 1.2.4789.27658
Benötigte .NET Framework Version: 2.0


Beschreibung:

Der PS EventLogManager stellt Funktionalität bereit um Ereignisse zur Laufzeit der Anwendung zu Protokollieren. Er ist beliebig um weitere LogEngines erweiterbar und unterstützt derzeit das Protokollieren in das Windows Ereignisprotokoll, sowie in Xml-Dateien.

Release Log:
05.10.2010 Version 1.0
07.10.2010: Bug im XmlLogger zur Todo-List hinzugefügt.
11.10.2010 Version 1.1
     Bug behoben
     Anzeige der Einträge überarbeitet
     Funktion zum abrufen der Logeinträge hinzugefügt (GetLogEntries())
10.02.2013 Version 1.2
     EventLogManager erweitert um Nutzerdefinierte Loggertypen verwenden zu können
     spezifische Logger sind nun in eigenen Assemblies
     standard Dialog zur Anzeige der Logeinträge entfernt

Initialisierung des EventLogManagers:
Der EventLogManager lässt sich auf 2 Arten initialisieren, zum einen durch Definition der Assembly (welche die LogEngine enthält) und der Konfigurationsdatei für den Logger in der Anwendungskonfigurationsdatei, zum anderen durch Übergabe dieser Informationen als Parameter der Initialize Methode.

Für die Initialisierung aus der Anwendungskonfiguration, muss diese den folgenden Konfigurationsabschnitt enthalten:

	<configSections>
		<section
	        name="loggerSettings" 
	        type="PS.Utilities.Logging.LoggerConfigurationSection, PS.Utilities.Logging" 
	      />
	</configSections>

	<loggerSettings>
		<assembly name="PS.Utilities.Logging.XmlLogger" />
		<settingsFile path="ConfigFile_Event.xml" />
	</loggerSettings>


Verwendungsbeispiel:


using PS.Utilities.Logging;

namespace PS.TestApplikation
{
   public class Program
   {
        /// <summary>
        /// Der Haupteinstiegspunkt für die Anwendung.
        /// </summary>
        [STAThread]
        static void Main()
        {
            // the PS EventLogManager is static so we just have to initialize it
            PSEV.Initialize();

            // PSEV.Initialize("PS.Utilities.Logging.XmlLogger", "ConfigFile_Event.xml");

           // write an event
            PSEV.WriteEvent("Anwendung wurde erfolgreich gestartet.", null, LogEntryType.SuccessAudit);

            // uninitialize the event manager
            PSEV.Uninitialize();
        }
   }
}

Für die Verwendung des EventLogManagers ist lediglich ein Verweis auf die Assembly PS.Utilities.Logging notwendig. Wichtig ist jedoch, das die Assembly mit der zu verwendenten LogEngine im Anwendungspfad vorhanden ist.

Zu Beachten ist, dass der EventLogManager nur einmal zu Programmstart initialisiert werden muss. - Dannach kann auf die bereitgestellten Methoden direkt zugegriffen werden.

Konfiguration der LogEngine
onfiguriert wird der PS EventLogManager durch eine eigene Konfigurationsdatei.
Der Inhalt der Konfigurationsdatei ist abhängig von der LogEngine. Jede LogEngine kann eine typisierte LogEngine erhalten.

Für die beiden Standardengines sehen die Konfigurationsdateien wie folgt aus:
Konfiguriert wird der PS EventLogManager durch eine eigene Konfigurationsdatei.

Für die Verwendung des Windows Ereignisprotokolls ist folgendes Konfigurationsdesign notwendig:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
  <!-- The Event Source - Free editable -->
  <EventSource>PS_Test</EventSource>
  <!-- The Event Log - Free editable -->
  <EventLog>PS Test</EventLog>
</Configuration>

Für die Verwendung einer Xml-Protokollierung ist folgendes Xml-Design notwendig:

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
  <!-- The file where the log entries should be written to. - Free editable -->
  <LogFile>ps_log.xml</LogFile>
</Configuration>

Der Pfad zu dieser Konfigurationsdatei wird im oben beschriebenen Konfigurationsabschnitt festgelegt.

Abruf der Logeinträge

Über die Methode GetLogEntries können alle Logeinträge abgerufen werden, zum Beispiel zur Ausgabe auf einem eigenen Dialog.

Besonderheiten

Unter Windows XP kann der LogType EventLog problemlos verwendet werden. Unter Windows Vista und 7 macht uns aber die Nutzerverwaltung einen Strich durch die Rechnung. - Dies bedeuted, wir müssen das Ereignisprotokoll mit Adminrechten erstellen lassen.

Am besten eignet es sich daher, das Ereignisprotokoll im Setup der Anwendung zu erstellen.

Erstellen einer eigenen LogEngine

Zur Erstellung einer eigenen LogEngine z.B. zum Loggen in die Datenbank, muss von dem Interface ILogEngine abgeleitet werden, welche in der Assembly PS.Utilities.Logging zu finden ist. Das Interface gibt das Grundgerüst für eine LogEngine vor.


    public interface ILogEngine : IDisposable
    {
        LoggerConfiguration Configuration
        {
            get;
            set;
        }
        void WriteLog(string message, Exception exc, LogEntryType logEntryType);
        LogEntry[] GetLogEntries();
        void Dispose();
    }

Zur Definition einer spezifischen Konfigurationsklasse für die benutzerdefinierte LogEngine ist von der Klasse LoggerConfiguration abzuleiten.

Die Konfigurationsdatei muss nicht eigenständig ausgelesen werden, dies übernimmt der EventLogManager automatisch bei der Initialisierung.

Für den Zugriff auf die Konfigurationswerte ist jedoch die Instanz der LoggerConfiguration in den selbst definierten Typen zu casten. Hierfür bietet sich eventuell eine zusätzliche Property wie folgt an:


// TypedConfiguration ist durch den Typen der Konfiguration zu ersetzen
private TypedConfiguration
{
    get { return this.Configuration as TypedConfiguration; }
}

Schlagwörter: EventLog, Ereignisprotokollierung, Fehler loggen, Logeinträge schreiben
Dieser Beitrag wurde 12 mal editiert, zum letzten Mal von inflames2k am .
Attachments
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek

Moderationshinweis von Abt (04.02.2021 - 21:43:48):

Version 1.0 habe ich direkt hier angehängt.

private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2349

Themenstarter:

beantworten | zitieren | melden

Mir fiel gerade selbst ein Fehler beim loggen in eine Xml Datei auf.

Aktuell deserialisiere ich die Logeinträge im Konstruktor, was so nicht sein darf. - Denn an der Stelle ist die Datei noch nicht bekannt.

Ich werde schauen, dass ich den schnellst möglich behebe. - Außerdem werde ich eine Methode hinzufügen, die es ermöglicht selbst die Logeinträge abzurufen, um nicht gezwungen zu sein das interne Formular zu verwenden.

Und auch das interne Formular werde ich überarbeiten. - Ich denke mal bis spätestens Sonntag sollte der Fehler behoben sein und die neue Version verfügbar.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2349

Themenstarter:

beantworten | zitieren | melden

Wie versprochen nun das Update des EventLogManagers.

Neu hinzugekommen ist wie bereits angekündigt die Methode zum abrufen der LogEntries ohne den internen Dialog zu öffnen.

Dazu wurde die Methode "GetLogEntries" hinzugefügt, welche die Logeinträge als Array zurück liefert.

[EDIT]Screenshot des angepassten EventLogViewers entfernt, da in der aktuellen Version nicht mehr enthalten.[/EDIT]
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von inflames2k am .
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers
inflames2k
myCSharp.de - Experte

Avatar #AARsmmPEUMee0tQa2JoB.png


Dabei seit:
Beiträge: 2349

Themenstarter:

beantworten | zitieren | melden

Ich habe den EventLogManager mal wieder etwas angepasst. Zu den wichtigsten Neuerungen zählt, das es nun möglich ist eigene LogEngines hinzuzufügen.

An der Grundlegenden Verwendung des EventLogManagers hat sich nach außen nichts verändert. Die Aktuelle Version steht im Startbeitrag zum Download. Hinweise zur Erstellung eigener LogEngines finden sich ebenfalls im Startbeitrag.
Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager | Spielkartenbibliothek
private Nachricht | Beiträge des Benutzers