logger.cpp

来自「C++高级编程这本书所附的源代码」· C++ 代码 · 共 62 行

CPP
62
字号
/**
 * Logger.cpp
 *
 * Implementation of a singleton logger class.
 */
#include <string>
#include "Logger.h"

using namespace std;

const string Logger::kLogLevelDebug = "DEBUG";
const string Logger::kLogLevelInfo = "INFO";
const string Logger::kLogLevelError = "ERROR";

const char* const Logger::kLogFileName = "log.out";

// The static instance will be constructed when the program starts and
// destructed when it ends.
Logger Logger::sInstance;

Logger& Logger::instance()
{
  return sInstance;
}

Logger::~Logger()
{
  mOutputStream.close();
}

Logger::Logger()
{
  mOutputStream.open(kLogFileName, ios_base::app);
  if (!mOutputStream.good()) {
    cerr << "Unable to initialize the Logger!" << endl;
  } 
}

void Logger::log(const string& inMessage, const string& inLogLevel)
{
  mOutputStream << inLogLevel << ": " << inMessage << endl;
}

void Logger::log(const vector<string>& inMessages, const string& inLogLevel)
{
  for (size_t i = 0; i < inMessages.size(); i++) {
    log(inMessages[i], inLogLevel);
  }
}


int main(int argc, char** argv)
{
  Logger::instance().log("test message", Logger::kLogLevelDebug);

  vector<string> items;
  items.push_back("item1");
  items.push_back("item2");

  Logger::instance().log(items, Logger::kLogLevelError);
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?