c logger er et enkelt og effektivt loggbibliotek for C-språket . Den lar deg skrive loggmeldinger til en fil eller til konsollen, med ulike detaljnivåer og kontroll. I denne artikkelen vil vi se hvilke funksjoner C logger tilbyr, hvordan du installerer den og bruker den i C-prosjektene dine.
C logger funksjoner
c logger er et lettvektsbibliotek, som bare består av 500 linjer med kildekode. Den er kompatibel med C89-standarden og er gjengesikker. Den tilbyr to typer logging:
- Konsolllogging, som viser loggmeldinger i standard- eller feilutdata.
- Logging til fil, som skriver loggmeldinger til en tekstfil, med automatisk rotasjon basert på filstørrelse.
c logger lar deg også tilpasse logging med en konfigurasjonsfil, der du kan definere meldingsformatet, detaljnivået, navnet på loggfilen, maksimal filstørrelse osv.
Hvordan installere c logger?
For å installere c logger, last ned kildekoden fra GitHub-depotet og kompiler den med din favoritt C-kompilator. For eksempel, med gcc:
$ git clone https://github.com/yksz/c-logger.git $ cd c-logger $ gcc -c -o logger.o logger.c $ ar rcs libclogger.a logger.o
Dette vil opprette et statisk libclogger.a-arkiv som du kan koble til C-programmet ditt. Du må også inkludere logger.h-headerfilen i kildefilene dine.
Hvordan bruke clogger?
For å bruke c logger, må du først initialisere biblioteket med logger_init-
, gi det navnet på konfigurasjonsfilen eller NULL hvis du vil bruke standardparameterne. loggerfunksjonen til å skrive loggmeldinger, gi den en tag, et nivå og en melding .
For eksempel :
#include "logger.h" int main(void) { /* Initialiser biblioteket med config.ini-filen */ if (logger_init("config.ini") != 0) { fprintf(stderr, "Initialiseringsfeil av c logger\n"); retur 1; } /* Skriv en melding på INFO-nivå med taggen "main" */ logger("main", LOG_INFO, "Start of program"); /* Skriv en ERROR-nivåmelding med taggen "main" */ logger("main", LOG_ERROR, "Fatal error"); /* Slutt bibliotek */ logger_end(); returner 0; }
Formatet på loggmeldinger avhenger av konfigurasjonsfilen som brukes. Som standard er det av formen:
meldingsnivå for dato- og klokkeslett
For eksempel :
2023-06-13 02:37:16 hovedINFO Start av program 2023-06-13 02:37:16 hovedFEIL Fatal feil
Formatet kan endres ved å bruke følgende variabler i konfigurasjonsfilen:
- %d: datoen i formatet ÅÅÅÅ-MM-DD
- %t: tid i TT:MM:SS-format
- %c: meldingskoden
- %l: meldingsnivå
- %m: meldingen
- %n: et linjeskift
For eksempel, hvis vi ønsker å ha et kortere format, kan vi bruke:
[formater] simple = "%t %c %l %m%n"
Hvilke detaljnivåer er tilgjengelige?
c logger tilbyr fem detaljnivåer for loggmeldinger:
- LOG_DEBUG: for feilsøkingsmeldinger, nyttig for utviklere.
- LOG_INFO: for informative meldinger, nyttig for brukere.
- LOG_WARN: for advarselsmeldinger, nyttig for å rapportere unormale, men ikke-kritiske situasjoner.
- LOG_ERROR: for feilmeldinger, nyttig for å rapportere kritiske situasjoner som hindrer programmet i å fungere skikkelig.
- LOG_FATAL: for fatale meldinger, nyttig for å rapportere uopprettelige situasjoner som krever stopp av programmet.
Du kan kontrollere detaljnivået til loggmeldinger ved å bruke log_level-
i konfigurasjonsfilen. For eksempel, hvis vi bare vil vise meldinger på ERROR- og FATAL-nivå, kan vi bruke:
[generelt] log_level = 3
Nivåene er nummerert fra 0 til 4, fra mest detaljert til minst detaljert. Som standard er nivået 0, som viser alle meldinger.
Hvordan kontrollere størrelsen på loggfilen?
c logger lar deg begrense størrelsen på loggfilen ved å bruke max_file_size
i konfigurasjonsfilen. Hvis vi for eksempel vil at loggfilen ikke skal overstige 1 MB, kan vi bruke:
[generelt] max_file_size = 1048576
Størrelsen er uttrykt i byte. Som standard er det ingen størrelsesgrense.
Når loggfilen når maksimal størrelse, oppretter c logger en ny fil med et numerisk suffiks. For eksempel, hvis loggfilnavnet er log.txt
, vil den første filen som opprettes være log.txt.1
, deretter log.txt.2
osv. Maksimalt antall filer som opprettes, kontrolleres av max_file_count
i konfigurasjonsfilen. For eksempel, hvis vi ønsker å beholde maksimalt 10 loggfiler, kan vi bruke:
[generelt] max_file_count = 10
Som standard er det ingen begrensning på antall filer.
Vanlige spørsmål
Hva er forskjellen mellom c logger og andre loggingsbiblioteker som log4c eller nglogc?
c logger skiller seg ut for sin enkelhet og letthet. Den har ikke så mange funksjoner som andre, mer omfattende biblioteker, men den dekker de essensielle loggingsbehovene. Den er også kompatibel med C89 og trådsikker standard.
Hvordan viser jeg loggmeldinger i et annet format enn tekst?
c logger støtter kun tekstformat for loggmeldinger. Hvis du vil bruke et annet format, for eksempel JSON eller XML, må du skrive din egen formateringsfunksjon og kalle den i loggerfunksjonen
.
Hvordan filtrere loggmeldinger basert på tag eller nivå?
c logger tilbyr ikke avansert filtrering av loggmeldinger. Du kan bare kontrollere det overordnede meldingsnivået med log_level-
i konfigurasjonsfilen. Hvis du vil filtrere meldinger basert på tag eller nivå, må du skrive din egen filterfunksjon og kalle den i loggerfunksjonen
.
Hvordan sender jeg loggmeldinger til en annen destinasjon enn konsollen eller filen?
c logger støtter kun konsoll og fil som destinasjoner for loggmeldinger. Hvis du vil sende meldingene til en annen destinasjon, for eksempel en database eller webtjeneste, må du skrive din egen sendefunksjon og kalle den i loggerfunksjonen
.
Hvordan feilsøke c logger i tilfelle problem?
c logger gir en logger_debug-
som viser informasjon om den interne tilstanden til biblioteket. Du kan ringe den når som helst for å sjekke om c logger fungerer som den skal.
Konklusjon
c logger er et enkelt og effektivt loggbibliotek for språket C. Det lar deg skrive loggmeldinger til en fil eller til konsollen, med ulike detaljnivåer og kontroll. Den er enkel å installere og bruke, og tilbyr tilpasning med en konfigurasjonsfil. c logger er basert på prinsippet om objektorientert programmering , som lar deg lage loggerobjekter med spesifikke egenskaper og metoder. c logger er en ideell løsning for utviklere som ønsker å legge til loggingsfunksjonalitet til C-prosjektene sine uten problemer.