Bonjour,

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