CLogFormatter.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "StdInc.h"
  2. #include "CLogFormatter.h"
  3. #include "LogRecord.h"
  4. CLogFormatter::CLogFormatter() : pattern("%m")
  5. {
  6. }
  7. CLogFormatter::CLogFormatter(const std::string & pattern) : pattern(pattern)
  8. {
  9. }
  10. std::string CLogFormatter::format(const LogRecord & record) const
  11. {
  12. std::string message = pattern;
  13. // Format date
  14. std::stringstream dateStream;
  15. boost::posix_time::time_facet * facet = new boost::posix_time::time_facet("%d-%b-%Y %H:%M:%S");
  16. dateStream.imbue(std::locale(dateStream.getloc(), facet));
  17. dateStream << record.timeStamp;
  18. boost::algorithm::replace_all(message, "%d", dateStream.str());
  19. // Format log level
  20. std::string level;
  21. switch(record.level)
  22. {
  23. case ELogLevel::TRACE:
  24. level = "TRACE";
  25. break;
  26. case ELogLevel::DEBUG:
  27. level = "DEBUG";
  28. break;
  29. case ELogLevel::INFO:
  30. level = "INFO";
  31. break;
  32. case ELogLevel::WARN:
  33. level = "WARN";
  34. break;
  35. case ELogLevel::ERROR:
  36. level = "ERROR";
  37. break;
  38. }
  39. boost::algorithm::replace_all(message, "%l", level);
  40. // Format name, thread id and message
  41. boost::algorithm::replace_all(message, "%n", record.domain.getName());
  42. boost::algorithm::replace_all(message, "%t", boost::lexical_cast<std::string>(record.threadId));
  43. boost::algorithm::replace_all(message, "%m", record.message);
  44. return message;
  45. }
  46. void CLogFormatter::setPattern(const std::string & pattern)
  47. {
  48. this->pattern = pattern;
  49. }
  50. const std::string & CLogFormatter::getPattern() const
  51. {
  52. return pattern;
  53. }