Befehle des Menübands überspringen
Zum Hauptinhalt wechseln
Lösungen von einem Team

Protokollierung von Laufzeitfehlern

Worum geht es?

Wann immer in den Microsoft .NET-basierten SF-Anwendung ein unerwarteter Fehler zur Laufzeit eines Programms auftritt​, versuchen die Programme, Diagnoseinformationen für eine spätere Analyse ins Windows-Anwendungs-Ereignisprotokoll zu schreiben. Dazu verwenden wir eine standardisierte Microsoft-Komponente, die die Ereignisquelle ExceptionManagerPublishedException verwendet. Diese Ereignisquelle muss auf dem Computer, auf dem die SF-Anwendung läuft, registriert sein, damit die Diagnoseinformationen geschrieben werden können.

Wodurch kann die Ereignisquelle registriert werden?

Die Ereignisquelle kann wie folgt registriert werden:

  • Durch ausführen eines Installationsprogramms für die jeweilige SF-Anwendung (angemeldet als jemand mit administrativen Berechtigungen auf dem jeweiligen Computer). Dabei wird die Ereignisquelle automatisch registriert.
  • Falls ein Laufzeitfehler in einer SF-Anwendung auftritt, versucht die Anwendung, die ggf. noch fehlende Ereignisquelle zur Laufzeit zu registrieren. Das wird dann und nur dann funktionieren, falls die Anwendung mit administrativen Berechtigungen ausgeführt wurde. Außer bei Software, die ausdrücklich für administrative Tätigkeiten gedacht ist (wie z.B. die SF Serververwaltung) raten wir dringend davon ab, Anwendungen mit administrativen Berechtigungen auszuführen, weil der potenzielle Schaden bei einem Befall mit Schadsoftware dramatisch höher ist, als wenn die Software wie gedacht nur mit normalen Benutzerberechtigungen ausgeführt wird.
  • Durch manuelle Registrierung der Ereignisquelle, wie später noch beschrieben wird.

Warum könnte die Ereignisquelle auf einem Computer fehlen?

Da fast alle SF-Software einfach dadurch ausgeführt werden kann, dass die jeweilige .exe-Datei z.B. von einem Fileserver gestartet wird, ist für die meisten Installationen die Ausführung eines Installationsprogramms nicht notwendig. Da die Programme aber wie empfohlen ohne administrative Berechtigungen ausgeführt werden, kann es also sein, dass die Ereignisquelle nie registriert wurde und auch zur Fehlerzeit nicht registriert werden kann. Dadurch fehlen die nützlichen Diagnoseinformationen, falls ein Laufzeitfehler auftreten sollte.

Wie kann man die Ereignisquelle manuell registrieren?

Als Teil des Microsoft .NET Frameworks wird ein Programm namens InstallUtil.exe installiert, dass diese Aufgabe übernehmen kann. Sie finden dieses Programm im Installationsverzeichnis von Microsoft .NET und müssen es einmal pro Computer mit administrativen Berechtigungen und unter Angabe des vollständigen Pfades zu einer Kopie der mit den SF-Anwendungen ausgelieferten Datei Microsoft.ApplicationBlocks.ExceptionManagement.dll ausführen.

Für ein typisches System mit installiertem Microsoft .NET Framework 4.x können Sie das so tun:

  1. Öffnen Sie eine Windows PowerShell oder eine Eingabeaufforderung ausdrücklich mit administrativen Berechtigungen.
  2. Geben Sie einen Befehl wie den folgenden ein (hier am Beispiel von .NET 4.x und einem lokal installierten SF Buchungsplan Offline-Client; das folgende ist ein einziger Befehl, auch wenn er in Ihrem Browser auf mehrere Zeilen umbrochen dargestellt wird):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll"

Der erste Pfad muss zu einer existierenden Fassung der InstallUtil.exe des .NET-Frameworks führen, der zweite Pfad zu einer Kopie der Microsoft.ApplicationBlocks.ExceptionManagement.dll.

Wie kann ich prüfen, ob die Registrierung funktioniert hat?

Sie können die Registrierung durch Lesen der Ausgabe der InstallUtil.exe oder durch Filtern in der Windows Ereignisanzeige überprüfen.

Überprüfung der Ausgabe von InstallUtil.exe

Eine Beispielausgabe der InstallUtil.exe sieht so aus, und der grün fettgesetzte Teil zeigt den Erfolg an:

PS C:\Windows\system32> C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe 'C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll'
Microsoft (R) .NET Framework-Installationsprogramm, Version 4.6.1098.0
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Eine transaktive Installation wird ausgeführt.
Die Installationsphase wird gestartet.
Die Protokolldatei enthält den Fortschritt der Assembly C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll.
Die Datei befindet sich in C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.InstallLog.
Assembly C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll wird installiert.
Betroffene Parameter:
   logtoconsole =
   logfile = C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.InstallLog
   assemblypath = C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll
