Advertisement
AlefIGH

Untitled

Feb 2nd, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.12 KB | None | 0 0
  1. // .h
  2. class Logger {
  3. public:
  4.     void Log(const std::string &message);
  5.  
  6.     Logger &operator<<(const std::string& message);
  7.  
  8.     static Logger* Get();
  9.  
  10.     Logger(const Logger&) = delete;
  11.     Logger(const Logger&&) = delete;
  12.     Logger & operator=(const Logger&) = delete;
  13.     Logger & operator=(const Logger&&) = delete;
  14. private:
  15.     Logger() = default;
  16.     ~Logger() = default;
  17.  
  18.     static std::mutex mtx;
  19.  
  20.     static std::string fileName;
  21.  
  22.     static Logger *pThis;
  23.  
  24.     static std::ofstream logFile;
  25. };
  26.  
  27. // .cpp
  28. Logger *Logger::Get() {
  29.     if (pThis == nullptr) {
  30.         pThis = new Logger();
  31.         logFile.open(fileName, std::ios::out | std::ios::app);
  32.         logFile << "Start log session : " << Utils::getCurrentDateTime()  << std::endl;
  33.     }
  34.     return pThis;
  35. }
  36.  
  37. void Logger::Log(const std::string &message) {
  38.     std::lock_guard<std::mutex> lock(mtx);
  39.     logFile << Utils::getCurrentDateTime() << " : " << message << std::endl;
  40. }
  41.  
  42. Logger &Logger::operator<<(const std::string &message) {
  43.     Log(message);
  44.     return *pThis;
  45. }
  46.  
  47. std::string Logger::fileName = "log.txt";
  48. std::ofstream Logger::logFile;
  49. Logger* Logger::pThis = nullptr;
  50. std::mutex Logger::mtx;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement