Laden...

Windows Eventlog nutzen

Erstellt von radix vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.945 Views
R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren
Windows Eventlog nutzen

verwendetes Datenbanksystem: <Windows Eventlog>

Hallo Leute,

meine frage ist, ob ich daten in dem eventlog von windows speichern kann bzw eine neue evt-datei anlegen kann.
Und muss ich bei XP und Vista was beachten von der syntax her ?

gruß
radix

ich wars nicht !

239 Beiträge seit 2008
vor 15 Jahren

Daten ins Eventlog speichern ist kein Problem. Es gibt etwa die Klasse EventLog aus dem Namensraum System.Diagnostic, mit der du Einträge bearbeiten/erstellen kannst.

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

Danke für die schnelle Antwort, werde es mir mal ansehen

ich wars nicht !

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

So habe es geschafft meine Message in den Eventlog zu speichern, aber wie kann ich dort die Kategorie ändern? Wenn ich einen Eintrag mache, steht da immer Kategorie :
Keine

Gruß radix

ich wars nicht !

239 Beiträge seit 2008
vor 15 Jahren

Also es gibt mehrere Überladungen der WriteEntry()-Funktion, darunter mehrere die es erlauben eine Kategorie zu übergeben. Die sind aber anwendungsspezifisch, d.h. du musst sie selbst definieren.

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

es gibt ja zb den:

System.Diagnostics.EventLogEntryType.Error

um den typ festzulegen aber sowas find ich in keinsterweise für die category.
auch noch bei msdn, oder ich seh den wald vor lauter bäumen nicht 😄

ich wars nicht !

239 Beiträge seit 2008
vor 15 Jahren

Du verwechelst da was: Der EventLogTypeEntry ist der Eintragstyp, also Fehler, Information, Erfolg etc.

Unter der Kategorie kannst du deine Eventlog-Einträge selbst feiner gliedern, etwa unterschiedliche Fehlerklassen anfügen und je nach Fehlerklasse bestimmte Meldungen/Texte mit reinschreiben. Die Unterkategorie ist ja in der WriteEntry()-Methode auch ein einfacher Int16.

Wenn du dir mal deine Ereignisanzeige am PC ansieht für einen bestimmten Dienst (etwa SQL-Server), siehst auch das da nur Zahlen stehen, aber unterschiedliche für unterschiedliche Ereignisse.

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo radix,

um den typ festzulegen aber sowas find ich in keinsterweise für die category.

Um die Kategorie anzugeben, musst Du die Nicht-statischen Überladungen zu EventLog.WriteEntry verwenden, im speziellen dann z.b. folgende Überladung:
MSDN - EventLog.WriteEntry (spez. Überladung)
Im Beispiel der MSDN findest Du auch ein konkretes Beispiel (nach unten scrollen).

Aber die Kategorie ist eine positive Integer-Ganzzahl, ich weiß nicht, ob das an der Übersicht im Ereignisprotokoll eine Verbesserung bringt?

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

aso kla nu versteh ich hab auch nun den passenden link bei msdn gefunden:

WriteEntry()

danke für die anregung

@norman_timo
jow super danke werd mich da mal umsehen 😃)

Gruß Kevin

ich wars nicht !

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

eine frage sit dann doch noch offen, als kategorie kann ich ja nur Int-Werte angeben. Ich find im ganzen www keinen hinweis dafür das man auch strings anzeigen kann .

EventLog.WriteEntry (String, String, EventLogEntryType, Int32, Int16)

ich wars nicht !

239 Beiträge seit 2008
vor 15 Jahren

Kannst du auch nicht. Die Kategorie ist reserviert für Int16-Werte. Nur wenn du keine Kategorie angibst, erscheint im Eventlog der Eintrag "Keine", ansonsten sind das Zahlen.

Neulich im Computerkurs:
Mein Computer kennt Else nicht! 😁


[URL]XING-Profil[/URL]

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

hm ok dann muss ich mich, glaub ich, geschlagen geben 😄
hoch lebe windows .... 😃

danke euch für die antworten

Gruß radix

ich wars nicht !

L
770 Beiträge seit 2006
vor 15 Jahren

hm, also irgendwie muss es doch möglich sein, denn ich habe mir eben mein Eventlog angeschaut, und sind durchauchs string in der Kategorie vorhanden.

Also irgendwie muss es doch möglich sein?

lg Lion

4.506 Beiträge seit 2004
vor 15 Jahren

Hallo Lion1984,

interessant, hab ich noch nie gesehen. Ist das wirklich die Original-Ereignisanzeige von Windows?

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

L
770 Beiträge seit 2006
vor 15 Jahren

