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 . ]