Logging.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #include "Logging.h"
  2. #include <stdarg.h>
  3. #include <stdio.h>
  4. #include <syslog.h>
  5. #include <iostream>
  6. namespace Logging {
  7. void OpenLog()
  8. {
  9. openlog(NULL, LOG_CONS | LOG_NDELAY | LOG_PID, LOG_USER);
  10. }
  11. void CloseLog()
  12. {
  13. closelog();
  14. }
  15. void SetLogMask(Severity::type severity)
  16. {
  17. int level = static_cast<int>(severity);
  18. setlogmask(LOG_UPTO(level));
  19. switch (level)
  20. {
  21. case LOG_EMERG:
  22. Syslog(LOG_EMERG, "LogMask set to LOG_EMERG\n");
  23. break;
  24. case LOG_ALERT:
  25. Syslog(LOG_ALERT, "LogMask set to LOG_ALERT\n");
  26. break;
  27. case LOG_CRIT:
  28. Syslog(LOG_CRIT, "LogMask set to LOG_CRIT\n");
  29. break;
  30. case LOG_ERR:
  31. Syslog(LOG_ERR, "LogMask set to LOG_ERR\n");
  32. break;
  33. case LOG_WARNING:
  34. Syslog(LOG_WARNING, "LogMask set to LOG_WARNING\n");
  35. break;
  36. case LOG_NOTICE:
  37. Syslog(LOG_NOTICE, "LogMask set to LOG_NOTICE\n");
  38. break;
  39. case LOG_INFO:
  40. Syslog(LOG_NOTICE, "LogMask set to LOG_INFO\n");
  41. break;
  42. case LOG_DEBUG:
  43. Syslog(LOG_NOTICE, "LogMask set to LOG_DEBUG\n");
  44. break;
  45. }
  46. }
  47. void Log(Severity::type severity, const std::string& message)
  48. {
  49. if (severity > Severity::Error)
  50. std::cout << message << std::endl;
  51. else
  52. std::cerr << message << std::endl;
  53. Syslog(static_cast<int>(severity), "%s", message.c_str());
  54. }
  55. void Syslog(int level, const char *format, ...)
  56. {
  57. va_list args;
  58. va_start(args, format);
  59. vsyslog(level, format, args);
  60. if (level == LOG_DEBUG)
  61. printf(" ");
  62. vprintf(format, args);
  63. va_end(args);
  64. }
  65. } // namespace Logging