Copier ce qui est écrit dans un fichier (via operator<<) vers la console
Bonjour
Alors voici mon problème. J'ai une classe Debug qui me permet de logger différentes informations dans une fichier. Voici une partie du code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
namespace ELogSeverity
{
enum Type
{
Info,
Warning,
Error
};
}
class Debug
{
public:
/////////////////////////////////////////////////
static std::ostream& Stream(ELogSeverity::Type InSeverity)
{
switch ( InSeverity )
{
case ELogSeverity::Info:
SET_CONSOLE_COLOR( INFO_CONSOLE_COLOR );
break;
case ELogSeverity::Warning:
SET_CONSOLE_COLOR( WARNING_CONSOLE_COLOR );
break;
case ELogSeverity::Error:
SET_CONSOLE_COLOR( ERROR_CONSOLE_COLOR );
break;
default:
SET_CONSOLE_COLOR( DEFAULT_CONSOLE_COLOR );
}
WriteTime();
return mOutput;
}
private:
static std::ofstream mOutput;
};
#define ILOG Debug::Stream( ELogSeverity::Info )
#define WLOG Debug::Stream( ELogSeverity::Warning )
#define ELOG Debug::Stream( ELogSeverity::Error ) |
Je peux ensuite écrire dans mon fichier de cette façon:
Code:
1 2
|
ILOG << "Chargement en cours..." << std::endl; |
A chaque fois que j'écris dans mon fichier, j'aimerai également écrire dans la console. J'ai regardé du côté de la redirection avec les streambuf mais ça ne répond pas à mon problème puisque ça ne fait que rediriger les log vers la console au lieu de les copier. Et je ne veux pas utiliser la surcharge d'opérateur du type
Code:
1 2 3 4 5 6 7 8
|
template<class T> Debug& operator <<(const T& InMessage)
{
mOutput << InMessage;
std::cout << InMessage;
return ( *this );
} |
Car ça ne marche pas avec le std::endl
Est-ce que vous avez une idée de comment je pourrais faire ?
Merci :)