Avui en dia, la majoria de les aplicacions d’aplicacions i sistemes desen periòdicament informació sobre el procés del seu treball, els errors i els errors en registres especials anomenats registres. La majoria dels sistemes operatius d’ús general proporcionen serveis que permeten escriure registres mitjançant una interfície de programació estàndard.
Necessari
- - compilador C;
- - SDK de la plataforma Windows;
- - Desenvolupeu un paquet per a glibc.
Instruccions
Pas 1
Afegiu suport per escriure registres al registre del sistema des de l'aplicació dissenyada per funcionar amb sistemes operatius de la família Windows.
Utilitzeu la funció API RegisterEventSource per registrar l'aplicació com a font d'esdeveniments, la funció ReportEvent per afegir una entrada al registre i la funció DeregisterEventSource per tancar el controlador retornat per RegisterEventSource.
Té sentit trucar a RegisterEventSource durant la inicialització de l’aplicació i desar el descriptor retornat tot el temps, de manera que les entrades del registre es puguin col·locar des de diferents llocs del programa. L'exemple més senzill d'escriure al registre de Windows pot ser així:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
if (hLog! = NULL)
{
if (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Text del missatge / 0", NULL))
{
// l'esdeveniment s'ha registrat correctament
}
DeregisterEventSource (hLog);
}
Podeu trobar més detalls sobre la semàntica de la funció ReportEvent a MSDN a https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. A més, heu de posar algunes dades sobre el mòdul executable de l'aplicació al registre del sistema i afegir recursos en un format específic al mòdul mateix o a una biblioteca dinàmica de tercers. Per obtenir més informació sobre les claus de registre del servei de registre d'esdeveniments, consulteu
Pas 2
El registre en sistemes operatius compatibles amb Linux normalment es pot fer mitjançant el dimoni syslog. Aquest servei té una interfície a nivell d’aplicació en forma de conjunt de funcions, les declaracions de les quals es col·loquen al fitxer de capçalera syslog.h.
Utilitzeu la funció openlog per crear una connexió al servei syslog des d’una aplicació o biblioteca. Truqueu a les funcions syslog o vsyslog per posar missatges al registre. Després de finalitzar la gravació d'esdeveniments o quan surt l'aplicació, tanqueu la connexió al servei trucant a la funció closelog. A més, podeu configurar la configuració per ignorar les trucades que afegeixen registres d'esdeveniments amb una prioritat específica mitjançant la funció setlogmask. Un exemple d'escriptura de missatges al registre pot ser així:
openlog ("La meva aplicació", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "La meva aplicació s'inicia amb PID% d", getuid ());
syslog (LOG_INFO, "Missatge d'informació!");
closelog ();
Per obtenir més informació sobre els paràmetres de les funcions de l'API syslog, consulteu la documentació d'informació libc.
Pas 3
Escriviu registres a fitxers arbitraris mitjançant la vostra pròpia implementació del subsistema de persistència d'esdeveniments. Una de les solucions més senzilles a aquest problema és crear diverses funcions a l’abast global, una de les quals obre un fitxer amb un nom específic al mode Afegeix informació, la segona el tanca i el tercer li afegeix una cadena de missatges com a un paràmetre d’aquest fitxer. Conceptualment, aquesta solució s’assembla a la interfície de programació syslog a Linux.
Utilitzeu les funcions fopen i fclose de la biblioteca estàndard C per obrir i tancar un fitxer, respectivament. Truqueu a fwrite per afegir informació al fitxer. També podeu utilitzar funcions específiques de la plataforma (per exemple, CreateFile sota Windows) i mètodes d'objectes dels frameworks utilitzats que encapsulen la funcionalitat de treballar amb fitxers.