Logger System
0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
filtered_writer.cpp
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
#include <
kcenon/logger/writers/filtered_writer.h
>
6
7
#include <
kcenon/logger/interfaces/log_entry.h
>
8
9
#include <stdexcept>
10
11
namespace
kcenon::logger
{
12
13
filtered_writer::filtered_writer
(std::unique_ptr<log_writer_interface> wrapped,
14
std::unique_ptr<log_filter_interface> filter)
15
:
decorator_writer_base
(std::move(wrapped),
"filtered"
), filter_(std::move(filter)) {
16
// Base class constructor handles nullptr check for wrapped writer
17
}
18
19
common::VoidResult
filtered_writer::write
(
const
log_entry
& entry) {
20
// If no filter, pass through all entries
21
if
(!
filter_
) {
22
return
wrapped
().
write
(entry);
23
}
24
25
// Check if entry passes the filter
26
if
(
filter_
->should_log(entry)) {
27
return
wrapped
().
write
(entry);
28
}
29
30
// Entry filtered out - return success (not an error)
31
return
common::ok
();
32
}
33
34
std::string
filtered_writer::get_name
()
const
{
35
if
(
filter_
) {
36
return
"filtered("
+
filter_
->get_name() +
")_"
+
wrapped
().
get_name
();
37
}
38
// Use base class default format when no filter
39
return
decorator_writer_base::get_name
();
40
}
41
42
const
log_filter_interface
*
filtered_writer::get_filter
()
const
{
43
return
filter_
.get();
44
}
45
46
// Factory function
47
std::unique_ptr<filtered_writer>
make_filtered_writer
(
48
std::unique_ptr<log_writer_interface> writer,
49
std::unique_ptr<log_filter_interface> filter) {
50
return
std::make_unique<filtered_writer>(std::move(writer), std::move(filter));
51
}
52
53
}
// namespace kcenon::logger
kcenon::common::VoidResult
Definition
error_codes.h:116
kcenon::logger::decorator_writer_base
Abstract base class for decorator pattern log writers.
Definition
decorator_writer_base.h:71
kcenon::logger::decorator_writer_base::get_name
std::string get_name() const override
Get the name of this writer.
Definition
decorator_writer_base.cpp:30
kcenon::logger::decorator_writer_base::wrapped
log_writer_interface & wrapped() noexcept
Access the wrapped writer (non-const)
Definition
decorator_writer_base.cpp:42
kcenon::logger::filtered_writer::get_filter
const log_filter_interface * get_filter() const
Get the current filter.
Definition
filtered_writer.cpp:42
kcenon::logger::filtered_writer::filtered_writer
filtered_writer(std::unique_ptr< log_writer_interface > wrapped, std::unique_ptr< log_filter_interface > filter)
Construct a filtered writer.
Definition
filtered_writer.cpp:13
kcenon::logger::filtered_writer::filter_
std::unique_ptr< log_filter_interface > filter_
Definition
filtered_writer.h:137
kcenon::logger::filtered_writer::write
common::VoidResult write(const log_entry &entry) override
Write a log entry if it passes the filter.
Definition
filtered_writer.cpp:19
kcenon::logger::filtered_writer::get_name
std::string get_name() const override
Get the name of this writer.
Definition
filtered_writer.cpp:34
kcenon::logger::log_filter_interface
Interface for log filters.
Definition
log_filter_interface.h:28
kcenon::logger::log_writer_interface::get_name
virtual std::string get_name() const =0
kcenon::logger::log_writer_interface::write
virtual common::VoidResult write(const log_entry &entry)=0
Write a log entry.
filtered_writer.h
Decorator that applies filtering to wrapped log writers.
log_entry.h
Data structures for representing log entries and source locations kcenon.
kcenon::common::ok
VoidResult ok()
Definition
error_codes.h:149
kcenon::logger
Definition
common_logger_adapter.h:29
kcenon::logger::make_filtered_writer
std::unique_ptr< filtered_writer > make_filtered_writer(std::unique_ptr< log_writer_interface > writer, std::unique_ptr< log_filter_interface > filter)
Factory function to create a filtered writer.
Definition
filtered_writer.cpp:47
kcenon::logger::log_entry
Represents a single log entry with all associated metadata.
Definition
log_entry.h:155
src
impl
writers
filtered_writer.cpp
Generated by
1.12.0