|
@@ -0,0 +1,79 @@
|
|
|
|
|
+#include <iostream>
|
|
|
|
|
+#include <stdarg.h>
|
|
|
|
|
+#include <stdio.h>
|
|
|
|
|
+#include <syslog.h>
|
|
|
|
|
+#include "Logging.h"
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+namespace Logging {
|
|
|
|
|
+
|
|
|
|
|
+void OpenLog()
|
|
|
|
|
+{
|
|
|
|
|
+ openlog(NULL, LOG_CONS | LOG_NDELAY | LOG_PID, LOG_USER);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void CloseLog()
|
|
|
|
|
+{
|
|
|
|
|
+ closelog();
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void SetLogMask(Severity::type severity)
|
|
|
|
|
+{
|
|
|
|
|
+ int level = static_cast<int>(severity);
|
|
|
|
|
+ setlogmask(LOG_UPTO(level));
|
|
|
|
|
+
|
|
|
|
|
+ switch (level)
|
|
|
|
|
+ {
|
|
|
|
|
+ case LOG_EMERG:
|
|
|
|
|
+ Syslog(LOG_EMERG, "LogMask set to LOG_EMERG\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_ALERT:
|
|
|
|
|
+ Syslog(LOG_ALERT, "LogMask set to LOG_ALERT\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_CRIT:
|
|
|
|
|
+ Syslog(LOG_CRIT, "LogMask set to LOG_CRIT\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_ERR:
|
|
|
|
|
+ Syslog(LOG_ERR, "LogMask set to LOG_ERR\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_WARNING:
|
|
|
|
|
+ Syslog(LOG_WARNING, "LogMask set to LOG_WARNING\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_NOTICE:
|
|
|
|
|
+ Syslog(LOG_NOTICE, "LogMask set to LOG_NOTICE\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_INFO:
|
|
|
|
|
+ Syslog(LOG_NOTICE, "LogMask set to LOG_INFO\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ case LOG_DEBUG:
|
|
|
|
|
+ Syslog(LOG_NOTICE, "LogMask set to LOG_DEBUG\n");
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void Log(Severity::type severity, const std::string& message)
|
|
|
|
|
+{
|
|
|
|
|
+ if (severity > Severity::Error)
|
|
|
|
|
+ std::cout << message << std::endl;
|
|
|
|
|
+ else
|
|
|
|
|
+ std::cerr << message << std::endl;
|
|
|
|
|
+
|
|
|
|
|
+ Syslog(static_cast<int>(severity), "%s", message.c_str());
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void Syslog(int level, const char *format, ...)
|
|
|
|
|
+{
|
|
|
|
|
+ va_list args;
|
|
|
|
|
+ va_start(args, format);
|
|
|
|
|
+
|
|
|
|
|
+ vsyslog(level, format, args);
|
|
|
|
|
+
|
|
|
|
|
+ if (level == LOG_DEBUG)
|
|
|
|
|
+ printf(" ");
|
|
|
|
|
+
|
|
|
|
|
+ vprintf(format, args);
|
|
|
|
|
+
|
|
|
|
|
+ va_end(args);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+} // namespace Logging
|