Logger System 0.1.3
High-performance C++20 thread-safe logging system with asynchronous capabilities
Loading...
Searching...
No Matches
kcenon::logger::composite_filter Class Reference

Combine multiple filters with AND/OR logic. More...

#include <log_filter.h>

Inheritance diagram for kcenon::logger::composite_filter:
Inheritance graph
Collaboration diagram for kcenon::logger::composite_filter:
Collaboration graph

Public Types

enum class  logic_type { AND , OR }
 

Public Member Functions

 composite_filter (logic_type logic=logic_type::AND)
 
void add_filter (std::unique_ptr< log_filter > filter)
 
bool should_log (log_level level, const std::string &message, const std::string &file, int line, const std::string &function) const override
 Check if a log entry should be processed (legacy API)
 
std::string get_name () const override
 Get the name of this filter.
 
- Public Member Functions inherited from kcenon::logger::log_filter
virtual ~log_filter ()=default
 
virtual bool should_log (const log_entry &entry) const override
 Check if a log entry should be processed (new interface)
 
- Public Member Functions inherited from kcenon::logger::log_filter_interface
virtual ~log_filter_interface ()=default
 

Private Attributes

logic_type logic_
 
std::vector< std::unique_ptr< log_filter > > filters_
 

Detailed Description

Combine multiple filters with AND/OR logic.

Definition at line 167 of file log_filter.h.

Member Enumeration Documentation

◆ logic_type

Enumerator
AND 
OR 

Definition at line 169 of file log_filter.h.

169 {
170 AND, // All filters must pass
171 OR // At least one filter must pass
172 };

Constructor & Destructor Documentation

◆ composite_filter()

kcenon::logger::composite_filter::composite_filter ( logic_type logic = logic_type::AND)
inlineexplicit

Definition at line 174 of file log_filter.h.

175 : logic_(logic) {}

Member Function Documentation

◆ add_filter()

void kcenon::logger::composite_filter::add_filter ( std::unique_ptr< log_filter > filter)
inline

Definition at line 177 of file log_filter.h.

177 {
178 filters_.push_back(std::move(filter));
179 }
std::vector< std::unique_ptr< log_filter > > filters_
Definition log_filter.h:213

References filters_.

◆ get_name()

std::string kcenon::logger::composite_filter::get_name ( ) const
inlineoverridevirtual

Get the name of this filter.

Returns
Filter name for identification

Reimplemented from kcenon::logger::log_filter.

Definition at line 207 of file log_filter.h.

207 {
208 return "composite_filter";
209 }

◆ should_log()

bool kcenon::logger::composite_filter::should_log ( log_level level,
const std::string & message,
const std::string & file,
int line,
const std::string & function ) const
inlineoverridevirtual

Check if a log entry should be processed (legacy API)

Parameters
levelLog level
messageLog message
fileSource file
lineSource line
functionFunction name
Returns
true if the log should be processed

Implements kcenon::logger::log_filter.

Definition at line 181 of file log_filter.h.

185 {
186 if (filters_.empty()) {
187 return true; // No filters = pass all
188 }
189
190 if (logic_ == logic_type::AND) {
191 for (const auto& filter : filters_) {
192 if (!filter->should_log(level, message, file, line, function)) {
193 return false;
194 }
195 }
196 return true;
197 } else { // OR logic
198 for (const auto& filter : filters_) {
199 if (filter->should_log(level, message, file, line, function)) {
200 return true;
201 }
202 }
203 return false;
204 }
205 }

References AND, filters_, and logic_.

Member Data Documentation

◆ filters_

std::vector<std::unique_ptr<log_filter> > kcenon::logger::composite_filter::filters_
private

Definition at line 213 of file log_filter.h.

Referenced by add_filter(), and should_log().

◆ logic_

logic_type kcenon::logger::composite_filter::logic_
private

Definition at line 212 of file log_filter.h.

Referenced by should_log().


The documentation for this class was generated from the following file: