In unserer Anwendung gibt es bestimmte Umstände, bei denen nicht schwerwiegende Fehler auftreten und die Anwendung wiederhergestellt wird.Ist es akzeptabel, in die Application Event Source zu schreiben?
Ein Beispiel dafür, dass einige importierbare Elemente nicht korrekt identifiziert werden, wenn diese Elemente in eine Auswahlliste eingefügt werden. Die Fehler führen nicht zum Absturz der App, aber ein Benutzer wird darauf hingewiesen, dass einige der Elemente nicht geladen werden konnten.
In diesem Fall wird der Fehler im Anwendungsereignisprotokoll als Warnung protokolliert. Es handelt sich um einen nicht schwerwiegenden Fehler, bei dem die App wiederhergestellt wird. Wenn Sie jedoch im Ereignisprotokoll protokollieren, können wir den ursprünglichen Fehler ggf. anzeigen.
Unser Problem ist, dass die Software mit einem Power User-Konto installiert werden muss. Da wir kein Administratorkonto sind, können wir keine benutzerdefinierten Ereignisquellen für die Anwendung erstellen.
Ziel ist es, die Fehler stattdessen in die Ereignisquelle "Application" zu schreiben (die bereits im Anwendungsereignisprotokoll vorhanden ist). Dies führt jedoch dazu, dass auch Text ähnlich dem folgenden enthalten ist.
Die Beschreibung für die Ereignis-ID 0 aus der Quellanwendung wurde nicht gefunden. Entweder ist die Komponente, die dieses Ereignis auslöst, nicht auf Ihrem lokalen Computer installiert oder die Installation ist beschädigt. Sie können die Komponente auf dem lokalen Computer installieren oder reparieren.
Dies ist, weil die EventID 0 ist, wenn wir es schreiben. Dieser Ansatz wird die Arbeit erledigen, aber gibt es einen besseren Weg? Gibt es eine Nicht-Administrator-Möglichkeit, die EventID für die Anwendungsereignisquelle anzugeben, um anzugeben, dass sie aus unserer App stammt?
Ich habe etwas gelesen: die EventID kombiniert mit der Event Source identifiziert, welche Art von Ereignis auftritt. Kurz gesagt: Ich habe nichts gegen den Warnfehler, aber ich sollte nicht eine Quelle verwenden, die ich nicht erstellt habe. Ich bin nicht in der Lage, eine (keine Admin-Installation usw.) zu erstellen, also hoffe ich, eine Ereignisquelle zu finden, die für diese Art von Ereignissen verfügbar ist, oder einen anderen Mechanismus für die Protokollierung zu verwenden. Gedanken? – MoSlo
Wenn Sie .NET 4.5 verwenden, können Sie mithilfe der EventSource-Klasse (http://msdn.microsoft.com/en-us/library/system.diagnostics.tracing.eventsource.aspx) Ereignisse in ETW schreiben, ohne dass eine Registrierung erforderlich ist . Der Nachteil ist, dass die Ereignisse nicht im Ereignisprotokoll gespeichert werden. Wenn Sie also nicht aktiv auf diese Ereignisse warten, erhalten Sie diese nicht. – fsimonazzi