Windows Ereignisanzeige Einträge generieren



  • Mechanics schrieb:

    MfG schrieb:

    Wie generiert ihr in c++ einträge in die Windowsereignisanzeige?

    Gar nicht, hab ich mit C++ noch nie gemacht. Da gibts aber ein Beispiel, das plausibel ausschaut:

    http://stackoverflow.com/questions/8559222/write-an-event-to-the-event-viewer

    jop das hatte ich auch schon gesehen 🙂 ... meinte ich mit ressourcen-datei-lösung 😃 ...

    gibt es dazu evt. noch einfachere möglichkeiten da ich eigentlich nur 1 meldung rausschreiben will/muss ?
    scheint mir etwas überdimensioniert mir da meine eigene .res und .mc zu compilieren mit dem winmessage-compiler...
    oder geht das ja auch unter windows gar nicht einfacher? 🙄 😮



  • edit:
    - aber ist ja eig. ein alltägliches problem... wenn man anwendungen für windows entwickelt... jedoch hatte ich bis jetzt immer eigene logs angelegt...

    - jetzt brauche ich jedoch die einträge in die ereignisanzeige und stehe vor einem problem das ich prinzipell nicht so aufwendig eingeschätzt hätte, bitte helft mir... 😃 wie löst ihr sowas unter windows? 😞



  • Gibt Commandline Tools dafür.

    Die Frage gab's auch fast 1:1 schon vor ein paar Monaten, damals hatte ich auch nen passenden Link rausgesucht und gepostet.

    Und nein, ist eigentlich kein alltägliches Problem, da ausser dem was alles mit Windows mitkommt nur sehr wenige Programme in das Windows Event Log loggen.



  • hustbaer schrieb:

    Gibt Commandline Tools dafür.

    Die Frage gab's auch fast 1:1 schon vor ein paar Monaten, damals hatte ich auch nen passenden Link rausgesucht und gepostet.

    jop ... aber das wäre ja dann nicht c++... ich möchte eigentlich nativen c++ code benutzen... 🙄 (außer es geht nicht anders)
    in reinem c++ gibt es nur die möglichkeit mit dem .res .mc .dll? 😮

    aha ich hatte aber vorher mal suche benutzt... 😕
    schau ich nochmal...

    hustbaer schrieb:

    Und nein, ist eigentlich kein alltägliches Problem, da ausser dem was alles mit Windows mitkommt nur sehr wenige Programme in das Windows Event Log loggen.

    wohin loggen dann windows-anwendungen normalerweise? 😮
    die ereignisanzeige ist doch auch das standart log unter windows oder? wenn jede anwendung ihr eigenes logfile hätte dann wäre das ja sowas von nicht nutzerfreundlich... weil wenn ich ein problem habe suche ich erstmal das log oder was? 😮
    zumal es auch zur weiter verarbeitung sinn macht in die ereignisanzeige zuloggen... da dann alle fehler zentral gesammelt werden... 🙄 ...

    sry sind vll "blöde" fragen aber in linux-system ist dies so angenehm gelöst...
    da kenne ich mich unter windows nicht gut genug mit aus... 🙄
    die meisten programme die ich benutze loggen in die aber auch in windowsereignisanzeige unter anwendungen ? 🙄



  • MfG schrieb:

    hustbaer schrieb:

    Gibt Commandline Tools dafür.

    Die Frage gab's auch fast 1:1 schon vor ein paar Monaten, damals hatte ich auch nen passenden Link rausgesucht und gepostet.

    jop ... aber das wäre ja dann nicht c++... ich möchte eigentlich nativen c++ code benutzen... 🙄 (außer es geht nicht anders)
    in reinem c++ gibt es nur die möglichkeit mit dem .res .mc .dll? 😮

    aha ich hatte aber vorher mal suche benutzt... 😕
    schau ich nochmal...

    Ich kenne in C++ keine Möglichkeit die ganz ohne Message-Catalog auskommt.
    Theoretisch könnte man nachgucken welche Catalog und Message ID von dem Commandline Utility verwendet werden, und diese dann einfach "misbrauchen".
    Dann würde man sich den eigenen Message-Catalog sparen. Wäre aber auch irgendwie ein Hack.

    Das .NET Framework bringt ebenfalls einen "Default" Message-Catalog mit, und bietet dann Funktionen an mit denen man ohne eigenen Message-Catalog Event Einträge speichern kann. Der dabei verwendete Message-Catalog ist aber eben Teil des .NET Framework, und nicht vorhanden wenn das .NET Framework nicht installiert ist.

    MfG schrieb:

    wohin loggen dann windows-anwendungen normalerweise? 😮
    die ereignisanzeige ist doch auch das stan**** log unter windows oder? wenn jede anwendung ihr eigenes logfile hätte dann wäre das ja sowas von nicht nutzerfreundlich... weil wenn ich ein problem habe suche ich erstmal das log oder was? 😮
    zumal es auch zur weiter verarbeitung sinn macht in die ereignisanzeige zuloggen... da dann alle fehler zentral gesammelt werden... 🙄 ...

    Uff. Vielleicht hab ich da auch ein falsches Bild, aber mir wäre nicht aufgefallen dass besonders viele Windows Anwendungen ins Event Log schreiben.
    Und speziell die meisten Server schreiben einfach eigene Logfiles. Da würde ich auch gar keine Einträge im Event Log haben wollen - würde ja bloss alles zumüllen.

    MfG schrieb:

    sry sind vll "blöde" fragen aber in linux-system ist dies so angenehm gelöst...

    Also ich kenn das von Linux eigentlich nur so dass jedes Programm sein eigenes Süppchen kocht was Logging angeht. Gibt's da echt nen Standard? Bzw. irgendwas was man als "Lösung" bezeichnen könnte (im Gegensatz zur "nicht Lösung" 'jedes Programm macht was es will')?



  • Ich kenne auch kaum Programme, die ins Event Log schreiben. Ich finde das Event Log an sich auch völlig unpraktisch. Allein schon, weil die GUI so langsam ist. Textdateien find ich praktischer, da kann man auch einfach suchen und es gibt genug Viewer dafür.



  • Ich kenne in C++ keine Möglichkeit die ganz ohne Message-Catalog auskommt.
    Theoretisch könnte man nachgucken welche Catalog und Message ID von dem Commandline Utility verwendet werden, und diese dann einfach "misbrauchen".
    Dann würde man sich den eigenen Message-Catalog sparen. Wäre aber auch irgendwie ein Hack.

    - gute idee ... da schau ich mal vll geht das auch vom aufwand noch... 🙂
    - weißt du ob da ggf. probleme entstehen können? ich kenn mich da wie gesagt nicht so gut aus mit windows

    Das .NET Framework bringt ebenfalls einen "Default" Message-Catalog mit, und bietet dann Funktionen an mit denen man ohne eigenen Message-Catalog Event Einträge speichern kann. Der dabei verwendete Message-Catalog ist aber eben Teil des .NET Framework, und nicht vorhanden wenn das .NET Framework nicht installiert ist.

    - .net möchte ich nicht nutzen... 🙄 , hatte das auch schon bei msdn gesehen, dachte es gibt so etwas vergleichbares evt. auch in c++
    - aber anscheinend ehr nicht... 🙂

    hustbaer schrieb:

    Also ich kenn das von Linux eigentlich nur so dass jedes Programm sein eigenes Süppchen kocht was Logging angeht. Gibt's da echt nen Standard? Bzw. irgendwas was man als "Lösung" bezeichnen könnte (im Gegensatz zur "nicht Lösung" 'jedes Programm macht was es will')?

    - bei linux gibts ein verzeichniss da sind alle logs drinn... 🙂
    - errorlog, localmessages etc... (aber als textdateien...)

    - nat. kann man immer sein eigenes log anlegen...
    - aber eigentlich sind diese logs schon dafür da um zentral an einem ort zu loggen, ansonsten durchsucht der anwender ja immer das komplette dateisystem ob i.wo eine log.txt vorhanden ist, wenn es überhaupt eine gibt, sollte ein fehler auftreten, das finde ich nicht schön und möchte ich auch niemandem antun der meine software nutzen möchte... (ich kenne auch viele programme die loggen gar nicht )... 😃

    - mir geht es ja eigentlich auch wirklich nur um die "fehlermeldungen" ...
    - also 1 meldung pro fehler, sollte einer auftreten... also da müllt eher nix zu bei mir... 🙄
    - zumal sich das glaube ich auch von selbst wieder leert wenn es zu voll ist, oder irre ich mich da? (dachte ich hätte sowas gelesen, bin mir aber nicht ganz sicher) 🙄

    Mechanics schrieb:

    Ich kenne auch kaum Programme, die ins Event Log schreiben. Ich finde das Event Log an sich auch völlig unpraktisch. Allein schon, weil die GUI so langsam ist. Textdateien find ich praktischer, da kann man auch einfach suchen und es gibt genug Viewer dafür.

    - jop ist schon richtig... in linux z.B. liegen diese logs eigentlich auch als textdateien vor... mich hat es auch gewundert warum windows in diesem punkt so kompliziert zu sein scheint... 😕 (its not a bug, its a feature 😃 )

    - nur mir gehte s durmm das wenn mein system abstürzt dann will ich nicht jedes log durchsuchen wo denn ein fehler aufgetreten ist... (nachdem ich erstmal log-dateien gesucht ahbe 😃 , die ja dann verstreut im ganzen system liegen..)
    - sondern ich mache das ereignislog auf und schaue bei "kritischen Fehlern" und sehe aha... anwendung xyz.exe hatte eienen fehler... (ansonsten müsste ich ja erstmal schauen von "wo" der fehler kam...)



  • MfG schrieb:

    - sondern ich mache das ereignislog auf und schaue bei "kritischen Fehlern" und sehe aha... anwendung xyz.exe hatte eienen fehler... (ansonsten müsste ich ja erstmal schauen von "wo" der fehler kam...)

    Diese Einträge werden IIRC von Windows selbst geschrieben.

    Und wenn das ganze System abkackt (BSOD), dann hat das auslösende Programm auch keine Chance mehr irgendwas zu loggen.
    Windows schreibt in so einem Fall dann aber nen Crashdump und auch nen schönen Event-Log eintrag.

    Muss man sich netterweise nicht drum kümmern.



  • hustbaer schrieb:

    MfG schrieb:

    - sondern ich mache das ereignislog auf und schaue bei "kritischen Fehlern" und sehe aha... anwendung xyz.exe hatte eienen fehler... (ansonsten müsste ich ja erstmal schauen von "wo" der fehler kam...)

    Diese Einträge werden IIRC von Windows selbst geschrieben.

    Und wenn das ganze System abkackt (BSOD), dann hat das auslösende Programm auch keine Chance mehr irgendwas zu loggen.
    Windows schreibt in so einem Fall dann aber nen Crashdump und auch nen schönen Event-Log eintrag.

    Muss man sich netterweise nicht drum kümmern.

    ich wusste das das kommt 🙂 , ist schon richtig... 🙂
    na ja aber diese nachrichten sind meiner meinung nach eher kriptisch und für den normalen nutzer weniger helfend bei einem problem...

    und das "auslösende" programm kann schon loggen, nur nicht nach dem absturz logischer weise...
    ist aber auch nicht mein ziel in diesem fall... (ich kann aber sagen ... "falsche parameter ..." dann stürzt das system ab... in diesem fall sehe ich ok... "falscher parameter etc..." und kann dann schlussfolgern deswegen ist wahrscheinlich das system abgestürzt... nat. ist das auch nicht perfekt ... 🙄 aber man kann schnell die fehlerursache eingrenzen, wenn nicht sogar direkt erkennen)...

    bei mir sind diese "schönen" einträge meist wenig aussagend...
    zumal es hier für den anwender schwer wird überhaupt einen fehler rauszulesen wenn sich dieser überhaupt die arbeit macht... 🙄

    wahrscheinlich halt auch geschmackssache... ich möchte mein errorlogging halt so umsetzten... 😃
    zumal es auch noch weitere gründe gibt die aber nur speziell, bei meiner anwendung, mit der weiteren verarbeitung der fehlermeldungen im ereignislog zusammenhängen... 😉

    hat da nun jemand noch vorschläge wie ich das machen kann? 😃



  • Mechanics schrieb:

    Textdateien find ich praktischer, da kann man auch einfach suchen und es gibt genug Viewer dafür.

    Als Trigger für die Aufgabenplanung eignet sich eine Textdatei aber eher weniger, meine ich. 🙂



  • hustbaer schrieb:

    Da würde ich auch gar keine Einträge im Event Log haben wollen - würde ja bloss alles zumüllen.

    Ich fürchte, ich verstehe das nicht so ganz. Die maximale Größe des Logs kannst Du einfach festlegen (oder es auch gänzlich deaktivieren), da müllt doch nichts zu. Oder wie ist das gemeint?



  • MfG schrieb:

    ist aber auch nicht mein ziel in diesem fall... (ich kann aber sagen ... "falsche parameter ..." dann stürzt das system ab... in diesem fall sehe ich ok... "falscher parameter etc..." und kann dann schlussfolgern deswegen ist wahrscheinlich das system abgestürzt...

    Wenn ich in meiner Anwendung feststelle, dass irgendwo falsche Parameter ankommen, dann kann ich meine Anwendung immer noch ganz gepflegt beenden, wenn das denn notwendig ist, deshalb lasse ich doch nicht das System abstürzen?!



  • Mox schrieb:

    Mechanics schrieb:

    Textdateien find ich praktischer, da kann man auch einfach suchen und es gibt genug Viewer dafür.

    Als Trigger für die Aufgabenplanung eignet sich eine Textdatei aber eher weniger, meine ich. 🙂

    jop! 🙂

    Mox schrieb:

    hustbaer schrieb:

    Da würde ich auch gar keine Einträge im Event Log haben wollen - würde ja bloss alles zumüllen.

    Ich fürchte, ich verstehe das nicht so ganz. Die maximale Größe des Logs kannst Du einfach festlegen (oder es auch gänzlich deaktivieren), da müllt doch nichts zu. Oder wie ist das gemeint?

    hatte ich vorhin auch erwähnt, ich war mir nur nicht sicher, danke 🙂 !

    Belli schrieb:

    MfG schrieb:

    ist aber auch nicht mein ziel in diesem fall... (ich kann aber sagen ... "falsche parameter ..." dann stürzt das system ab... in diesem fall sehe ich ok... "falscher parameter etc..." und kann dann schlussfolgern deswegen ist wahrscheinlich das system abgestürzt...

    Wenn ich in meiner Anwendung feststelle, dass irgendwo falsche Parameter ankommen, dann kann ich meine Anwendung immer noch ganz gepflegt beenden, wenn das denn notwendig ist, deshalb lasse ich doch nicht das System abstürzen?!

    mach ich nicht... war jetzt nen blödes beispiel von mir, das mein vorgehen bzw. anliegen vll nicht ganz verdeutlicht...
    aber zitiere bitte nicht nur den einen satz.. ich hab es schon oben erklärt ich will die fehlermeldungen dann auch noch weiterverarbeiten mit anderen anwendungen... dort ist es nun mal von vorteil wenn die meldungen in der ereignisanzeige sind!! 🙄

    also hat jetzt noch einer ideen oder lösungshinweise für mich? 🙄



  • MfG schrieb:

    also hat jetzt noch einer ideen oder lösungshinweise für mich? 🙄

    Naja, mach es einfach wie dokumentiert: Message File bauen, Instrumetation Manifest bauen und durch den Message Compiler jagen. Das RC File musst Du dann natürlich ebenfalls compilieren und das Resultat mit einbauen. In Deiner Anwendung brauchst Du jetzt nur noch die Funktionen aus dem entstandenen Header-File aufzurufen. Siehe: Windows Event Log

    Aber hattest Du das nicht alles schon selbst herausgefunden?



  • Mox schrieb:

    MfG schrieb:

    also hat jetzt noch einer ideen oder lösungshinweise für mich? 🙄

    Naja, mach es einfach wie dokumentiert: Message File bauen, Instrumetation Manifest bauen und durch den Message Compiler jagen. Das RC File musst Du dann natürlich ebenfalls compilieren und das Resultat mit einbauen. In Deiner Anwendung brauchst Du jetzt nur noch die Funktionen aus dem entstandenen Header-File aufzurufen. Siehe: Windows Event Log

    Aber hattest Du das nicht alles schon selbst herausgefunden?

    na ja doch, wurde auch schon mehrmals genannt...
    dachte nur an was einfacheres 😃 ...

    hab es gestern mal so versucht...
    die meldung stand auch im ereignislog...
    jedoch steht vorher noch "...die Meldung kann nicht in der RessourcenTabelle gefunden werden..." und dann " weitere Informationen: MEINE MELDUNG "
    also "MEINE MELDUNG" ist schon da... ?

    weißt du was ich falsch gemacht hab? 😕



  • ich hab es testweise genau so gemacht wie hier beschrieben:

    http://stackoverflow.com/questions/8559222/write-an-event-to-the-event-viewer

    dabei tritt dann oben beschriebener fehler auf... 😞



  • MfG schrieb:

    weißt du was ich falsch gemacht hab? 😕

    Dir fehlt zu einem gegebenen Identifier der zugehörige Eintrag in Deiner Message-Table. Schau Dir Deine Anwendung doch einfach mal mit dem Ressourcen-Editor an. Ist hier überhaupt eine Message-Table vorhanden?



  • Mox schrieb:

    MfG schrieb:

    weißt du was ich falsch gemacht hab? 😕

    Dir fehlt zu einem gegebenen Identifier der zugehörige Eintrag in Deiner Message-Table. Schau Dir Deine Anwendung doch einfach mal mit dem Ressourcen-Editor an. Ist hier überhaupt eine Message-Table vorhanden?

    ok danke für den hinweis 🙂 ... werde ich dann mal machen 🙂 ...

    jop message-tabelle hab ich... stand in der fehlermeldung.. hab den pc gerade nicht zur hand sonst würde ich die meldung mal posten...!


Anmelden zum Antworten