Hallo norman_timo,

Das is die unter Verwaltung, Ereignisanzeige, Anwendung.
Also nehme ich mal an ja, wie gesagt, ich habe das Eventlog Anwendung hergenommen, da ich, wenn, nur dieses nutze oder ein eigenes mache.

Ich vermute mal, wenn das in der Anwendung funktioniert, sollte es auch mit einem eigenen Eventlog funktionieren.

Lion

€dit:
ich habe eben noch auf einem anderen Computer nachgesehen, welcher nicht durch irgendwelchen Spielereilen eventuell "verschmutzt" wurde, hier handelt es sich um einen DB Server mit MS SQL 2005 auf Win Serv. 2003. Auch hier gibt es Kategorieren mit einer Bezeichnung (siehe Bild).

lg Lion

L
770 Beiträge seit 2006
vor 15 Jahren

lg Lion

U
1.688 Beiträge seit 2007
vor 15 Jahren


>

Es ist genauso wie da steht: Der Eventlog übersetzt Kategorien usw. anhand einer registrierten Message-Datei.

Interessant in der Ausgangsfrage war noch, ob man eigene evt's anlegen kann. Ja - man muss die aber in der Registry direkt eintragen. Eine API-gibt's dafür nicht. Der Ereignisdienst übernimmt die Information automatisch. Für's Löschen allerdings muss man neu booten.

L
770 Beiträge seit 2006
vor 15 Jahren

Es ist genauso wie da steht: Der Eventlog übersetzt Kategorien usw. anhand einer registrierten Message-Datei.

Und somit ist es möglich, eine Kategorie zu benennen, auf das es ja hinausläuft, zwar mit Umweg einer Datei, aber es funktioniert.

Ja - man muss die aber in der Registry direkt eintragen.

Hierfür gäbe es:

EventLog.CreateEventSource(string, string);

Damit erstelle ich mir immer, wenn ich es brauche, eigene EventLogs bzw. eine "eigene Rubrik". (wie System, Anwendungen und Sicherheit).

Lion

lg Lion

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

Ich denke mal die strings in den kategorien sind enums von windows festgelegt.

ich habe wieder mal eine frage und zwar hab ich nu mein script soweit : write , read , delete

nach dem ich meine evt-datei gelöscht hatte kann ich nun keine mehr erstellen mit dem befehl :

EventLog.CreateEventSource(string, string);

es kommt immer die meldung .... Die Quelle ist schon auf ihren PC vorhanden ... oder so obwohl alles von der source gelöscht ist.

und die einträge die ich machen will schreibt er in eine andere evt-datei hinein ?!


 try {
                if (!System.Diagnostics.EventLog.SourceExists("DebugMonitor")) {
                    //System.Diagnostics.EventLog.CreateEventSource("DebugMonitor", "Debug");

                    System.Diagnostics.EventSourceCreationData creationData = new System.Diagnostics.EventSourceCreationData("DebugMonitor", "Debug");

                    System.Diagnostics.EventLog.CreateEventSource(creationData);

                    //Console.WriteLine("CreatingEventSource");
                }
                for (int i = 0; i < messages.Count; i++) {
                    if (messages[i].ToString().IndexOf(":0:") > -1 || messages[i].ToString().IndexOf(":1:") > -1) {
                        System.Diagnostics.EventLog.WriteEntry("DebugMonitor", messages[i].ToString(), System.Diagnostics.EventLogEntryType.Information, 1, 2);
                    }
                    else if (messages[i].ToString().IndexOf(":3:") > -1) {
                        System.Diagnostics.EventLog.WriteEntry("DebugMonitor", messages[i].ToString(), System.Diagnostics.EventLogEntryType.Error, 1, 2);
                    }
                    else {
                        System.Diagnostics.EventLog.WriteEntry("DebugMonitor", messages[i].ToString(), System.Diagnostics.EventLogEntryType.Warning, 1, 2);
                    }
                }
            }
            catch (System.Exception ex) {
                System.Windows.Forms.MessageBox.Show(ex.Message, "Fehler", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);
            }

gruß radix

ich wars nicht !

R
radix Themenstarter:in
20 Beiträge seit 2009
vor 15 Jahren

niemand eine Antwort 😦 ?

ich wars nicht !

L
770 Beiträge seit 2006
vor 15 Jahren

Hallo,

ich habe die Erfahrung gemacht, dass Delete nicht immer gut funktioniert, wurde oben glaub ich schon erwähnt.

Schau doch mal in die reg ob dort deine Eventdatei noch vorhanden ist, wenn ja lösch sie mal von dort, anschließend müßte Create wieder gehen.

Lion

lg Lion