Common System 0.2.0
Common interfaces and patterns for system integration
Loading...
Searching...
No Matches
log_functions.h
Go to the documentation of this file.
1// BSD 3-Clause License
2// Copyright (c) 2025, 🍀☀🌕🌥 🌊
3// See the LICENSE file in the project root for full license information.
4
41#pragma once
42
45
46#include <memory>
47#include <string>
48#include <string_view>
49
51
67 std::string_view message,
69 auto logger = interfaces::get_logger();
70 if (!logger->is_enabled(level)) {
71 return VoidResult::ok({});
72 }
73 // Use the new source_location-based interface (Issue #177)
74 return logger->log(level, message, loc);
75}
76
92 std::string_view message,
93 const std::shared_ptr<interfaces::ILogger>& logger,
95 if (!logger || !logger->is_enabled(level)) {
96 return VoidResult::ok({});
97 }
98 // Use the new source_location-based interface (Issue #177)
99 return logger->log(level, message, loc);
100}
101
116 std::string_view message,
117 const std::string& logger_name,
119 auto logger = interfaces::get_logger(logger_name);
120 if (!logger->is_enabled(level)) {
121 return VoidResult::ok({});
122 }
123 // Use the new source_location-based interface (Issue #177)
124 return logger->log(level, message, loc);
125}
126
127// =============================================================================
128// Level-specific logging functions
129// =============================================================================
130
141inline VoidResult log_trace(std::string_view message,
143 return log(interfaces::log_level::trace, message, loc);
144}
145
155inline VoidResult log_debug(std::string_view message,
157 return log(interfaces::log_level::debug, message, loc);
158}
159
169inline VoidResult log_info(std::string_view message,
171 return log(interfaces::log_level::info, message, loc);
172}
173
184inline VoidResult log_warning(std::string_view message,
186 return log(interfaces::log_level::warning, message, loc);
187}
188
199inline VoidResult log_error(std::string_view message,
201 return log(interfaces::log_level::error, message, loc);
202}
203
214inline VoidResult log_critical(std::string_view message,
216 return log(interfaces::log_level::critical, message, loc);
217}
218
219// =============================================================================
220// Level-specific logging functions with named logger
221// Note: Using "_to" suffix to avoid overload ambiguity with source_location
222// =============================================================================
223
232inline VoidResult log_trace_to(const std::string& logger_name,
233 std::string_view message,
235 return log(interfaces::log_level::trace, message, logger_name, loc);
236}
237
246inline VoidResult log_debug_to(const std::string& logger_name,
247 std::string_view message,
249 return log(interfaces::log_level::debug, message, logger_name, loc);
250}
251
260inline VoidResult log_info_to(const std::string& logger_name,
261 std::string_view message,
263 return log(interfaces::log_level::info, message, logger_name, loc);
264}
265
274inline VoidResult log_warning_to(const std::string& logger_name,
275 std::string_view message,
277 return log(interfaces::log_level::warning, message, logger_name, loc);
278}
279
288inline VoidResult log_error_to(const std::string& logger_name,
289 std::string_view message,
291 return log(interfaces::log_level::error, message, logger_name, loc);
292}
293
302inline VoidResult log_critical_to(const std::string& logger_name,
303 std::string_view message,
305 return log(interfaces::log_level::critical, message, logger_name, loc);
306}
307
308// =============================================================================
309// Utility functions
310// =============================================================================
311
322 return interfaces::get_logger()->is_enabled(level);
323}
324
332inline bool is_enabled(interfaces::log_level level, const std::string& logger_name) {
333 return interfaces::get_logger(logger_name)->is_enabled(level);
334}
335
342 return interfaces::get_logger()->flush();
343}
344
351inline VoidResult flush(const std::string& logger_name) {
352 return interfaces::get_logger(logger_name)->flush();
353}
354
355} // namespace kcenon::common::logging
Result type for error handling with member function support.
Definition core.cppm:165
static Result< T > ok(U &&value)
Create a successful result with value (static factory)
Definition core.h:223
GlobalLoggerRegistry implementation for runtime binding.
std::shared_ptr< ILogger > get_logger()
Get the default logger from the global registry.
log_level
Standard log levels.
VoidResult log_warning(std::string_view message, const source_location &loc=source_location::current())
Log a warning-level message.
bool is_enabled(interfaces::log_level level)
Check if a log level is enabled for the default logger.
VoidResult log_debug(std::string_view message, const source_location &loc=source_location::current())
Log a debug-level message.
VoidResult log_critical(std::string_view message, const source_location &loc=source_location::current())
Log a critical-level message.
VoidResult log_critical_to(const std::string &logger_name, std::string_view message, const source_location &loc=source_location::current())
Log a critical-level message to a named logger.
VoidResult log_warning_to(const std::string &logger_name, std::string_view message, const source_location &loc=source_location::current())
Log a warning-level message to a named logger.
VoidResult log_error(std::string_view message, const source_location &loc=source_location::current())
Log an error-level message.
VoidResult log_trace_to(const std::string &logger_name, std::string_view message, const source_location &loc=source_location::current())
Log a trace-level message to a named logger.
VoidResult log(interfaces::log_level level, std::string_view message, const source_location &loc=source_location::current())
Log a message with the specified level and source location.
VoidResult log_debug_to(const std::string &logger_name, std::string_view message, const source_location &loc=source_location::current())
Log a debug-level message to a named logger.
VoidResult log_info_to(const std::string &logger_name, std::string_view message, const source_location &loc=source_location::current())
Log an info-level message to a named logger.
VoidResult flush()
Flush all buffered log messages for the default logger.
VoidResult log_error_to(const std::string &logger_name, std::string_view message, const source_location &loc=source_location::current())
Log an error-level message to a named logger.
VoidResult log_trace(std::string_view message, const source_location &loc=source_location::current())
Log a trace-level message.
VoidResult log_info(std::string_view message, const source_location &loc=source_location::current())
Log an info-level message.
C++17-compatible source_location implementation.
C++17-compatible source_location implementation using compiler builtins.
Definition utils.cppm:54
static constexpr source_location current(const char *file=__builtin_FILE(), const char *function=__builtin_FUNCTION(), int line=__builtin_LINE()) noexcept