Page 1 of 1

Sistem event log

Posted: 09 Jan 2012, 19:11
by mesajflaviu
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 ?

Re: Sistem event log

Posted: 09 Jan 2012, 20:45
by Ovidiu Cucu
Un pic de cod, se poate?

Re: Sistem event log

Posted: 09 Jan 2012, 22:26
by cristianamarie
Probabil faci un ReportEvent cu o sursa neinregistrata, sau cu un message lipsa (trebuie sa fie intr-un format gen .mc parca)

Re: Sistem event log

Posted: 10 Jan 2012, 12:07
by Ovidiu Cucu
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 237 times


Vezi si

Re: Sistem event log

Posted: 10 Jan 2012, 14:09
by mesajflaviu
Este exact ce imi trebuia .. acum merge logu brici !! Multumesc !!

Re: Sistem event log

Posted: 10 Jan 2012, 21:32
by mesajflaviu
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 ....

Re: Sistem event log

Posted: 10 Jan 2012, 21:37
by mesajflaviu
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 ...

Re: Sistem event log

Posted: 11 Jan 2012, 09:57
by Ovidiu Cucu
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.

Re: Sistem event log

Posted: 11 Jan 2012, 14:24
by mesajflaviu
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.

Re: Sistem event log

Posted: 11 Jan 2012, 17:55
by Ovidiu Cucu
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.