FinanceSim 0.1.0
Financial Simulation Library
Loading...
Searching...
No Matches
log_writer.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <memory>
5#include <fstream>
6#include "core/event.hpp"
7#include "core/log_level.hpp"
8
9namespace financesim {
10
12class LogWriter {
13public:
14 virtual ~LogWriter() = default;
15
17 virtual void write(const Event& event, LogLevel level) = 0;
18
20 virtual void flush() = 0;
21
23 virtual void close() = 0;
24
25protected:
26 LogWriter() = default;
27};
28
29using LogWriterPtr = std::shared_ptr<LogWriter>;
30
32class ConsoleWriter : public LogWriter {
33public:
34 ConsoleWriter() = default;
35 ~ConsoleWriter() override = default;
36
37 void write(const Event& event, LogLevel level) override;
38 void flush() override;
39 void close() override;
40};
41
43class JsonWriter : public LogWriter {
44public:
45 explicit JsonWriter(const std::string& filename);
46 ~JsonWriter() override;
47
48 void write(const Event& event, LogLevel level) override;
49 void flush() override;
50 void close() override;
51
52private:
53 std::ofstream file_;
54 std::string filename_;
55};
56
57} // namespace financesim
Writes formatted log output to console (stdout)
void flush() override
Flush any buffered output.
~ConsoleWriter() override=default
void write(const Event &event, LogLevel level) override
Write an event to the output.
void close() override
Close the writer and release resources.
Base class for all typed events in the simulation.
Definition event.hpp:10
Writes events as JSON lines to a file.
void close() override
Close the writer and release resources.
void write(const Event &event, LogLevel level) override
Write an event to the output.
void flush() override
Flush any buffered output.
Interface for log output writers.
virtual void flush()=0
Flush any buffered output.
virtual void close()=0
Close the writer and release resources.
virtual ~LogWriter()=default
virtual void write(const Event &event, LogLevel level)=0
Write an event to the output.
std::shared_ptr< LogWriter > LogWriterPtr
LogLevel
Log severity levels for filtering.
Definition log_level.hpp:6