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
Je peux ensuite écrire dans mon fichier de cette façon:
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 )
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
2ILOG << "Chargement en cours..." << std::endl;
Car ça ne marche pas avec le std::endl
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 ); }
Est-ce que vous avez une idée de comment je pourrais faire ?
Merci
Partager