Créer une fonction de journalisation

Problème

Vous souhaitez créer votre propre fonction de journalisation pour stocker de manière personnalisée les messages issus de votre programme. Comme printf(), vous souhaitez que ce soit une fonction à nombre variable d’arguments.

Solution

Utilisez la bibliothèque glib et la fonction g_log_set_handler(), comme dans la recette précédente, ou créez une fonction à nombre variable d’arguments sur le modèle de printf().

Discussion

Pour l’utilisation de g_log_set_handler(), voyez la recette précédente. Nous allons créer ici notre propre fonction qui placera, dans un fichier /var/log/test.log, l’heure à laquelle la fonction a été appelée, ainsi que le nom du fichier et le numéro de ligne d’où la fonction a été appelée. Nous ajouterons un niveau d’erreur et un message. Le message sera spécifié de la même manière que pour printf(), à savoir un format suivi d’un nombre variable d’arguments. Voici cette fonction :


#define LOG_MESSAGE_LENGTH 256 
 
char *log_file_name = NULL; 
 
int 
ma_log (char *file, int line, char *log_level, char *fmt, ...) 
{ 
  va_list args; 
  char message[LOG_MESSAGE_LENGTH]; 
  char log_date[] = "YYYY/MM/DD HH:MM:SS "; 
  time_t t; 
  struct tm *tm; 
  FILE *fd = NULL; 
 ...
Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Garder une trace de l'exécution d'un programme
Suivant
Utiliser syslog