Ajout macros __FILE__ et __LINE__ dans message syslog
Bonjour,
Jusque là pour suivre le déroulement d'un code, j'utilise un affichage avec des printf avec la macro msg() :
Code:
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) |
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.
En deux fois :
Code:
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);
//...
} |
Auriez-vous une idée pour concaténer les deux parties du message ?
Merci