Die EventLog-Quelle ExceptionManagerInternalException im Protokoll Application wird erstellt...
Die EventLog-Quelle ExceptionManagerPublishedException im Protokoll Application wird erstellt...
Die Installationsphase ist abgeschlossen, und die Commitphase beginnt.
Die Protokolldatei enthält den Fortschritt der Assembly C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll.
Die Datei befindet sich in C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.InstallLog.
Assembly C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll wird ausgeführt.
Betroffene Parameter:
   logtoconsole =
   logfile = C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.InstallLog
   assemblypath = C:\Program Files\SF Softwareberatung\SF Buchungsplan Offline-Client\Microsoft.ApplicationBlocks.ExceptionManagement.dll
Die Commitphase wurde erfolgreich abgeschlossen.
Die transaktive Installation ist abgeschlossen.

Überprüfung der verfügbaren Quellen im Ereignisprotokoll

Zur Überprüfung im Ereignisprotokoll gehen sie wie folgt vor:

  1. Starten Sie die Windows-Ereignisanzeige.
  2. Wählen Sie das Windows-Protokoll Anwendung.
  3. Wählen Sie im Aufgabenbereich den Befehl Aktuelles Protokoll filtern...
  4. Überprüfen Sie, ob Sie im Feld Quellen den Eintrag ExceptionManagerPublishedException sehen und ankreuzen können.

Was ist noch zu beachten?

Die Ereignisquelle sollte auf jedem Computer registriert sein, auf dem SF-Software ausgeführt wird. Dadurch können Laufzeitfehler jederzeit auch rückwirkend analysiert werden, solange die Ereignisprotokoll-Einträge noch auf dem System befindlich oder zentral gesammelt worden sind.

  • Die einmalige Registrierung je Computer genügt. Sie brauchen die Registrierung nicht pro Benutzer oder pro SF-Anwendung durchzuführen.
  • Falls Sie mehrere SF-Anwendungen verwenden, genügt die einmalige Registrierung (je Computer):
    • Sie brauchen sie nicht pro Anwendung zu wiederholen.
    • Sie brauchen sie nicht pro Benutzer zu wiederholen.
    • Sie können dafür eine beliebige Microsoft.ApplicationBlocks.ExceptionManagement.dll-Datei verwenden, die mit einem Ihrer SF-Produkte ausgeliefert wurde.
  • Sie brauchen die Ereignisquelle nur auf den Computern zu registrieren, auf denen die SF-Software ausgeführt wird:
    • Wenn Sie die Software auf einer Workstation von einem Fileserver laden und auf der Workstation ausführen, genügt die Registrierung auf der Workstation; eine Registrierung auf dem Fileserver ist nicht notwendig.
    • Wenn Sie Terminalserver einsetzen, um SF-Software auszuführen, genügt die Registrierung auf den Terminalservern; eine Registrierung auf den Endgeräten (Workstations) ist nicht notwendig.
    • Registrieren Sie die Ereignisquelle aber ggf. auf Computern, auf denen z.B. Dienste, Webservices oder Websites von SF-Software ausgeführt wird, damit Laufzeitfehler dort vollständig protokolliert werden.

Wie werte ich die Ereignisprotokolle aus?

Wenn Benutzer unerwartete Fehlermeldungen von SF-Programmen erhalten, wird - bei registrierter Ereignisquelle ExceptionManagerPublishedException - ein Ereignisprotokoll-Eintrag im Windows-Anwendungs-Protokoll mit ausführlichen Diagnoseinformationen geschrieben. Möglicherweise werden Sie von uns aufgefordert, uns die genauen Meldungen solcher Ereignisse zu übermitteln. Gehen Sie dazu bitte wie folgt vor:

  1. Öffnen Sie das Windows-Anwendungs-Ereignisprotokoll des Computers, auf dem der Laufzeitfehler auftrat.
  2. Filtern Sie das aktuelle Protokoll nach der Quelle ExceptionManagerPublishedException und ggf. nach Datum und Uhrzeit, wann der Fehler aufgetreten war.
  3. Öffnen Sie den Ereignisprotokolleintrag, um den vollständigen Meldungstext zu sehen.
  4. Markieren Sie dessen Text vollständig (z.B. durch Druck auf Strg+A).
  5. Kopieren Sie den gesamten so markierten Meldungstext in die Windows Zwischenablage (z.B. durch Druck auf Strg+C).
  6. Fügen Sie den Meldungstext in eine E-Mail an uns ein oder lassen Sie ihn uns anderweitig zukommen.
Bitte senden Sie uns vorrangig den so gewonnenen vollständigen Meldungstext der Ereignismeldungen und höchstens ergänzend noch Bildschirmfotos. Auf diese Weise helfen Sie ganz enorm mit, die Ursachen für etwaige unerwartete Fehlermeldungen zu finden. Herzlichen Dank!