Bonjour, toujours dans le but d'écrire une classe de type " logger" pour mon projet, je me suis heurté a quelques problèmes de conceptions .
J'aimerai obtenir une syntaxe proche de ca :
Log(FILE|CONSOLE,WARNING) << "Ma variable i vaux : " << i << "\n" ;
Bah c'est pas facile ....
Je me heurte a plusieurs problèmes :
Le premier :
- Je veux que certains lod ne soit pas présent lors d'un build ( debug/release peut importe ) . Par exemple, que tout ceux dont le type est " WARNING , ou MISC" soit enlevé, mais que je garde ceux nommé "ERROR" par exemple ).
Typiquement, je ne vois pas comment ( si c'est possible ... ) gardé certaine lignes en fonction d'un argument :
ex : Test(a)
( test étant une macro, je veux garder seulement lors d'un build les Test(a) avec a =2, le reste je n'en veux pas ... )
[ je veux eviter de devoir passer par un Log_Warning(...) Log_Error(...) ]
Ensuite, j'ai du mal avec les flux . Je ne vois pas comment m'en sortir proprement .
Avec une ligne de code tel que je l'ai énoncé en debut de post, je veux pouvoir aboutir à l'apelle d'une fonction ( ou de plusieur, selon les flag en paramètre ) de ce type:
WriteConsole(...)
WriteFile(...)
Avec en paramètre :
Un string représentant le message TOTAL ( dans mon cas et pour i = 12 )
MsgString = "Ma variable i vaux 12 \n"
ET certaines macro en paramètre ( genre __FILE__, __LINE__ ... )
bref une fonction de ce type :
WriteFile(int EventType ,string Msg, const char * Line, const char * File )
[ EventType étant : WARNING , ERROR, MISC ... ect ... ]
En gros ce qu'il me manque, c'est le lien entre le chainage de flux et l'apelle a Write()
Résumer : Comment a l'aide de macro, ne pas "expand" ma macro selon la velur d'un de ces paramètre ? Et comment reconsituer mon message lors d'un chainage de flux ? [ et accesoirement, comment extraire proprement mes types d'ouput ( FILE , CONSOLE , SCREEN ... ) de ma macro .
Je suis sur que ce n'est pas clair ... mais merci quand même
[ je referai ce soir quelque chose de plus propre si c'est vraiment trop le bordel . ]
Partager