Schreiben in das Ereignisprotokoll in C # - muss ich EventLog.CreateEventSource verwenden, wenn ich in das Anwendungsprotokoll schreibe?

8

Wenn ich den folgenden Code zum Schreiben in das Anwendungsereignisprotokoll verwende, funktioniert alles:

%Vor%

Wenn ich den Code verwende, der von MSDN und allen anderen Blogs stammt, bekomme ich den Sicherheitsfehler (ich rate, weil CreateEventSource ihn auslöst).

%Vor%

Muss ich also überprüfen, ob die Quelle existiert, wenn ich nur in das Anwendungsprotokoll schreiben muss, das dort standardmäßig vorhanden ist?

Was ist der richtige Weg um in EventViewer zu schreiben?

    
sarsnake 31.10.2011, 23:26
quelle

6 Antworten

7

Die CreateEventSource-Methode erstellt eine neue Quelle im Ereignisprotokoll, mit der Sie das Protokoll Ihrer Anwendung in die eigene Gruppe der Anwendung schreiben können, anstatt in die generische Application -Gruppe zu schreiben.

Vielleicht erhalten Sie einen Fehler, weil der Benutzer, den Sie zum Erstellen der Ereignisquelle verwenden, nicht die Berechtigung zum Erstellen hat. Versuchen Sie, Ihr Programm als Administrator auszuführen, wenn Sie unter Vista / 7 OS arbeiten.

Die richtige Methode zum Anmelden des Ereignis-Viewers hängt von Ihren Anforderungen ab. Wenn Ihre Anwendung eine Menge Protokollierungsnachrichten generiert und Sie dieses Protokoll in einem anwendungsspezifischen Container gruppieren möchten, ist es möglicherweise besser, ein anwendungsspezifisches Protokollereignis zu erstellen Geben Sie das Protokoll ein und schreiben Sie es. Wenn Ihre Anwendung nur wenige Protokollnachrichten generiert und Sie diese nicht gruppieren müssen, können Sie die generische Ereignisquelle Application log verwenden ...

    
aleroot 31.10.2011, 23:39
quelle
2

Ich schlage vor, Sie versuchen log4net, falls Sie auch in andere Quellen schreiben wollen (SMTP, Datei, etc.)

Ссылка

Für Web-Apps:

Allgemeine Verwendung:

Ähnliche Lösung für winforms / windows service.

    
Luke Hutton 31.10.2011 23:37
quelle
2

Sie benötigen Administratorrechte, um eine Ereignisquelle zu erstellen. In der ersten verwenden Sie keine benutzerdefinierte Quelle.

    
Hogan 31.10.2011 23:39
quelle
1

Ein direkter WriteEntry wird zur Standard-Anwendungsquelle weitergeleitet. Die SourceExists und CreateEventSource sind, wenn Sie Ihre eigene benutzerdefinierte Quelle erstellen möchten, die Protokolleinträge in der Ereignisanzeige einfacher finden wird.

Und ja, Sie müssen Rechte haben, um eine Kundenereignisquelle zu erstellen, wie andere bereits erwähnt haben.

    
Scott Wylie 31.10.2011 23:43
quelle
0

Sie benötigen Administratorrechte, um Ihre Anwendung auszuführen.

Entweder können Sie Ihre Anwendung durch ausführen Gehen Sie in den Debug-Ordner Ihrer Anwendung und klicken Sie mit der rechten Maustaste auf Ihre .exe-Datei und führen Sie sie als Admin aus

oder

Sie führen Visual Studio als Administrator aus

    
user2983359 30.03.2017 08:37
quelle
-1

Sie müssen keine Ereignisquelle erstellen. Es kann ein großer Vorteil sein, wenn Ereignisse erzeugt werden, die sprachunabhängig sind oder die Substitutionen haben, aber es ist optional, zumindest für .NET-Programme (die BCL stellt eine Standard-Ereignisquelle bereit).

    
Ross Patterson 31.10.2011 23:39
quelle

Tags und Links