C:
Logging
Hvordan:
I C kan logging oppnås med grunnleggende filoperasjoner eller ved å bruke mer sofistikerte biblioteker. For enkelhets skyld, starter vi med standard I/U-biblioteket. Følgende kodeeksempler viser grunnleggende implementeringer av logging.
For å logge enkle meldinger:
#include <stdio.h>
int main() {
FILE *logFile;
logFile = fopen("application.log", "a"); // Åpne loggfila i tilleggsmodus
if (logFile == NULL) {
perror("Feil ved åpning av loggfil.");
return -1;
}
fprintf(logFile, "Starter applikasjon.\n");
// Logikken i applikasjonen din her
fprintf(logFile, "Applikasjonen avsluttet vellykket.\n");
fclose(logFile);
return 0;
}
Utdata i application.log
:
Starter applikasjon.
Applikasjonen avsluttet vellykket.
For å inkludere mer detaljerte logger med tidsstempel og loggnivå:
#include <stdio.h>
#include <time.h>
void logMessage(FILE *logFile, const char* level, const char* message) {
time_t now;
time(&now);
char* datetime = ctime(&now);
datetime[strlen(datetime)-1] = '\0'; // Fjern linjeskifttegnet
fprintf(logFile, "[%s] %s - %s\n", datetime, level, message);
}
int main() {
FILE *logFile;
logFile = fopen("detailed.log", "a");
if (logFile == NULL) {
perror("Feil ved åpning av loggfil.");
return -1;
}
logMessage(logFile, "INFO", "Applikasjon starter");
// Logikken i applikasjonen din her
logMessage(logFile, "ERROR", "Et eksempel på feil");
fclose(logFile);
return 0;
}
Utdata i detailed.log
:
[Thu Mar 10 14:32:01 2023] INFO - Applikasjon starter
[Thu Mar 10 14:32:02 2023] ERROR - Et eksempel på feil
Dypdykk
Logging i C, som demonstrert, er avhengig av enkle filoperasjoner, noe som er effektivt, men ikke like kraftig eller fleksibelt som loggingfasiliteter i andre språk, som Pythons logging
-modul eller Javas Log4j
. For mer avanserte loggeegenskaper i C, vender utviklere seg ofte til biblioteker som syslog
på Unix-lignende systemer, som gir systemomfattende logghåndtering, eller tredjepartsbiblioteker som log4c
.
Historisk sett har logging vært en integrert del av programmering, som går tilbake til tidlige programmeringspraksiser der sporing og forståelse av programflyt og feil for det meste ble gjort gjennom fysiske utskrifter. Ettersom systemene utviklet seg, ble logging mer sofistikert, og støtter nå ulike alvorlighetsnivåer, loggrotasjon og asynkron logging.
Selv om Cs standardbibliotek gir grunnleggende verktøy for implementering av logging, fører dets begrensninger ofte til skapingen av egendefinerte loggingsrammeverk eller adopsjon av eksterne biblioteker for mer funksjonsrike og fleksible loggløsninger. Til tross for disse begrensningene, er forståelse og implementering av grunnleggende logging i C avgjørende for feilsøking og vedlikehold av programvare, spesielt i miljøer der eksterne avhengigheter bør minimeres.