summaryrefslogtreecommitdiff
path: root/src/components/include/utils/logger.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/include/utils/logger.h')
-rw-r--r--src/components/include/utils/logger.h174
1 files changed, 63 insertions, 111 deletions
diff --git a/src/components/include/utils/logger.h b/src/components/include/utils/logger.h
index d492cfcb1b..6ceff88738 100644
--- a/src/components/include/utils/logger.h
+++ b/src/components/include/utils/logger.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2015, Ford Motor Company
+ * Copyright (c) 2020, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -33,151 +33,103 @@
#ifndef SRC_COMPONENTS_INCLUDE_UTILS_LOGGER_H_
#define SRC_COMPONENTS_INCLUDE_UTILS_LOGGER_H_
-#ifdef ENABLE_LOG
-#include <errno.h>
-#include <log4cxx/propertyconfigurator.h>
-#include <log4cxx/spi/loggingevent.h>
-#include <string.h>
-#include <sstream>
-#include "utils/auto_trace.h"
-#include "utils/logger_status.h"
-#include "utils/push_log.h"
-#endif // ENABLE_LOG
+#include "utils/ilogger.h"
#ifdef ENABLE_LOG
+#include <sstream>
+#include <string>
-#define CREATE_LOGGERPTR_GLOBAL(logger_var, logger_name) \
- namespace { \
- CREATE_LOGGERPTR_LOCAL(logger_var, logger_name); \
+#include "utils/auto_trace.h"
+#define SDL_CREATE_LOG_VARIABLE(component_name) \
+ namespace { \
+ static std::string logger_(component_name); \
}
-#define CREATE_LOGGERPTR_LOCAL(logger_var, logger_name) \
- log4cxx::LoggerPtr logger_var = \
- log4cxx::LoggerPtr(log4cxx::Logger::getLogger(logger_name));
+#define SDL_CREATE_LOCAL_LOG_VARIABLE(component_name) \
+ std::string logger_(component_name);
-#define INIT_LOGGER(file_name, logs_enabled) \
- log4cxx::PropertyConfigurator::configure(file_name); \
- logger::set_logs_enabled(logs_enabled);
+// special macros to dump logs from queue
+// it's needed, for example, when crash happened
+#define SDL_FLUSH_LOGGER() logger::Logger::instance().Flush();
// Logger deinitilization function and macro, need to stop log4cxx writing
// without this deinitilization log4cxx threads continue using some instances
// destroyed by exit()
-void deinit_logger();
-#define DEINIT_LOGGER() deinit_logger()
-
-// Logger thread deinitilization macro that need to stop the thread of handling
-// messages for the log4cxx
-#define DELETE_THREAD_LOGGER(logger_var) \
- logger::delete_log_message_loop_thread(logger_var)
-
-// special macros to dump logs from queue
-// it's need, for example, when crash happend
-#define FLUSH_LOGGER() logger::flush_logger()
-
-#define LOG4CXX_IS_TRACE_ENABLED(logger) logger->isTraceEnabled()
-
-log4cxx_time_t time_now();
-
-#define LOG_WITH_LEVEL(loggerPtr, logLevel, logEvent) \
- do { \
- if (logger::logs_enabled()) { \
- if (logger::logger_status != logger::DeletingLoggerThread) { \
- if (loggerPtr->isEnabledFor(logLevel)) { \
- std::stringstream accumulator; \
- accumulator << logEvent; \
- logger::push_log( \
- loggerPtr, \
- logLevel, \
- accumulator.str(), \
- time_now(), \
- LOG4CXX_LOCATION, \
- ::log4cxx::spi::LoggingEvent::getCurrentThreadName()); \
- } \
- } \
- } \
+#define SDL_DEINIT_LOGGER() logger::Logger::instance().DeInit();
+
+#define LOG_WITH_LEVEL(logLevel, logEvent) \
+ do { \
+ if (logger::Logger::instance().IsEnabledFor(logger_, logLevel)) { \
+ std::stringstream accumulator; \
+ accumulator << logEvent; \
+ logger::LogMessage message{ \
+ logger_, \
+ logLevel, \
+ accumulator.str(), \
+ std::chrono::high_resolution_clock::now(), \
+ logger::LocationInfo{__FILE__, __PRETTY_FUNCTION__, __LINE__}, \
+ std::this_thread::get_id()}; \
+ logger::Logger::instance().PushLog(message); \
+ } \
} while (false)
-#undef LOG4CXX_TRACE
-#define LOG4CXX_TRACE(loggerPtr, logEvent) \
- LOG_WITH_LEVEL(loggerPtr, ::log4cxx::Level::getTrace(), logEvent)
+#define SDL_LOG_TRACE(logEvent) \
+ LOG_WITH_LEVEL(logger::LogLevel::TRACE_LEVEL, logEvent)
-#define LOG4CXX_AUTO_TRACE_WITH_NAME_SPECIFIED(loggerPtr, auto_trace) \
- logger::AutoTrace auto_trace(loggerPtr, LOG4CXX_LOCATION)
-#define LOG4CXX_AUTO_TRACE(loggerPtr) \
- LOG4CXX_AUTO_TRACE_WITH_NAME_SPECIFIED(loggerPtr, SDL_local_auto_trace_object)
+#define SDL_LOG_AUTO_TRACE() \
+ logger::AutoTrace auto_trace( \
+ logger_, logger::LocationInfo{__FILE__, __PRETTY_FUNCTION__, __LINE__})
-#undef LOG4CXX_DEBUG
-#define LOG4CXX_DEBUG(loggerPtr, logEvent) \
- LOG_WITH_LEVEL(loggerPtr, ::log4cxx::Level::getDebug(), logEvent)
+#define SDL_LOG_DEBUG(logEvent) \
+ LOG_WITH_LEVEL(logger::LogLevel::DEBUG_LEVEL, logEvent)
-#undef LOG4CXX_INFO
-#define LOG4CXX_INFO(loggerPtr, logEvent) \
- LOG_WITH_LEVEL(loggerPtr, ::log4cxx::Level::getInfo(), logEvent)
+#define SDL_LOG_INFO(logEvent) \
+ LOG_WITH_LEVEL(logger::LogLevel::INFO_LEVEL, logEvent)
-#undef LOG4CXX_WARN
-#define LOG4CXX_WARN(loggerPtr, logEvent) \
- LOG_WITH_LEVEL(loggerPtr, ::log4cxx::Level::getWarn(), logEvent)
+#define SDL_LOG_WARN(logEvent) \
+ LOG_WITH_LEVEL(logger::LogLevel::WARNING_LEVEL, logEvent)
-#undef LOG4CXX_ERROR
-#define LOG4CXX_ERROR(loggerPtr, logEvent) \
- LOG_WITH_LEVEL(loggerPtr, ::log4cxx::Level::getError(), logEvent)
+#define SDL_LOG_ERROR(logEvent) \
+ LOG_WITH_LEVEL(logger::LogLevel::ERROR_LEVEL, logEvent)
-#undef LOG4CXX_FATAL
-#define LOG4CXX_FATAL(loggerPtr, logEvent) \
- LOG_WITH_LEVEL(loggerPtr, ::log4cxx::Level::getFatal(), logEvent)
+#define SDL_LOG_FATAL(logEvent) \
+ LOG_WITH_LEVEL(logger::LogLevel::FATAL_LEVEL, logEvent)
-#define LOG4CXX_ERROR_WITH_ERRNO(loggerPtr, message) \
- LOG4CXX_ERROR( \
- loggerPtr, \
- message << ", error code " << errno << " (" << strerror(errno) << ")")
+#define SDL_LOG_ERROR_WITH_ERRNO(message) \
+ SDL_LOG_ERROR(message << ", error code " << errno << " (" << strerror(errno) \
+ << ")")
-#define LOG4CXX_WARN_WITH_ERRNO(loggerPtr, message) \
- LOG4CXX_WARN( \
- loggerPtr, \
- message << ", error code " << errno << " (" << strerror(errno) << ")")
+#define SDL_LOG_WARN_WITH_ERRNO(message) \
+ SDL_LOG_WARN(message << ", error code " << errno << " (" << strerror(errno) \
+ << ")")
#else // ENABLE_LOG is OFF
+#define SDL_CREATE_LOG_VARIABLE(x)
-#define CREATE_LOGGERPTR_GLOBAL(logger_var, logger_name)
-
-#define CREATE_LOGGERPTR_LOCAL(logger_var, logger_name)
-
-#define INIT_LOGGER(file_name, logs_enabled)
-
-#define DEINIT_LOGGER()
+#define SDL_CREATE_LOCAL_LOG_VARIABLE(x)
-#define DELETE_THREAD_LOGGER(logger_var)
+#define SDL_DEINIT_LOGGER()
-#define FLUSH_LOGGER()
+#define SDL_FLUSH_LOGGER()
-#define LOG4CXX_IS_TRACE_ENABLED(logger) false
+#define SDL_LOG_TRACE(x)
-#undef LOG4CXX_TRACE
-#define LOG4CXX_TRACE(x, y)
+#define SDL_LOG_AUTO_TRACE()
-#define LOG4CXX_AUTO_TRACE_WITH_NAME_SPECIFIED(loggerPtr, auto_trace)
-#define LOG4CXX_AUTO_TRACE(loggerPtr)
+#define SDL_LOG_DEBUG(x)
-#undef LOG4CXX_DEBUG
-#define LOG4CXX_DEBUG(x, y)
+#define SDL_LOG_INFO(x)
-#undef LOG4CXX_INFO
-#define LOG4CXX_INFO(x, y)
+#define SDL_LOG_WARN(x)
-#undef LOG4CXX_WARN
-#define LOG4CXX_WARN(x, y)
+#define SDL_LOG_ERROR(x)
-#undef LOG4CXX_ERROR
-#define LOG4CXX_ERROR(x, y)
+#define SDL_LOG_ERROR_WITH_ERRNO(x)
-#undef LOG4CXX_ERROR_WITH_ERRNO
-#define LOG4CXX_ERROR_WITH_ERRNO(x, y)
+#define SDL_LOG_WARN_WITH_ERRNO(x)
-#undef LOG4CXX_WARN_WITH_ERRNO
-#define LOG4CXX_WARN_WITH_ERRNO(x, y)
+#define SDL_LOG_FATAL(x)
-#undef LOG4CXX_FATAL
-#define LOG4CXX_FATAL(x, y)
#endif // ENABLE_LOG
#endif // SRC_COMPONENTS_INCLUDE_UTILS_LOGGER_H_