diff server/web_logmachine.cpp @ 0:a4671277546c tip

created the repository for the thymian project
author ferencd
date Tue, 17 Aug 2021 11:19:54 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/server/web_logmachine.cpp	Tue Aug 17 11:19:54 2021 +0200
@@ -0,0 +1,60 @@
+#include "web_logmachine.h"
+
+#include <cxxtools/log/cxxtools.h>
+
+#include <map>
+
+namespace
+{
+
+cxxtools::Logger* getLogger()
+{
+  static cxxtools::Logger* logger = nullptr;
+  if (!::cxxtools::LoggerManager::isEnabled())
+  {
+      return nullptr;
+  }
+  if (logger == nullptr)
+  {
+      logger = ::cxxtools::LoggerManager::getInstance().getLogger("application");
+  }
+  return logger;
+}
+
+void do_log(cxxtools::Logger::log_level_type level, const std::string& msg)
+{
+    cxxtools::Logger* _cxxtools_logger = getLogger();
+    if (_cxxtools_logger != nullptr && _cxxtools_logger->isEnabled(level))
+    {
+        ::cxxtools::LogMessage _cxxtools_logMessage(_cxxtools_logger, level);
+        _cxxtools_logMessage.out() << msg;
+        _cxxtools_logMessage.finish();
+    }
+}
+
+}
+
+web_logmachine::web_logmachine()
+{
+    static bool log_inited = false;
+    if(!log_inited)
+    {
+        log_init("log_conf.xml");
+        log_inited = true;
+    }
+}
+
+void web_logmachine::do_log(unafrog::log::LogLevel level, const std::string &message) noexcept
+{
+    static std::map<unafrog::log::LogLevel, ::cxxtools::Logger::log_level_type> levelMap{
+        {unafrog::log::LogLevel::LOG_EMERGENCY, ::cxxtools::Logger::LOG_LEVEL_FATAL},
+        {unafrog::log::LogLevel::LOG_CRITICAL, ::cxxtools::Logger::LOG_LEVEL_FATAL},
+        {unafrog::log::LogLevel::LOG_ERROR, ::cxxtools::Logger::LOG_LEVEL_ERROR},
+        {unafrog::log::LogLevel::LOG_WARNING, ::cxxtools::Logger::LOG_LEVEL_WARN},
+        {unafrog::log::LogLevel::LOG_INFORMATION, ::cxxtools::Logger::LOG_LEVEL_INFO},
+        {unafrog::log::LogLevel::LOG_DEBUG, ::cxxtools::Logger::LOG_LEVEL_DEBUG},
+        {unafrog::log::LogLevel::LOG_TRACE, ::cxxtools::Logger::LOG_LEVEL_TRACE}
+    };
+
+    ::do_log(levelMap[level], message);
+}