21#include <kcenon/common/interfaces/logger_interface.h>
22#include <kcenon/common/patterns/result.h>
25#include "../log_level.h"
26#include "../formatter/basic_formatter.h"
37 case log_level::trace:
38 return ::common::interfaces::log_level::trace;
39 case log_level::debug:
40 return ::common::interfaces::log_level::debug;
42 return ::common::interfaces::log_level::info;
43 case log_level::warning:
44 return ::common::interfaces::log_level::warning;
45 case log_level::error:
46 return ::common::interfaces::log_level::error;
47 case log_level::critical:
48 return ::common::interfaces::log_level::critical;
50 return ::common::interfaces::log_level::off;
52 return ::common::interfaces::log_level::info;
58 case ::common::interfaces::log_level::trace:
59 return log_level::trace;
60 case ::common::interfaces::log_level::debug:
61 return log_level::debug;
62 case ::common::interfaces::log_level::info:
63 return log_level::info;
64 case ::common::interfaces::log_level::warning:
65 return log_level::warning;
66 case ::common::interfaces::log_level::error:
67 return log_level::error;
68 case ::common::interfaces::log_level::critical:
69 return log_level::critical;
70 case ::common::interfaces::log_level::off:
71 return log_level::off;
73 return log_level::info;
94 ::common::VoidResult
log(::common::interfaces::log_level level,
95 const std::string& message)
override {
97 return ::common::error_info(1,
"Logger not initialized",
"logger_system");
102 return ::common::VoidResult(std::monostate{});
110 ::common::interfaces::log_level level,
111 const std::string& message,
112 const std::string& file,
114 const std::string& function)
override {
116 return ::common::error_info(1,
"Logger not initialized",
"logger_system");
122 std::string formatted = std::format(
"[{}:{}:{}] {}",
123 file, line, function, message);
125 }
catch (
const std::exception& e) {
127 return ::common::error_info(2, std::string(
"Format error: ") + e.what(),
"logger_system");
129 return ::common::VoidResult(std::monostate{});
137 const ::common::interfaces::log_entry& entry)
override {
139 return ::common::error_info(1,
"Logger not initialized",
"logger_system");
144 std::string message = entry.message;
145 if (!entry.file.empty()) {
146 message = std::format(
"[{}:{}:{}] {}",
147 entry.file, entry.line, entry.function, entry.message);
151 }
catch (
const std::exception& e) {
153 return ::common::error_info(2, std::string(
"Format error: ") + e.what(),
"logger_system");
155 return ::common::VoidResult(std::monostate{});
162 ::common::VoidResult
set_level(::common::interfaces::log_level level)
override {
164 return ::common::error_info(1,
"Logger not initialized",
"logger_system");
169 return ::common::VoidResult(std::monostate{});
175 ::common::interfaces::log_level
get_level()
const override {
177 return ::common::interfaces::log_level::off;
187 ::common::VoidResult
flush()
override {
189 return ::common::error_info(1,
"Logger not initialized",
"logger_system");
194 return ::common::VoidResult(std::monostate{});
201 std::function<
void(const ::common::interfaces::log_entry&)> callback)
override {
203 return ::common::error_info(1,
"Logger not initialized",
"logger_system");
208 return ::common::VoidResult(std::monostate{});
212 std::shared_ptr<kcenon::logger::logger>
logger_;
224 std::shared_ptr<::common::interfaces::ILogger> common_logger)
243 const std::string& message,
244 const std::string& file,
246 const std::string& function) {
270 return log_level::off;
298 std::shared_ptr<kcenon::logger::logger> lgr) {
299 return std::make_shared<logger_adapter>(lgr);
306 std::shared_ptr<::common::interfaces::ILogger> common_logger) {
307 return std::make_unique<logger_from_common_adapter>(common_logger);
Factory for creating common_system compatible loggers.
static std::unique_ptr< logger_from_common_adapter > create_from_common(std::shared_ptr<::common::interfaces::ILogger > common_logger)
Create a logger_system wrapper from common ILogger.
static std::shared_ptr<::common::interfaces::ILogger > create_from_logger(std::shared_ptr< kcenon::logger::logger > lgr)
Create a common_system ILogger from logger_system logger.
logger_adapter(std::shared_ptr< kcenon::logger::logger > lgr)
Construct adapter with logger instance.
::common::interfaces::log_level get_level() const override
Get the current log level.
::common::VoidResult log(::common::interfaces::log_level level, const std::string &message) override
Log a message with specified level.
::common::VoidResult log_entry(const ::common::interfaces::log_entry &entry) override
Log a structured entry.
::common::VoidResult set_level(::common::interfaces::log_level level) override
Set the minimum log level.
::common::VoidResult log_with_location(::common::interfaces::log_level level, const std::string &message, const std::string &file, int line, const std::string &function) override
Log a message with source location information.
~logger_adapter() override=default
::common::VoidResult register_callback(std::function< void(const ::common::interfaces::log_entry &)> callback) override
Register a callback for log events.
std::shared_ptr< kcenon::logger::logger > logger_
::common::VoidResult flush() override
Flush all pending log messages.
Adapter to use common::interfaces::ILogger in logger_system.
void set_level(log_level level)
Set log level.
void log_with_location(log_level level, const std::string &message, const std::string &file, int line, const std::string &function)
Log with source location.
std::shared_ptr<::common::interfaces::ILogger > common_logger_
void log(log_level level, const std::string &message)
Log a message.
logger_from_common_adapter(std::shared_ptr<::common::interfaces::ILogger > common_logger)
Construct adapter with common logger.
log_level get_level() const
Get log level.
common::VoidResult set_level(common::interfaces::log_level level) override
Set the minimum log level (ILogger interface)
common::interfaces::log_level get_level() const override
Get the current minimum log level (ILogger interface)
common::VoidResult log(common::interfaces::log_level level, const std::string &message) override
Log a message with specified level (ILogger interface)
common::VoidResult flush() override
Flush any buffered log messages (ILogger interface)
inline ::common::interfaces::log_level to_common_level(log_level level)
Convert log levels between logger_system and common_system.
common::interfaces::log_level log_level
log_level from_common_level(::common::interfaces::log_level level)