FinanceSim 0.1.0
Financial Simulation Library
Loading...
Searching...
No Matches
logger.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4#include <memory>
5#include <string>
6#include <set>
7#include "core/event_bus.hpp"
8#include "core/log_level.hpp"
9#include "core/log_writer.hpp"
10
11namespace financesim {
12
15class Logger {
16public:
18 ~Logger();
19
20 // Non-copyable
21 Logger(const Logger&) = delete;
22 Logger& operator=(const Logger&) = delete;
23
26
28 LogLevel level() const { return level_; }
29
31 void add_writer(LogWriterPtr writer);
32
34 void clear_writers();
35
38 void add_type_filter(const std::string& type_name);
39
41 void clear_type_filters();
42
45 void add_source_filter(const std::string& source_id);
46
49
51 void set_time_range(SimTime start, SimTime end);
52
54 void clear_time_range();
55
57 void attach(EventBus& bus);
58
60 void detach();
61
63 void flush();
64
66 bool is_attached() const { return subscription_id_ != 0; }
67
68private:
69 void on_event(const EventPtr& event);
70 bool passes_filters(const Event& event) const;
71 LogLevel classify_event(const Event& event) const;
72
74 std::vector<LogWriterPtr> writers_;
75 std::set<std::string> type_filters_;
76 std::set<std::string> source_filters_;
79 bool time_filter_active_ = false;
80
81 EventBus* bus_ = nullptr;
83};
84
85} // namespace financesim
Base class for all typed events in the simulation.
Definition event.hpp:10
LogLevel classify_event(const Event &event) const
Definition logger.cpp:118
std::set< std::string > source_filters_
Definition logger.hpp:76
void add_type_filter(const std::string &type_name)
Definition logger.cpp:30
bool time_filter_active_
Definition logger.hpp:79
void add_writer(LogWriterPtr writer)
Add a writer for output (Logger takes ownership via shared_ptr)
Definition logger.cpp:19
EventBus * bus_
Definition logger.hpp:81
SimTime time_start_
Definition logger.hpp:77
void detach()
Detach from the current EventBus (stops logging)
Definition logger.cpp:66
void add_source_filter(const std::string &source_id)
Definition logger.cpp:38
void clear_writers()
Remove all writers.
Definition logger.cpp:23
std::set< std::string > type_filters_
Definition logger.hpp:75
bool is_attached() const
Check if attached to an EventBus.
Definition logger.hpp:66
void set_time_range(SimTime start, SimTime end)
Set time range filter.
Definition logger.cpp:46
void on_event(const EventPtr &event)
Definition logger.cpp:80
LogLevel level() const
Get the current log level.
Definition logger.hpp:28
Logger & operator=(const Logger &)=delete
SimTime time_end_
Definition logger.hpp:78
void set_level(LogLevel level)
Set the minimum log level (events below this level are ignored)
Definition logger.cpp:15
void clear_type_filters()
Clear all type filters (log all types)
Definition logger.cpp:34
Logger(const Logger &)=delete
void attach(EventBus &bus)
Attach to an EventBus (starts logging)
Definition logger.cpp:56
LogLevel level_
Definition logger.hpp:73
bool passes_filters(const Event &event) const
Definition logger.cpp:92
void clear_source_filters()
Clear all source filters (log all sources)
Definition logger.cpp:42
void flush()
Flush all writers.
Definition logger.cpp:74
std::vector< LogWriterPtr > writers_
Definition logger.hpp:74
void clear_time_range()
Clear time range filter.
Definition logger.cpp:52
SubscriptionId subscription_id_
Definition logger.hpp:82
double SimTime
Represents a point in simulation time (continuous, in days)
Definition time.hpp:6
std::shared_ptr< LogWriter > LogWriterPtr
std::size_t SubscriptionId
Subscription handle for unsubscribing.
Definition event_bus.hpp:16
std::shared_ptr< const Event > EventPtr
Definition event.hpp:32
LogLevel
Log severity levels for filtering.
Definition log_level.hpp:6