Nykyään useimmat sovellus- ja järjestelmäsovellukset tallentavat ajoittain tietoja työnsä prosessista, virheistä ja epäonnistumisista erityisissä lokeissa, joita kutsutaan lokeiksi. Useimmat yleiskäyttöiset käyttöjärjestelmät tarjoavat palveluja, joiden avulla voit kirjoittaa lokeja tavallisella ohjelmointirajapinnalla.
Välttämätön
- - C-kääntäjä;
- - Windows Platform SDK;
- - Kehitä paketti glibc: lle.
Ohjeet
Vaihe 1
Lisää tuki lokien kirjoittamiseen järjestelmälokiin sovelluksestasi, joka on suunniteltu toimimaan Windows-perheen käyttöjärjestelmissä.
Rekisteröi sovellus tapahtumalähteenä RegisterEventSource API -toiminnon avulla, merkinnän lisäämiseksi lokiin ReportEvent-funktio ja sulje RegisterEventSourcen palauttama kahva DeregisterEventSource-toiminnolla.
On järkevää kutsua RegisterEventSourcea sovelluksen alustuksen aikana ja tallentaa palautettu kuvaaja koko ajan, jotta lokin merkinnät voidaan sijoittaa ohjelman eri paikoista. Yksinkertaisin esimerkki Windows-lokiin kirjoittamisesta voi näyttää tältä:
HANDLE hLog = RegisterEventSource (NULL, "MyApplicationName");
jos (hLog! = NULL)
{
jos (ReportEvent (hLog, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, "Viestiteksti / 0", NULL))
{
// tapahtuma kirjautui onnistuneesti
}
Poista rekisteröintiEventSource (hLog);
}
Lisätietoja ReportEvent-toiminnon semantiikasta on MSDN: ssä osoitteessa https://msdn.microsoft.com/en-us/library/windows/desktop/aa363679%28v=vs.85%29.aspx. Lisäksi sinun on lisättävä tietoja sovelluksen suoritettavasta moduulista järjestelmärekisteriin ja lisättävä resursseja tietyssä muodossa itse moduuliin tai kolmannen osapuolen dynaamiseen kirjastoon. Lisätietoja tapahtumalokipalvelun rekisteriavaimista on osoitteessa
Vaihe 2
Kirjautuminen Linux-yhteensopiville käyttöjärjestelmille voidaan yleensä tehdä syslog-demonilla. Tällä palvelulla on sovellustason käyttöliittymä joukko toimintoja, joiden ilmoitukset sijoitetaan syslog.h-otsikkotiedostoon.
Luo yhteys syslog-palveluun openlog-toiminnolla sovelluksesta tai kirjastosta. Kutsu syslog- tai vsyslog-funktiot, jos haluat lisätä viestejä lokiin. Kun tapahtumien tallennus on päättynyt tai kun sovellus poistuu, sulje yhteys palveluun kutsumalla closelog-toiminto. Lisäksi voit määrittää asetukset sivuuttamaan puhelut, jotka lisäävät tapahtumatietueet tietyllä prioriteetilla käyttämällä setlogmask-toimintoa. Esimerkki viestien kirjoittamisesta lokiin voi näyttää tältä:
openlog ("MyApplication", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
syslog (LOG_NOTICE, "MyApplication käynnistetään PID: llä% d", getuid ());
syslog (LOG_INFO, "Tiedoteviesti!");
closelog ();
Lisätietoja syslog-sovellusliittymän toimintojen parametreista on libc-ohjeissa.
Vaihe 3
Kirjoita lokeja mielivaltaisiin tiedostoihin käyttämällä tapahtumien pysyvyysalijärjestelmän omaa toteutusta. Yksi yksinkertaisimmista ratkaisuista tähän ongelmaan on luoda useita toimintoja maailmanlaajuisesti, joista toinen avaa tietyn nimen sisältävän tiedoston add information -tilassa, toinen sulkee sen ja kolmas lisää sille välitetyn viestimerkkijonon parametrin tähän tiedostoon. Käsitteellisesti tämä ratkaisu muistuttaa Linuxin syslog-ohjelmointirajapintaa.
Käytä C-standardikirjaston fopen- ja fclose-toimintoja tiedoston avaamiseen ja sulkemiseen. Soita fwrite lisätäksesi tietoja tiedostoon. Voit myös käyttää alustakohtaisia toimintoja (esimerkiksi CreateFile Windowsissa) ja käytettyjen kehysten objektien menetelmiä, jotka kapseloivat tiedostojen käsittelyn toiminnallisuuden.