In einem ASP NET-Projekt (C#) verwende ich den Namensraum System.Diagnostics, um Fehler, Warnungen und Informationen zu protokollieren. Unter Windows 7 sehe ich, dass das Protokoll, das ich für das Projekt eingestellt habe, unter "Applications and Services Logs" zu finden ist. Wie kann ich im Code festlegen, dass ein Ordner erstellt und unter "Applications and Services Logs[SOME FOLDER]" abgelegt wird? \Applications und Dienstprotokolle", zum Beispiel?
Antworten
Zu viele Anzeigen?Bei den im Abschnitt Anwendungs- und Dienstprotokoll gespeicherten Protokollen handelt es sich um die Protokolle von benutzerdefinierten Ereignisveröffentlichungen und nicht um einfache Windows-Ereignisprotokolle.
Aus diesem Artikel Technologieübersicht zum Lesen und Verwalten von Ereignisprotokollen :
Anwendungen und Dienstleistungen eine andere Kategorie von Ereignisprotokollen als den Windows-Protokollen. Die Anwendungen und Dienste-Protokolle speichern Ereignisse von einer einzelnen Anwendung oder Komponente und nicht als Ereignisse, die möglicherweise systemweite Auswirkungen haben. Sie haben eine Vielzahl von Ereignisanbieter definiert werden.
Daher müssen Sie einen benutzerdefinierten Event Publisher erstellen. Hier finden Sie einige Artikel mit weiteren Informationen:
Dies ist eine neue Funktion von .NET 3.5 und verfügbar in . Microsoft hat eine neue Bibliothek eingeführt, die nicht sehr benutzerfreundlich ist. Lesen Sie dazu aquí . Dort heißt es, wahrscheinlich veraltet, dass diese Klassen nur unter Windows Vista funktionieren. Ich würde jedoch die Vermutung wagen, dass sie unter Windows 7 und Server 2008 zugänglich sind.
Ich habe dort keinen Code gefunden, der erklärt, wie man eine neue Hierarchie erstellt, wie Sie es wollten, aber ich glaube, dass dies die allgemeine Richtung ist.
Bei der Erstellung Ihrer Event Source
geben Sie eine Log Name
. Er wird zum "Ordner" in der Ereignisanzeige.
EventLog.CreateEventSource("Source", "Log name");
EventLog.WriteMessage("Source", "Your message");
Beachten Sie, dass zum Erstellen einer Ereignisquelle zusätzliche Rechte auf dem Rechner erforderlich sein können. In einem ASP.Net-Kontext empfehle ich, eine Windows- oder Konsolenanwendung zu erstellen, die die Ereignisquelle erzeugt. Führen Sie sie einmal als Administrator aus.