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 !
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]
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 !
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]
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 !
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]
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!”
aso kla nu versteh ich hab auch nun den passenden link bei msdn gefunden:
danke für die anregung
@norman_timo
jow super danke werd mich da mal umsehen 😃)
Gruß Kevin
ich wars nicht !
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 !
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]
hm ok dann muss ich mich, glaub ich, geschlagen geben 😄
hoch lebe windows .... 😃
danke euch für die antworten
Gruß radix
ich wars nicht !
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
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!”
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
Eventuell wäre das hier interessant:
lg Lion
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.
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
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 !
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