18#include <unordered_map>
21#include <kcenon/common/interfaces/logger_interface.h>
22#include <kcenon/common/patterns/result.h>
23#include <kcenon/common/utils/source_location.h>
42 :
impl_(std::move(lg)) {}
49 ::common::VoidResult
log(
50 ::common::interfaces::log_level level,
51 const std::string& message)
override {
53 return ::common::VoidResult(
54 ::common::error_info(1,
"Logger not initialized",
"kcenon::logger"));
59 impl_->log(logger_level, message);
60 return ::common::VoidResult(std::monostate{});
61 }
catch (
const std::exception& e) {
62 return ::common::VoidResult(
63 ::common::error_info(2, e.what(),
"kcenon::logger"));
70 ::common::VoidResult
log(
71 ::common::interfaces::log_level level,
72 std::string_view message,
73 const ::kcenon::common::source_location& loc = ::kcenon::common::source_location::current())
override {
75 return ::common::VoidResult(
76 ::common::error_info(1,
"Logger not initialized",
"kcenon::logger"));
81 impl_->log(logger_level, message, loc);
82 return ::common::VoidResult(std::monostate{});
83 }
catch (
const std::exception& e) {
84 return ::common::VoidResult(
85 ::common::error_info(2, e.what(),
"kcenon::logger"));
92 ::common::VoidResult
log(
93 const ::common::interfaces::log_entry& entry)
override {
95 return ::common::VoidResult(
96 ::common::error_info(1,
"Logger not initialized",
"kcenon::logger"));
103 return impl_->log(entry);
104 }
catch (
const std::exception& e) {
105 return ::common::VoidResult(
106 ::common::error_info(2, e.what(),
"kcenon::logger"));
113 bool is_enabled(::common::interfaces::log_level level)
const override {
118 return impl_->is_enabled(logger_level);
125 ::common::interfaces::log_level level)
override {
127 return ::common::VoidResult(
128 ::common::error_info(1,
"Logger not initialized",
"kcenon::logger"));
133 impl_->set_level(logger_level);
134 return ::common::VoidResult(std::monostate{});
135 }
catch (
const std::exception& e) {
136 return ::common::VoidResult(
137 ::common::error_info(2, e.what(),
"kcenon::logger"));
144 ::common::interfaces::log_level
get_level()
const override {
146 return ::common::interfaces::log_level::info;
148 auto logger_level =
impl_->get_level();
155 ::common::VoidResult
flush()
override {
157 return ::common::VoidResult(
158 ::common::error_info(1,
"Logger not initialized",
"kcenon::logger"));
163 return ::common::VoidResult(std::monostate{});
164 }
catch (
const std::exception& e) {
165 return ::common::VoidResult(
166 ::common::error_info(2, e.what(),
"kcenon::logger"));
184 case ::common::interfaces::log_level::trace:
185 return log_level::trace;
186 case ::common::interfaces::log_level::debug:
187 return log_level::debug;
188 case ::common::interfaces::log_level::info:
189 return log_level::info;
190 case ::common::interfaces::log_level::warning:
191 return log_level::warning;
192 case ::common::interfaces::log_level::error:
193 return log_level::error;
194 case ::common::interfaces::log_level::critical:
195 return log_level::critical;
196 case ::common::interfaces::log_level::off:
198 return log_level::off;
207 case log_level::trace:
208 return ::common::interfaces::log_level::trace;
209 case log_level::debug:
210 return ::common::interfaces::log_level::debug;
211 case log_level::info:
212 return ::common::interfaces::log_level::info;
213 case log_level::warning:
214 return ::common::interfaces::log_level::warning;
215 case log_level::error:
216 return ::common::interfaces::log_level::error;
217 case log_level::critical:
218 return ::common::interfaces::log_level::critical;
221 return ::common::interfaces::log_level::off;
235 std::shared_ptr<logger> lg) {
236 return std::make_shared<common_system_logger_adapter>(lg);
Factory for creating common_system compatible loggers.
static std::shared_ptr<::common::interfaces::ILogger > create_common_logger(std::shared_ptr< logger > lg)
Create a common_system ILogger from kcenon::logger logger.
Adapter to expose kcenon::logger as common::interfaces::ILogger.
::common::VoidResult log(::common::interfaces::log_level level, const std::string &message) override
Log a message with specified level.
::common::VoidResult set_level(::common::interfaces::log_level level) override
Set the minimum log level.
::common::interfaces::log_level convert_level_to_common(log_level level)
Convert kcenon::logger log level to common log level.
::common::VoidResult flush() override
Flush any buffered log messages.
common_system_logger_adapter(std::shared_ptr< logger > lg)
Construct adapter with kcenon::logger logger.
std::shared_ptr< logger > impl_
static log_level convert_level_from_common(::common::interfaces::log_level level)
Convert common log level to kcenon::logger log level.
::common::VoidResult log(::common::interfaces::log_level level, std::string_view message, const ::kcenon::common::source_location &loc=::kcenon::common::source_location::current()) override
Log a message with source location information (C++20 style)
bool is_enabled(::common::interfaces::log_level level) const override
Check if logging is enabled for the specified level.
std::shared_ptr< logger > get_impl() const
Get access to the underlying logger.
::common::VoidResult log(const ::common::interfaces::log_entry &entry) override
Log a structured entry.
::common::interfaces::log_level get_level() const override
Get the current minimum log level.
~common_system_logger_adapter() override=default
High-performance, thread-safe logging system with asynchronous capabilities.
common::interfaces::log_level log_level