Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
filtered_writer.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
40
42
43#include <memory>
44
45namespace kcenon::logger {
46
71public:
84 explicit filtered_writer(std::unique_ptr<log_writer_interface> wrapped,
85 std::unique_ptr<log_filter_interface> filter);
86
90 ~filtered_writer() override = default;
91
92 // Non-copyable
95
96 // Movable
97 filtered_writer(filtered_writer&&) noexcept = default;
98 filtered_writer& operator=(filtered_writer&&) noexcept = default;
99
113 common::VoidResult write(const log_entry& entry) override;
114
125 std::string get_name() const override;
126
134 const log_filter_interface* get_filter() const;
135
136private:
137 std::unique_ptr<log_filter_interface> filter_;
138};
139
151std::unique_ptr<filtered_writer> make_filtered_writer(
152 std::unique_ptr<log_writer_interface> writer,
153 std::unique_ptr<log_filter_interface> filter);
154
155} // namespace kcenon::logger
Abstract base class for decorator pattern log writers.
Decorator that applies a filter to a wrapped writer.
~filtered_writer() override=default
Destructor.
filtered_writer(const filtered_writer &)=delete
filtered_writer & operator=(const filtered_writer &)=delete
filtered_writer(filtered_writer &&) noexcept=default
Base interface for all log writers and decorators.
Base class for decorator pattern writers.
Interface for log filters used by filtered_logger.
DLL export/import macros for logger_system shared library support.
#define LOGGER_SYSTEM_API
Represents a single log entry with all associated metadata.
Definition log_entry.h:155