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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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