Logging avec opérateur <<
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 :
Code:
1 2
|
void debug(std::string& s); |
Mon idée est de permettre d'utiliser cette methode avec une std::stringstream
Donc je peux créer un adaptateur qui fait :
Code:
1 2 3 4 5
|
void stream_debug(std::stringstream& stream)
{
instanceLogger.debug(stream.str());
} |
Pour que le logger soit pratique à utiliser je voudrais pouvoir passer des streams "composées" directement, par exemple :
Code:
1 2 3
|
double d = 1.2345;
stream_debug("la valeur de d est " << d); |
Mais ça ne marche pas car la chaine constante ne supporte pas "<<".
Donc j'ai imaginé le contournement suivant :
Code:
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); |
Ca marche mais est ce qu'il y a mieux à faire ???
Peut-on se passer de la macro ?
Merci