Skip to content

Commit

Permalink
iox-eclipse-iceoryx#1755 Add a log backend for the platform to the ho…
Browse files Browse the repository at this point in the history
…ofs logger
  • Loading branch information
elBoberido committed Mar 11, 2024
1 parent 6ee5f10 commit 3fb941e
Show file tree
Hide file tree
Showing 4 changed files with 64 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
55 changes: 55 additions & 0 deletions iceoryx_hoofs/reporting/source/logging.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
// Copyright (c) 2024 by Mathias Kraus <[email protected]>. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// SPDX-License-Identifier: Apache-2.0

#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 3fb941e

Please sign in to comment.