in Logger.h :
#ifndef CLASS_LOG_H
#define CLASS_LOG_H
#include <exception>
#include <iostream>
#include <fstream>
#include <time.h>
namespace Log
{
class LoggerMess
{
public:
LoggerMess():fileStr("LOG_MESS") {};
~LoggerMess() {};
template<typename T>
LoggerMess& operator << ( const T &mess )
{
try
{
fileName.exceptions( std::fstream::failbit );
fileName.open ( fileStr.c_str(), std::ofstream::app );
fileName << mess;
fileName.close();
}
catch ( std::exception &e )
{
std::cerr << "Exception caught: " << e.what() << std::endl;
}
return *this;
};
void setLogFile ( const std::string &Fset ) { fileStr = Fset; };
private:
std::ofstream fileName;
std::string fileStr;
};
class LoggerCerr
{
public:
LoggerCerr():fileStr("LOG_ERR") {};
~LoggerCerr() {};
template<typename T>
LoggerCerr& operator << ( const T &mess )
{
try
{
fileName.exceptions( std::fstream::failbit );
fileName.open ( fileStr.c_str(), std::ofstream::app );
fileName << mess;
fileName.close();
}
catch ( std::exception &e )
{
std::cerr << "Exception caught: " << e.what() << std::endl;
}
return *this;
};
void setLogFile ( const std::string &Fset ) { fileStr = Fset; };
private:
std::ofstream fileName;
std::string fileStr;
};
extern LoggerMess mess;
extern LoggerCerr cerr;
};
#endif
in Logger.cpp
#include "Logger.h"
namespace Log
{
LoggerMess mess;
LoggerCerr cerr;
};
Используем так :
include "Logger.h"
int main ()
{
Log::cerr << "error";
Log::mess << "mess";
}
Скажите пожалуйста, где здесь ошибка?
И что можно было бы исправить?
Спасибо
Форум —
Development


