c logger est une bibliothèque de journalisation simple et efficace pour le langage C. Elle permet d’écrire des messages de log dans un fichier ou dans la console, avec différents niveaux de détail et de contrôle. Dans cet article, nous allons voir ce que c logger offre comme fonctionnalités, comment l’installer et l’utiliser dans vos projets C.
Les fonctionnalités de c logger
c logger est une bibliothèque légère, qui ne fait que 500 lignes de code source. Elle est compatible avec le standard C89 et est thread-safe. Elle propose deux types de journalisation :
- La journalisation dans la console, qui affiche les messages de log dans la sortie standard ou la sortie d’erreur.
- La journalisation dans un fichier, qui écrit les messages de log dans un fichier texte, avec une rotation automatique en fonction de la taille du fichier.
c logger permet également de personnaliser la journalisation avec un fichier de configuration, dans lequel on peut définir le format des messages, le niveau de détail, le nom du fichier de log, la taille maximale du fichier, etc.
Comment installer c logger ?
Pour installer c logger, il suffit de télécharger le code source depuis le dépôt GitHub et de le compiler avec votre compilateur C préféré. Par exemple, avec 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
Cela va créer une archive statique libclogger.a que vous pourrez lier à votre programme C. Vous devrez également inclure le fichier d’en-tête logger.h dans vos fichiers sources.
Comment utiliser c logger ?
Pour utiliser c logger, il faut d’abord initialiser la bibliothèque avec la fonction logger_init
, en lui passant le nom du fichier de configuration ou NULL si on veut utiliser les paramètres par défaut. Ensuite, on peut utiliser la fonction logger
pour écrire des messages de log, en lui passant un tag, un niveau et un message. Par exemple :
#include "logger.h"
int main(void) {
/* Initialiser la bibliothèque avec le fichier config.ini */
if (logger_init("config.ini") != 0) {
fprintf(stderr, "Erreur d'initialisation de c logger\n");
return 1;
}
/* Ecrire un message de niveau INFO avec le tag "main" */
logger("main", LOG_INFO, "Début du programme");
/* Ecrire un message de niveau ERROR avec le tag "main" */
logger("main", LOG_ERROR, "Erreur fatale");
/* Terminer la bibliothèque */
logger_end();
return 0;
}
Le format des messages de log dépend du fichier de configuration utilisé. Par défaut, il est de la forme :
date-heure tag niveau message
Par exemple :
2023-06-13 02:37:16 main INFO Début du programme
2023-06-13 02:37:16 main ERROR Erreur fatale
On peut modifier le format en utilisant les variables suivantes dans le fichier de configuration :
- %d : la date au format AAAA-MM-JJ
- %t : l’heure au format HH:MM:SS
- %c : le tag du message
- %l : le niveau du message
- %m : le message
- %n : un saut de ligne
Par exemple, si on veut avoir un format plus court, on peut utiliser :
[formats]
simple = "%t %c %l %m%n"
Quels sont les niveaux de détail disponibles ?
c logger propose cinq niveaux de détail pour les messages de log :
- LOG_DEBUG : pour les messages de débogage, utiles pour les développeurs.
- LOG_INFO : pour les messages informatifs, utiles pour les utilisateurs.
- LOG_WARN : pour les messages d’avertissement, utiles pour signaler des situations anormales mais non critiques.
- LOG_ERROR : pour les messages d’erreur, utiles pour signaler des situations critiques qui empêchent le bon fonctionnement du programme.
- LOG_FATAL : pour les messages fatals, utiles pour signaler des situations irrécupérables qui nécessitent l’arrêt du programme.
On peut contrôler le niveau de détail des messages de log en utilisant la variable log_level
dans le fichier de configuration. Par exemple, si on veut n’afficher que les messages de niveau ERROR et FATAL, on peut utiliser :
[general]
log_level = 3
Les niveaux sont numérotés de 0 à 4, du plus détaillé au moins détaillé. Par défaut, le niveau est à 0, ce qui affiche tous les messages.
Comment contrôler la taille du fichier de log ?
c logger permet de limiter la taille du fichier de log en utilisant la variable max_file_size
dans le fichier de configuration. Par exemple, si on veut que le fichier de log ne dépasse pas 1 Mo, on peut utiliser :
[general]
max_file_size = 1048576
La taille est exprimée en octets. Par défaut, il n’y a pas de limite de taille.
Lorsque le fichier de log atteint la taille maximale, c logger crée un nouveau fichier avec un suffixe numérique. Par exemple, si le nom du fichier de log est log.txt
, le premier fichier créé sera log.txt.1
, puis log.txt.2
, etc. Le nombre maximal de fichiers créés est contrôlé par la variable max_file_count
dans le fichier de configuration. Par exemple, si on veut garder au maximum 10 fichiers de log, on peut utiliser :
[general]
max_file_count = 10
Par défaut, il n’y a pas de limite sur le nombre de fichiers.
FAQ
Quelle est la différence entre c logger et d’autres bibliothèques de journalisation comme log4c ou nglogc ?
c logger se distingue par sa simplicité et sa légèreté. Elle ne propose pas autant de fonctionnalités que d’autres bibliothèques plus complètes, mais elle couvre les besoins essentiels de la journalisation. Elle est également compatible avec le standard C89 et thread-safe.
Comment faire pour afficher les messages de log dans un autre format que le texte ?
c logger ne supporte que le format texte pour les messages de log. Si vous voulez utiliser un autre format, comme le JSON ou le XML, vous devrez écrire votre propre fonction de formatage et l’appeler dans la fonction logger
.
Comment faire pour filtrer les messages de log en fonction du tag ou du niveau ?
c logger ne propose pas de filtrage avancé des messages de log. Vous pouvez seulement contrôler le niveau global des messages avec la variable log_level
dans le fichier de configuration. Si vous voulez filtrer les messages en fonction du tag ou du niveau, vous devrez écrire votre propre fonction de filtrage et l’appeler dans la fonction logger
.
Comment faire pour envoyer les messages de log vers une autre destination que la console ou le fichier ?
c logger ne supporte que la console et le fichier comme destinations pour les messages de log. Si vous voulez envoyer les messages vers une autre destination, comme une base de données ou un service web, vous devrez écrire votre propre fonction d’envoi et l’appeler dans la fonction logger
.
Comment faire pour déboguer c logger en cas de problème ?
c logger fournit une fonction logger_debug
qui affiche des informations sur l’état interne de la bibliothèque. Vous pouvez l’appeler à tout moment pour vérifier si c logger fonctionne correctement.
Conclusion
c logger est une bibliothèque de journalisation simple et efficace pour le langage C. Elle permet d’écrire des messages de log dans un fichier ou dans la console, avec différents niveaux de détail et de contrôle. Elle est facile à installer et à utiliser, et offre une personnalisation avec un fichier de configuration. c logger est basée sur le principe de la programmation orientée objet, ce qui permet de créer des objets logger avec des propriétés et des méthodes spécifiques. c logger est une solution idéale pour les développeurs qui veulent ajouter des fonctionnalités de journalisation à leurs projets C sans se compliquer la vie.