Hallo zusammen,
ich bin gerade dabei einen Windows-Dienst zu schreiben. Nun würde ich gerne Meldungen in das Eventlog schreiben.
Ich hatte dabei die Idee, dass ich in einen eigenen "Bereich" schreibe.
Genauso wie es den Punkt Anwendungen, System, etc gibt, würde ich gerne einen eigenen Bereich (z.B.: "WindowsDienst") anlegen.
Ich habe es geschafft diesen Bereich anzulegen. Jedoch erscheinen alle Meldungen, die ich dort hineinschreibe auch unter dem Bereich Anwendung.
Was mache ich falsch?
hier mein Code:
if (!EventLog.SourceExists("iMSBatchservice"))
{
EventLog.CreateEventSource("iMSBatchservice", "iMS Batchservice");
}
log = new EventLog();
log.Source = "iMSBatchservice";
log.WriteEntry("iMS Batchservice started.", EventLogEntryType.SuccessAudit );
Der Bereich der entsteht heißt "iMS Batchservice", wie gewollt.
Vielen Dank für eure Hilfe!
Hallo Fabsen2102,
schreibst du vielleicht irgendwo noch wo anders ins eventlog?
ich kann bei deinem Code kein Problem erkennen so das er das machen sollte wozu er geschrieben wurde.
Viele Grüße
BlackCoin
Hi!
Nein, also nicht das ich wüsste. Ich bin etwas ratlos. Wenn ich folgendes ändere:
EventLog.DeleteEventSource("iMS Batch");
if (!EventLog.SourceExists("iMS Batch"))
{
EventLog.CreateEventSource("iMS Batch", "iMSBatchLog");
}
Dann wird zwar ein neuer "Ordner" "iMSBatchLog" angelegt, aber der neue Eintrag landet nur noch unter Anwendung.
Kann ich denn irgendwie global "aufräumen". Ich habe gesehen, dass unter
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog] alle "Ordner" abgebildet werden.
Allerdings ist das "EventMessageFile" immer das selbe. Nämlich aus dem .NET-Framework "EventLogMessages.dll".
So ganz verstehe ich den Aufbau der registry nicht.
Noch eine Idee?
Danke und Gruß
Fabian
So, ich weiß nicht genau warum, aber jetzt klappt es.
ich habe unter dem oben erwähnten registry-Eintrag alles gelöscht was von mir bzw dem programm war und mein Code sieht jetzt wie folgt aus:
if (!EventLog.SourceExists("iMS"))
{
EventLog.CreateEventSource("iMS", "iMSBatchLog");
}
log = new EventLog();
log.Source = "iMSBatchLog";
Jetzt schreibt er nur noch in iMSBatchLog.
Trotzdem Danke für die Mühen!
Fabian
Hmm komisch, dass das jetzt klappt
log.Source = "iMSBatchLog"
denn eigentlich müßte dort doch die Source 'iMS' angegeben werden
mfg
Ich habe dein erstes beispiel mal auf einer VM getestet,
und es funktioniert so, wie es funktionieren soll.
ich vermute mal das auf deinem System irgendetwas kaputt konfiguriert ist
Herzliche Grüße
BlackCoin
Ja, das mit dem "kaputt konfiguriert" habe ich mir auch schon gedacht. Deswegen auch die Frage mit "global aufräumen".
Jetzt weiß ich ja wie es gehen sollte 😃
Danke!