7#include <kcenon/common/interfaces/logger_interface.h>
8#include <kcenon/common/interfaces/global_logger_registry.h>
23class mock_logger :
public kcenon::common::interfaces::ILogger {
25 using log_level = kcenon::common::interfaces::log_level;
26 using log_entry = kcenon::common::interfaces::log_entry;
34 return VoidResult::ok({});
37 std::lock_guard<std::mutex> lock(
mutex_);
38 auto& stream = (level >= log_level::error) ? std::cerr : std::cout;
42 << message << std::endl;
44 return VoidResult::ok({});
48 std::string_view message,
51 return VoidResult::ok({});
54 std::lock_guard<std::mutex> lock(
mutex_);
55 auto& stream = (level >= log_level::error) ? std::cerr : std::cout;
60 std::string file = loc.file_name();
62 size_t pos = file.find_last_of(
"/\\");
63 std::string filename = (pos != std::string::npos) ? file.substr(pos + 1) : file;
64 stream << filename <<
":" << loc.line() <<
" (" << loc.function_name() <<
") ";
67 stream << message << std::endl;
69 return VoidResult::ok({});
74 return VoidResult::ok({});
77 std::lock_guard<std::mutex> lock(
mutex_);
78 auto& stream = (entry.level >= log_level::error) ? std::cerr : std::cout;
83 if (!entry.file.empty()) {
84 size_t pos = entry.file.find_last_of(
"/\\");
85 std::string filename = (pos != std::string::npos) ? entry.file.substr(pos + 1) : entry.file;
86 stream << filename <<
":" << entry.line <<
" (" << entry.function <<
") ";
89 stream << entry.message << std::endl;
91 return VoidResult::ok({});
95 return static_cast<int>(level) >=
static_cast<int>(
min_level_);
100 return VoidResult::ok({});
110 return VoidResult::ok({});
114 std::cout <<
"[MockLogger] Started" << std::endl;
119 std::cout <<
"[MockLogger] Stopped" << std::endl;
124 auto now = std::chrono::system_clock::now();
125 auto time_t = std::chrono::system_clock::to_time_t(now);
126 auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
127 now.time_since_epoch()) % 1000;
129 std::ostringstream oss;
130 oss << std::put_time(std::localtime(&time_t),
"%H:%M:%S");
131 oss <<
"." << std::setfill(
'0') << std::setw(3) << ms.count();
136 return std::string(kcenon::common::interfaces::to_string(level));
Mock logger implementation for demonstration.
VoidResult log(const log_entry &entry) override
VoidResult flush() override
VoidResult log(log_level level, const std::string &message) override
VoidResult set_level(log_level level) override
kcenon::common::interfaces::log_entry log_entry
kcenon::common::VoidResult VoidResult
kcenon::common::interfaces::log_level log_level
std::string level_to_string(log_level level) const
kcenon::common::source_location source_location
std::string format_time() const
VoidResult log(log_level level, std::string_view message, const source_location &loc=source_location::current()) override
bool is_enabled(log_level level) const override
log_level get_level() const override