Bonjour,
Jusque là pour suivre le déroulement d'un code, j'utilise un affichage avec des printf avec la macro msg() :
Maintenant, je souhaiterai ne plus utiliser les fonctions printf mais syslog de linux. J'ai réussi à utiliser syslog et vsyslog dans pmesg(), mais je ne vois pas comment récupérer __VA_ARGS__ et les macros __FILE__, __LINE__ pour générer un affichage syslog sur une même ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int pmesg(int level, int service, char* format, ...); #define msg(...) do{if(pmesg(__VA_ARGS__)) fprintf(stderr, " (%s, line %d, %s)\n", __FILE__, __LINE__, __func__);} while(0)
En deux fois :
Auriez-vous une idée pour concaténer les deux parties du message ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int pmesg(const char *file, int line, int level, int service, char* format, ...); #define msg(...) do{pmesg(__FILE__, __LINE__, __VA_ARGS__);} while(0) int pmesg(const char *file, int line, int level, int service, char* format, ...) { //... va_start(args, format); syslog(LOG_LOCAL0|LOG_DEBUG, "message de test %s %d", file, line); vsyslog(LOG_LOCAL0|LOG_NOTICE, format, args); va_end(args); //... }
Merci
Partager