6#ifndef KCENON_NETWORK_INTERNAL_INTEGRATION_LOGGER_INTEGRATION_H_
7#define KCENON_NETWORK_INTERNAL_INTEGRATION_LOGGER_INTEGRATION_H_
33#if KCENON_WITH_COMMON_SYSTEM
34#include <kcenon/common/logging/log_macros.h>
35#include <kcenon/common/interfaces/global_logger_registry.h>
53#if KCENON_WITH_COMMON_SYSTEM
57inline kcenon::common::interfaces::log_level to_common_level(
log_level level) {
61 case log_level::info:
return kcenon::common::interfaces::log_level::info;
62 case log_level::warn:
return kcenon::common::interfaces::log_level::warning;
64 case log_level::fatal:
return kcenon::common::interfaces::log_level::critical;
65 default:
return kcenon::common::interfaces::log_level::info;
77class logger_interface {
97 const std::string& file,
int line,
98 const std::string& function) = 0;
113#if KCENON_WITH_COMMON_SYSTEM
127 explicit common_system_logger_adapter(
const std::string& logger_name =
"");
129 ~common_system_logger_adapter()
override =
default;
133 const std::string& file,
int line,
134 const std::string& function)
override;
135 bool is_level_enabled(
log_level level)
const override;
136 void flush()
override;
139 std::string logger_name_;
140 std::shared_ptr<kcenon::common::interfaces::ILogger> get_logger()
const;
164 const std::string& file,
int line,
165 const std::string& function)
override;
167 void flush()
override;
206 void set_logger(std::shared_ptr<logger_interface> logger);
212 std::shared_ptr<logger_interface>
get_logger();
230 const std::string& file,
int line,
const std::string& function);
272 return counter_.load(std::memory_order_relaxed) > 0;
298#if KCENON_WITH_COMMON_SYSTEM
300#define NETWORK_LOG_TRACE(msg) \
301 do { if (::kcenon::network::integration::detail::static_destruction_guard::is_logging_safe()) { LOG_TRACE(msg); } } while(0)
302#define NETWORK_LOG_DEBUG(msg) \
303 do { if (::kcenon::network::integration::detail::static_destruction_guard::is_logging_safe()) { LOG_DEBUG(msg); } } while(0)
304#define NETWORK_LOG_INFO(msg) \
305 do { if (::kcenon::network::integration::detail::static_destruction_guard::is_logging_safe()) { LOG_INFO(msg); } } while(0)
306#define NETWORK_LOG_WARN(msg) \
307 do { if (::kcenon::network::integration::detail::static_destruction_guard::is_logging_safe()) { LOG_WARNING(msg); } } while(0)
308#define NETWORK_LOG_ERROR(msg) \
309 do { if (::kcenon::network::integration::detail::static_destruction_guard::is_logging_safe()) { LOG_ERROR(msg); } } while(0)
310#define NETWORK_LOG_FATAL(msg) \
311 do { if (::kcenon::network::integration::detail::static_destruction_guard::is_logging_safe()) { LOG_CRITICAL(msg); } } while(0)
315#define NETWORK_LOG_TRACE(msg) \
316 kcenon::network::integration::logger_integration_manager::instance().log( \
317 kcenon::network::integration::log_level::trace, msg, __FILE__, __LINE__, __FUNCTION__)
319#define NETWORK_LOG_DEBUG(msg) \
320 kcenon::network::integration::logger_integration_manager::instance().log( \
321 kcenon::network::integration::log_level::debug, msg, __FILE__, __LINE__, __FUNCTION__)
323#define NETWORK_LOG_INFO(msg) \
324 kcenon::network::integration::logger_integration_manager::instance().log( \
325 kcenon::network::integration::log_level::info, msg, __FILE__, __LINE__, __FUNCTION__)
327#define NETWORK_LOG_WARN(msg) \
328 kcenon::network::integration::logger_integration_manager::instance().log( \
329 kcenon::network::integration::log_level::warn, msg, __FILE__, __LINE__, __FUNCTION__)
331#define NETWORK_LOG_ERROR(msg) \
332 kcenon::network::integration::logger_integration_manager::instance().log( \
333 kcenon::network::integration::log_level::error, msg, __FILE__, __LINE__, __FUNCTION__)
335#define NETWORK_LOG_FATAL(msg) \
336 kcenon::network::integration::logger_integration_manager::instance().log( \
337 kcenon::network::integration::log_level::fatal, msg, __FILE__, __LINE__, __FUNCTION__)
Basic console logger implementation for standalone use.
basic_logger(log_level min_level=log_level::info)
Constructor with minimum log level.
void log(log_level level, const std::string &message) override
Log a message with specified level.
std::unique_ptr< impl > pimpl_
bool is_level_enabled(log_level level) const override
Check if a log level is enabled.
void set_min_level(log_level level)
Set minimum log level.
void flush() override
Flush any buffered log messages.
log_level get_min_level() const
Get current minimum log level.
Guard against logging during static destruction.
static_destruction_guard()
static bool is_logging_safe()
Check if logging is safe (not in static destruction)
~static_destruction_guard()
static std::atomic< int > counter_
Manager for logger system integration.
static logger_integration_manager & instance()
Get the singleton instance.
logger_integration_manager()
~logger_integration_manager()
void log(log_level level, const std::string &message)
Log a message.
void set_logger(std::shared_ptr< logger_interface > logger)
Set the logger implementation.
std::shared_ptr< logger_interface > get_logger()
Get the current logger.
std::unique_ptr< impl > pimpl_
Interface for logger integration.
virtual void flush()=0
Flush any buffered log messages.
virtual bool is_level_enabled(log_level level) const =0
Check if a log level is enabled.
virtual void log(log_level level, const std::string &message)=0
Log a message with specified level.
virtual void log(log_level level, const std::string &message, const std::string &file, int line, const std::string &function)=0
Log a message with source location information.
virtual ~logger_interface()=default
Feature flags for network_system.
static_destruction_guard global_guard_
log_level
Log severity levels.
Thread system integration interface for network_system.