Sistem event log

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Sistem event log

Post by mesajflaviu » 09 Jan 2012, 19:11

Incerc de ceva vreme sa inregistrez ceva in log-ul sistemului, dar, pe langa mesajul meu din log, mai am o gramada de text balast :

Code: Select all

The description for Event ID 1 from source TestEventLog cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event: 

My custom warning text
the message resource is present but the message is not found in the string/message table

iar mesajul meu este doar 'My custom warning' .... m-am uitat un pic pe net si nu am gasit vreo solutie mai generala ca sa spun asa ... am gasit undeva scris ca trebuie inregistrat in sistem un dll cu nume indentic cu cel al aplicatiei, aici am gasit ceva interesant, dar eu as vrea ceva mai apropiat de VC6 ... ati mai intampinat problema asta ?



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Sistem event log

Post by Ovidiu Cucu » 09 Jan 2012, 20:45

Un pic de cod, se poate?

User avatar
cristianamarie
Membru++
Membru++
Posts: 480
Joined: 12 Mar 2009, 18:47
Judet: Iaşi
Location: Iasi

Re: Sistem event log

Post by cristianamarie » 09 Jan 2012, 22:26

Probabil faci un ReportEvent cu o sursa neinregistrata, sau cu un message lipsa (trebuie sa fie intr-un format gen .mc parca)
Nuclear launch detected

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Sistem event log

Post by Ovidiu Cucu » 10 Jan 2012, 12:07

Pot doar sa-mi inchipui ce-ai facut si unde ai pus "textul" si de aia am cerut mai devreme "putin cod".
In eventlog-uri, nu se scrie textul propriuzis ci doar un ID de mesaj.
Textele se gasesc in resursele unui dll sau exe.

Cum faci:
  • Adaugi la proiect un fisier text, sa-i zicem "MyMessages.mc" si il completezi cu manuta fosind specificatiile din MSDN.
  • Ca sa nu-l compilezi din linia de comanda, pui comanda "MC MyMessages.mc" la pre-build/link step.
  • Mai departe are grija VS-ul: genereaza o resursa de mesaje pe care o compileaza si link-editeaza; in plus genereaza si un header cu acelasi nume, "MyMessages.h", pe care poti sa-l include oriunde ai nevoie.

Acuma trebuie ca sa se stie unde este acel fisier cu mesaje
  • De duci cu regedit-ul la
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\
    si inserezi o noua cheie sa-i zicem "MyApplication" (aceasta va fi "event source").
  • Adaugi o noua valoare "EventMessageFile" tip REG_SZ sau REG_EXPAND_SZ si pui calea catre fisierul cu mesaje, sa zicem
    C:\Projects\EventLogging_demo\MyMessages\MyMessages.dll
Mai sunt multe de povestit insa pe scurt, cam asta-i.

Am atasat un mic demo cu un DLL resource-only.
EventLogging_demo.zip
(14.38 KiB) Downloaded 233 times


Vezi si

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Sistem event log

Post by mesajflaviu » 10 Jan 2012, 14:09

Este exact ce imi trebuia .. acum merge logu brici !! Multumesc !!

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Sistem event log

Post by mesajflaviu » 10 Jan 2012, 21:32

Am incercat sa reproduc proiectul in care se genereaza message file ... dar nu reusesc sa il compilez :

Code: Select all

Messages.mc(0) : error : unable to open input file
MC: Unable to open Messages.mc for input
Error executing c:\windows\system32\cmd.exe.

EventMessage.dll - 1 error(s), 0 warning(s)
am atasat si "opera de arta" .... o fi vreo setare, nu stiu, am incercat tot felul de lucruri ... degeaba ....
Attachments
EventMessage.zip
(63.95 KiB) Downloaded 210 times
Last edited by mesajflaviu on 10 Jan 2012, 23:28, edited 1 time in total.

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Sistem event log

Post by mesajflaviu » 10 Jan 2012, 21:37

De fapt, nu reusesc sa generez acel MSG00001.bin ... si am citit pe net ca se genereaza daca totul e OK. Nu inteleg cum il genereaza acest fisier proiectul model ...

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Sistem event log

Post by Ovidiu Cucu » 11 Jan 2012, 09:57

Pai, pune si tu numele de acord.
La linia de comanda ai scapat un 's' in plus. De asemenea, fisierul .RC din proiect sa aiba acelasi nume cu fisierul .MC.

Observatii suplimentare:
- nu neglija Severity si Facility; au si ele rostul lor.
- nu strica sa definesti categorii; astea vor permite o filtrare usoara a mesajlor.
- pentru un DLL resource-only nu are rost sa faci un proiect MFC DLL; un simplu Win32 DLL e suficient.

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Sistem event log

Post by mesajflaviu » 11 Jan 2012, 14:24

Dupa lupte seculare, am priceput cum sta treaba (sau asa cred eu) ... se pare ca fisierul resursa dll trebuie doar sa existe in folderul cu executabilul ca eventlog-ul sa il arate cum trebuie ... cand nu mai exista, e plin de balast pe acolo.

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Sistem event log

Post by Ovidiu Cucu » 11 Jan 2012, 17:55

mesajflaviu wrote:Dupa lupte seculare, am priceput cum sta treaba (sau asa cred eu) ... se pare ca fisierul resursa dll trebuie doar sa existe in folderul cu executabilul ca eventlog-ul sa il arate cum trebuie ... cand nu mai exista, e plin de balast pe acolo.
Nu prea inteleg ce vrei sa spui.
Daca executabilul n-are dependente fata de DLL (ceea ce in cazul nostru n-ar avea rost), poti sa pui DLL-ul si-n folderul Baba-Safta. :)
Totul e ca sa fie corect path-ul in "EventMessageFile" asa cum spuneam cu vreo doua posturi mai devreme.

Vezi ca am pus cum se poate face un DLL pentru mesaje, pas cu pas si poza cu poza, aici: http://www.codexpert.ro/forum/viewtopic.php?f=33&t=1967.

Post Reply