Salut,
J'ai récupéré la bibliothèque Poco qui me permet de logger des messages compatibles avec le type std::string.
Grosso modo il y a une methode comme ça :
Mon idée est de permettre d'utiliser cette methode avec une std::stringstream
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void debug(std::string& s);
Donc je peux créer un adaptateur qui fait :
Pour que le logger soit pratique à utiliser je voudrais pouvoir passer des streams "composées" directement, par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void stream_debug(std::stringstream& stream) { instanceLogger.debug(stream.str()); }
Mais ça ne marche pas car la chaine constante ne supporte pas "<<".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 double d = 1.2345; stream_debug("la valeur de d est " << d);
Donc j'ai imaginé le contournement suivant :
Ca marche mais est ce qu'il y a mieux à faire ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #define LOG(a) stringstream s; s << a << endl; stream_debug(s); double d = 1.2345; LOG("la valeur de d est " << d);
Peut-on se passer de la macro ?
Merci
Partager