Bonjour à tous
Je me suis remis à faire un peu de prog en C.
Mon but est en fait de traduire des scripts Perl en langage C.
Je bloque sur un point : la gestion des logs.
Autannt en perl, il est aisé de générer des logd avec Log4Perl, autant en C, je bute sur la construction des messages (en fait les chaines de caractères.
en Perl :
$logger->debug( "Famille :: $familletMaquette :: $maquette");
(concaténation automatique des chaines de caractères)
En C :
//en résumé
#define LOG_INFO(msg) fprintf(fileLog, "%s %sn",getStartMessageForLog(INFO, __LINE__),msg);
#define LOG_WARNING(msg) fprintf(fileLog, "%s %sn",getStartMessageForLog(WARNING, __LINE__),msg);
#define LOG_ERROR(msg) fprintf(fileLog, "%s %sn",getStartMessageForLog(ERROR, __LINE__),msg);
#define LOG_DEBUG(msg) if(DEBUG_ACTIVATED) fprintf(fileLog, "%s %sn",getStartMessageForLog(DEBUG, __LINE__),msg);
....
sprintf( msg, "Famille :: %stMaquette :: %sn", famille, maquette);
LOG_INFO(msg);
En fait, j’aurais voulu créer une fonction qui travaillerait de la sorte :
void printLog( int niveau, char *format, ... );
cad qu’elle agrège les 2 lignes ‘sprintf’ et ‘LOG_INFO’ en une seule, les variables après ‘format’ servent à créer la ligne écrite dans le fichier de log.
Question : comment faire ?
Sachant qu’il faut que la fonction évalue ce que contient la variable format, ça me parait compliqué.
Quelles autres solutions utilisez vous pour la gestion des log en langage C sous windows (autre OS inutile).