Skip to content

Commit

Permalink
iox-eclipse-iceoryx#1755 Add a log backendfor the platform to the hoo…
Browse files Browse the repository at this point in the history
…fs logger
  • Loading branch information
elBoberido committed Mar 11, 2024
1 parent 6ee5f10 commit d13ab20
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions iceoryx_hoofs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ iox_add_library(
reporting/source/hoofs_error_reporting.cpp
reporting/source/console_logger.cpp
reporting/source/logger.cpp
reporting/source/logging.cpp
time/source/duration.cpp
utility/source/unique_id.cpp

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ inline void Logger<BaseLogger>::initLoggerInternal(const LogLevel logLevel) noex
{
BaseLogger::setLogLevel(logLevel);
BaseLogger::initLogger(logLevel);
iox_platform_set_log_backend(&platform_log_backend);
m_isFinalized.store(true, std::memory_order_relaxed);
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#ifndef IOX_HOOFS_REPORTING_LOG_BUILDING_BLOCKS_LOGGER_HPP
#define IOX_HOOFS_REPORTING_LOG_BUILDING_BLOCKS_LOGGER_HPP

#include "iceoryx_platform/logging.hpp"
#include "iox/iceoryx_hoofs_types.hpp"

#include <atomic>
Expand Down Expand Up @@ -52,6 +53,12 @@ LogLevel logLevelFromEnvOr(const LogLevel logLevel) noexcept;

namespace internal
{
/// @brief The backend for the platform logging frontend
/// @copydoc IceoryxPlatformLogBackend
/// @note Needs to be implemented in 'logging.cpp' in order to use the high level log API
void platform_log_backend(
const char* file, int line, const char* function, IceoryxPlatformLogLevel log_level, const char* msg);

/// @brief This class acts as common interface for the Logger. It provides the common functionality and inherits from
/// the BaseLogger which is provided as template parameter. Please have a look at the design document for more details.
/// @tparam[in] BaseLogger is the actual implementation
Expand Down
40 changes: 40 additions & 0 deletions iceoryx_hoofs/reporting/source/logging.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

#include "iox/logging.hpp"

namespace iox::log::internal
{
// NOLINTJUSTIFICATION Not used directly but as a function pointer to set the backend
// NOLINTNEXTLINE(readability-function-size)
void platform_log_backend(
const char* file, int line, const char* function, IceoryxPlatformLogLevel log_level, const char* msg)
{
auto level = LogLevel::TRACE;
switch (log_level)
{
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_OFF:
level = LogLevel::OFF;
break;
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_FATAL:
level = LogLevel::FATAL;
break;
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_ERROR:
level = LogLevel::ERROR;
break;
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_WARN:
level = LogLevel::WARN;
break;
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_INFO:
level = LogLevel::INFO;
break;
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_DEBUG:
level = LogLevel::DEBUG;
break;
case IceoryxPlatformLogLevel::IOX_PLATFORM_LOG_LEVEL_TRACE:
level = LogLevel::TRACE;
break;
default:
level = LogLevel::TRACE;
}
IOX_LOG_INTERNAL(file, line, function, level, msg);
}
} // namespace iox::log::internal

0 comments on commit d13ab20

Please sign in to comment.