Bonjour à tous

Je cherche à créer une classe qui me permettrait d'écrire dans un fichier externe à mon application.
Je me suis inspiré de celle que crée Laurent Gomilla dans Yes::Engine mais celle-ci est un singleton. Or je souhaite pouvoir créer et écrire dans plusieurs fichiers à différents moments de mon application.
Non expert en C++ j'essaie de faire la ma mienne pour progresser. J'ai gardé son idée d'opérator "<<" où par exemple il fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
CLoggerFile Logger* = new CLOggerFile("Log.log");
Logger->setLogger(Logger);
Logger->Log() << "Quel beau log " <<  " \n";
Voici ma classe :
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
class CMyLogger
{
public:
	CMyLogger(const std::string& Filename = "Output.log");
	~CMyLogger(void);
 
template <class T> CMyLogger* operator <<(const T& ToLog);
 
private:
	std::ofstream m_File;
	string filename;
	void Write(const std::string& Message);
 
protected :
    std::string CurrentDate() const;
    std::string CurrentTime() const;
 
};
et les déclarations :
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
45
46
47
48
49
CMyLogger::CMyLogger(const std::string& Filename):m_File(Filename.c_str())
{
	if (!m_File)
		printf("Impossible d'accéder en écriture : %s \n",Filename);
 
    // Ecriture de l'en-tête du fichier
    m_File << "  ===========================================" << std::endl;
 
	filename = Filename;
}
 
CMyLogger::~CMyLogger(void)
{
}
 
template <class T> CMyLogger* CMyLogger::operator <<(const T& ToLog)
{
    std::ostringstream Stream;
    Stream << ToLog;
	Write(Stream.str());   
}
 
std::string CMyLogger::CurrentDate() const
{
    // Récupération et formatage de la date
    char sTime[24];
    time_t CurrentTime = time(NULL);
    strftime(sTime, sizeof(sTime), "%d/%m/%Y", localtime(&CurrentTime));
 
    return sTime;
}
 
 
std::string CMyLogger::CurrentTime() const
{
    // Récupération et formatage de la date
    char sTime[24];
    time_t CurrentTime = time(NULL);
    strftime(sTime, sizeof(sTime), "%H:%M:%S", localtime(&CurrentTime));
 
    return sTime;
}
 
void CMyLogger::Write(const std::string& Message)
{
    assert(m_File.is_open());
 
    m_File << Message << std::flush;
}

Le petit bout de code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
CMyLogger* Logger = new CMyLogger("Kx.log");
	Logger << "Welcome" << "\n";
provoque les erreurs sous VC8:
error C2296: '<<' : illegal, left operand has type 'CMyLogger *'
error C2297: '<<' : illegal, right operand has type 'const char [9]'

Pourriez-vous m'indiquer mes erreurs et la bonne direction à prendre svp ?