Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
config_strategy_interface.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
5#pragma once
6
17#include <memory>
18#include <string>
19#include <functional>
20
21namespace kcenon::logger {
22
23// Forward declaration
24struct logger_config;
25
37public:
38 virtual ~config_strategy_interface() = default;
39
44 virtual std::string get_name() const = 0;
45
53 virtual void apply(logger_config& config) const = 0;
54
62 virtual bool is_applicable() const { return true; }
63
71 virtual int priority() const { return 0; }
72};
73
77using config_strategy_factory_fn = std::function<std::unique_ptr<config_strategy_interface>()>;
78
79} // namespace kcenon::logger
Abstract interface for logger configuration strategies.
virtual bool is_applicable() const
Check if this strategy is applicable in the current context.
virtual void apply(logger_config &config) const =0
Apply this strategy to a logger configuration.
virtual int priority() const
Get the strategy priority.
virtual std::string get_name() const =0
Get the strategy name.
std::function< std::unique_ptr< config_strategy_interface >()> config_strategy_factory_fn
Factory function type for creating configuration strategies.
Configuration structure for logger with validation.