Una dintre principalele modalități de a diagnostica defecțiuni în funcționarea software-ului care rulează deja pe computerul utilizatorului este păstrarea jurnalelor de evenimente - jurnale. De obicei, acestea înregistrează informații despre lansări, precum și informații importante despre starea procesului și mediul sistemului în caz de eșec critic. Puteți crea jurnale atât prin propriile mijloace, cât și utilizând servicii speciale ale sistemelor de operare.
Este necesar
- - traducător din limbajul de programare folosit;
- - posibil un SDK Windows Platform;
- - posibil un pachet de dezvoltare pentru glibc.
Instrucțiuni
Pasul 1
Analizați condițiile de utilizare și completați cerințele pentru subsistemul dezvoltat, componenta sau biblioteca care va face jurnale. Răspundeți la întrebările despre ce platformă sau platforme ar trebui să funcționeze, care va fi API-ul său
Pasul 2
În conformitate cu caracteristicile de funcționare identificate și API-ul furnizat, creați un șablon pentru subsistemul de înregistrare. Începeți să-i implementați funcționalitatea.
Pasul 3
Cea mai simplă opțiune pentru înregistrare este crearea independentă a fișierelor într-o locație determinată de configurația aplicației și apoi scrierea acestora în orice format. Utilizați funcții de bibliotecă standard C (fopen, fclose, fwrite), obiecte de flux de bibliotecă standard C ++ (ofstream), clase de cadru utilizate (cum ar fi CFile, QFile) sau funcții API ale sistemului de operare (CreateFile, WriteFile pe Windows).
Pasul 4
Implementați jurnalizarea utilizând API-ul syslog pe sistemele de operare compatibile UNIX. Funcțiile API syslog sunt declarate în fișierul antet syslog.h. Conectați-l la locul potrivit în codul sursă al proiectului dvs.
Pasul 5
Conectați-vă la serviciul syslog utilizând apelul funcției openlog. Ca parametri, treceți-l un pointer către un șir care conține identificatorul aplicației sau componentei care va scrie, opțiuni și o mască de evenimente care vor fi transmise jurnalului. Folosiți apeluri către funcțiile syslog și vsyslog pentru a adăuga intrări în jurnal. Apelați funcția Closelog pentru a vă deconecta de la serviciu. Un exemplu simplu de cod syslog ar putea fi: openlog ("prefix", LOG_NDELAY | LOG_CONS | LOG_PID, LOG_LOCAL1); syslog (LOG_INFO, "% s", "Info"); syslog (LOG_NOTICE, "% s", "Notice")); closelog (); Este logic să vă conectați la syslog atunci când inițializați aplicația și să vă deconectați la închidere.
Pasul 6
Pe sistemele de operare Windows, utilizați API-ul EventLog pentru a adăuga intrări în jurnalele de sistem. Apelați RegisterEventSource pentru a obține descriptorul jurnalului pe mașina specificată. Utilizați acest mâner atunci când apelați funcția ReportEvent care scrie în jurnal. Când ați terminat, apelați DeregisterEventSource pentru a închide conexiunea și a elibera resursele alocate de RegisterEventSource. Cel mai simplu exemplu de lucru cu EventLog ar putea fi: HANDLE h =:: RegisterEventSource (NULL, "AnySource"); ASSERT (h! = NULL);:: ReportEvent (h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 3, 0, "Text1Text2Text3", NULL);:: DeregisterEventSource (h); Ca și în cazul syslog, este logic să apelați RegisterEventSource la început și DeregisterEventSource la închiderea aplicației.