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

Log router for directing messages to specific writers. More...

#include <log_router.h>

Collaboration diagram for kcenon::logger::routing::log_router:
Collaboration graph

Public Member Functions

void add_route (route_config config)
 Add a routing rule.
 
void set_exclusive_routes (bool exclusive)
 Set exclusive routing mode.
 
void clear_routes ()
 Clear all routes.
 
std::vector< std::string > get_writers_for_log (const log_entry &entry) const
 Get writer names for a log entry.
 
bool is_exclusive_routing () const
 Check if exclusive routing is enabled.
 

Private Attributes

std::vector< route_configroutes_
 
bool exclusive_routes_ = false
 

Detailed Description

Log router for directing messages to specific writers.

See also
router_builder
route_config
log_filter_interface

Definition at line 49 of file log_router.h.

Member Function Documentation

◆ add_route()

void kcenon::logger::routing::log_router::add_route ( route_config config)
inline

Add a routing rule.

Definition at line 58 of file log_router.h.

58 {
59 routes_.push_back(std::move(config));
60 }
std::vector< route_config > routes_
Definition log_router.h:51

References routes_.

Referenced by kcenon::logger::routing::router_builder::route_to(), and kcenon::logger::routing::router_builder::route_to().

Here is the caller graph for this function:

◆ clear_routes()

void kcenon::logger::routing::log_router::clear_routes ( )
inline

Clear all routes.

Definition at line 72 of file log_router.h.

72 {
73 routes_.clear();
74 }

References routes_.

◆ get_writers_for_log()

std::vector< std::string > kcenon::logger::routing::log_router::get_writers_for_log ( const log_entry & entry) const
inline

Get writer names for a log entry.

Definition at line 79 of file log_router.h.

79 {
80 std::vector<std::string> writers;
81
82 for (const auto& route : routes_) {
83 if (route.filter && route.filter->should_log(entry)) {
84 writers.insert(writers.end(), route.writer_names.begin(), route.writer_names.end());
85 if (route.stop_propagation) {
86 break;
87 }
88 }
89 }
90
91 return writers;
92 }

References routes_.

◆ is_exclusive_routing()

bool kcenon::logger::routing::log_router::is_exclusive_routing ( ) const
inline

Check if exclusive routing is enabled.

Definition at line 97 of file log_router.h.

References exclusive_routes_.

◆ set_exclusive_routes()

void kcenon::logger::routing::log_router::set_exclusive_routes ( bool exclusive)
inline

Set exclusive routing mode.

Definition at line 65 of file log_router.h.

65 {
66 exclusive_routes_ = exclusive;
67 }

References exclusive_routes_.

Member Data Documentation

◆ exclusive_routes_

bool kcenon::logger::routing::log_router::exclusive_routes_ = false
private

Definition at line 52 of file log_router.h.

Referenced by is_exclusive_routing(), and set_exclusive_routes().

◆ routes_

std::vector<route_config> kcenon::logger::routing::log_router::routes_
private

Definition at line 51 of file log_router.h.

Referenced by add_route(), clear_routes(), and get_writers_for_log().


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