c logger är ett enkelt och effektivt loggningsbibliotek för C-språket . Det låter dig skriva loggmeddelanden till en fil eller till konsolen, med olika detaljnivåer och kontroll. I den här artikeln kommer vi att se vilka funktioner C logger erbjuder, hur du installerar den och använder den i dina C-projekt.
C logger funktioner
c logger är ett lättviktsbibliotek, som bara är 500 rader källkod. Den är kompatibel med C89-standarden och är gängsäker. Den erbjuder två typer av loggning:
- Konsolloggning, som visar loggmeddelanden i standard- eller felutgång.
- Logga till fil, som skriver loggmeddelanden till en textfil, med automatisk rotation baserat på filstorlek.
c logger låter dig också anpassa loggning med en konfigurationsfil, där du kan definiera meddelandeformatet, detaljnivån, namnet på loggfilen, den maximala filstorleken, etc.
Hur installerar man c logger?
För att installera c logger, ladda helt enkelt ner källkoden från GitHub-förvaret och kompilera den med din favorit C-kompilator. Till exempel, med gcc:
$ git klon https://github.com/yksz/c-logger.git $ cd c-logger $ gcc -c -o logger.o logger.c $ ar rcs libclogger.a logger.o
Detta kommer att skapa ett statiskt libclogger.a-arkiv som du kan länka till ditt C-program. Du måste också inkludera logger.h-huvudfilen i dina källfiler.
Hur använder man clogger?
För att använda c logger måste du först initiera biblioteket med logger_init
, ge det namnet på konfigurationsfilen eller NULL om du vill använda standardparametrarna. loggningsfunktionen för att skriva loggmeddelanden, skicka det en tagg, en nivå och ett meddelande .
Till exempel :
#include "logger.h" int main(void) { /* Initiera biblioteket med filen config.ini */ if (logger_init("config.ini") != 0) { fprintf(stderr, "Initialiseringsfel av c logger\n"); retur 1; } /* Skriv ett meddelande på INFO-nivå med taggen "main" */ logger("main", LOG_INFO, "Start of program"); /* Skriv ett ERROR-nivåmeddelande med taggen "main" */ logger("main", LOG_ERROR, "Fatal error"); /* Avsluta biblioteket */ logger_end(); returnera 0; }
Formatet på loggmeddelanden beror på vilken konfigurationsfil som används. Som standard har den formen:
datum-tid tag meddelande nivå
Till exempel :
2023-06-13 02:37:16 huvud INFO Start av program 2023-06-13 02:37:16 huvud FEL Allvarligt fel
Formatet kan ändras med hjälp av följande variabler i konfigurationsfilen:
- %d: datumet i formatet ÅÅÅÅ-MM-DD
- %t: tid i formatet TT:MM:SS
- %c: meddelandetaggen
- %l: meddelandenivå
- %m: meddelandet
- %n: en radbrytning
Om vi till exempel vill ha ett kortare format kan vi använda:
[formats] simple = "%t %c %l %m%n"
Vilka detaljnivåer finns tillgängliga?
c logger erbjuder fem detaljnivåer för loggmeddelanden:
- LOG_DEBUG: för felsökningsmeddelanden, användbart för utvecklare.
- LOG_INFO: för informativa meddelanden, användbart för användare.
- LOG_WARN: för varningsmeddelanden, användbart för att rapportera onormala men icke-kritiska situationer.
- LOG_ERROR: för felmeddelanden, användbart för att rapportera kritiska situationer som hindrar programmet från att fungera korrekt.
- LOG_FATAL: för fatala meddelanden, användbart för att rapportera oåterkalleliga situationer som kräver att programmet stoppas.
Du kan styra detaljnivån för loggmeddelanden med hjälp av log_level
i konfigurationsfilen. Om vi till exempel bara vill visa meddelanden på ERROR- och FATAL-nivå, kan vi använda:
[allmänt] log_level = 3
Nivåerna är numrerade 0 till 4, från mest detaljerade till minst detaljerade. Som standard är nivån 0, vilket visar alla meddelanden.
Hur styr man storleken på loggfilen?
c logger låter dig begränsa storleken på loggfilen genom att använda max_file_size
i konfigurationsfilen. Om vi till exempel vill att loggfilen inte ska överstiga 1 MB kan vi använda:
[allmänt] max_file_size = 1048576
Storleken uttrycks i byte. Som standard finns det ingen storleksgräns.
När loggfilen når maximal storlek skapar c logger en ny fil med ett numeriskt suffix. Om loggfilens namn till exempel är log.txt
, blir den första filen som skapas log.txt.1
, sedan log.txt.2
, etc. Det maximala antalet filer som skapas styrs av max_file_count
i konfigurationsfilen. Om vi till exempel vill behålla högst 10 loggfiler kan vi använda:
[allmänt] max_file_count = 10
Som standard finns det ingen begränsning på antalet filer.
Vanliga frågor
Vad är skillnaden mellan c logger och andra loggningsbibliotek som log4c eller nglogc?
c logger utmärker sig för sin enkelhet och lätthet. Den har inte lika många funktioner som andra, mer omfattande bibliotek, men den täcker de väsentliga loggningsbehoven. Den är också kompatibel med C89 och gängsäker standard.
Hur visar jag loggmeddelanden i ett annat format än text?
c logger stöder endast textformat för loggmeddelanden. Om du vill använda ett annat format, som JSON eller XML, måste du skriva din egen formateringsfunktion och anropa den i loggerfunktionen
.
Hur filtrerar man loggmeddelanden baserat på tagg eller nivå?
c logger erbjuder inte avancerad filtrering av loggmeddelanden. Du kan bara styra den övergripande meddelandenivån med log_level
i konfigurationsfilen. Om du vill filtrera meddelanden baserat på tagg eller nivå måste du skriva din egen filterfunktion och anropa den i loggerfunktionen
.
Hur skickar jag loggmeddelanden till en annan destination än konsolen eller filen?
c logger stöder endast konsol och fil som destinationer för loggmeddelanden. Om du vill skicka meddelandena till en annan destination, till exempel en databas eller webbtjänst, måste du skriva din egen skickafunktion och anropa den i loggerfunktionen
.
Hur felsöker man c-logger vid problem?
c logger tillhandahåller en logger_debug-
som visar information om bibliotekets interna tillstånd. Du kan ringa den när som helst för att kontrollera om c-loggern fungerar korrekt.
Slutsats
c logger är ett enkelt och effektivt loggningsbibliotek för språket C. Det låter dig skriva loggmeddelanden till en fil eller till konsolen, med olika detaljnivåer och kontroll. Det är lätt att installera och använda och erbjuder anpassning med en konfigurationsfil. c logger är baserad på principen om objektorienterad programmering, vilket gör att du kan skapa loggerobjekt med specifika egenskaper och metoder. c logger är en idealisk lösning för utvecklare som vill lägga till loggningsfunktioner till sina C-projekt utan krångel.