71 std::chrono::system_clock::time_point
timestamp;
81 entry.
message = std::string(msg);
82 entry.
file = loc.file_name();
83 entry.
line = loc.line();
84 entry.
function = loc.function_name();
85 entry.
timestamp = std::chrono::system_clock::now();
104 return log(level, std::string(message));
114using LoggerFactory = std::function<std::shared_ptr<ILogger>()>;
120 virtual std::shared_ptr<ILogger>
create_logger(
const std::string& name) = 0;
125 std::string
pattern =
"[%Y-%m-%d %H:%M:%S.%e] [%l] %v";
139 virtual std::shared_ptr<ILogger>
get_logger(
const std::string& name) = 0;
154 default:
return "UNKNOWN";
159 std::string upper = str;
160 std::transform(upper.begin(), upper.end(), upper.begin(),
161 [](
unsigned char c) { return static_cast<char>(std::toupper(c)); });
Result type for error handling with member function support.
Interface for modules that provide logger implementations.
virtual std::shared_ptr< ILogger > create_logger(const std::string &name)=0
virtual std::shared_ptr< ILogger > get_logger()=0
virtual ~ILoggerProvider()=default
Phase 2: Global logger registry interface.
virtual VoidResult register_logger(const std::string &name, std::shared_ptr< ILogger > logger)=0
virtual VoidResult unregister_logger(const std::string &name)=0
virtual VoidResult set_default_logger(std::shared_ptr< ILogger > logger)=0
virtual ~ILoggerRegistry()=default
virtual std::shared_ptr< ILogger > get_logger(const std::string &name)=0
virtual std::shared_ptr< ILogger > get_default_logger()=0
Standard interface for logging implementations.
virtual VoidResult log(const log_entry &entry)=0
virtual bool is_enabled(log_level level) const =0
virtual log_level get_level() const =0
virtual VoidResult log(log_level level, std::string_view message, const source_location &loc=source_location::current())
virtual ~ILogger()=default
virtual VoidResult set_level(log_level level)=0
virtual VoidResult flush()=0
virtual VoidResult log(log_level level, const std::string &message)=0
log_level from_string(const std::string &str)
Parse log level from string (case-insensitive)
std::function< std::shared_ptr< ILogger >()> LoggerFactory
Factory function type for creating logger instances.
std::string to_string(log_level level)
Convert log level to string.
log_level
Standard log levels.
Standard error information used by Result<T>.
Standard log entry structure.
source_location location
C++20 source_location (Issue #177)
std::chrono::system_clock::time_point timestamp
log_entry(log_level lvl=log_level::info, const std::string &msg="")
static log_entry create(log_level lvl, std::string_view msg, const source_location &loc=source_location::current())
Configuration for logger instances.
logger_config(log_level level, const std::string &fmt="")
C++17-compatible source_location implementation using compiler builtins.
static constexpr source_location current(const char *file=__builtin_FILE(), const char *function=__builtin_FUNCTION(), int line=__builtin_LINE()) noexcept