6#include <brenta/logger.hpp>
14const std::string Logger::subsystem_name =
"logger";
16bool Logger::initialized =
false;
22std::string Logger::event_name(
enum Event event)
26 case Logger::Event::Lifetime:
return "lifetime";
27 default:
return "unknown";
31std::expected<void, Subsystem::Error> Logger::initialize()
33 if (this->is_initialized())
return {};
35 oak::set_level(Logger::init_config.log_level);
37 for (
auto event :
Logger::init_config.events)
38 oak::enable_event(event,
Logger::event_name(event));
40 if (Logger::init_config.flags.size() == 0)
43 oak::set_flags(oak::Flags::Level);
47 oak::set_flags(oak::Flags::None);
48 for (
auto& flag :
Logger::init_config.flags)
52 auto file_name = Logger::init_config.log_file;
55 oak::add_writer<oak::FileWriter>(file_name);
56 INFO(
"{}: set logging to file to {}", Logger::subsystem_name, file_name.string());
59 Logger::initialized =
true;
60 INFO(
"{}: initialized", Logger::subsystem_name);
64std::expected<void, Subsystem::Error> Logger::terminate()
66 if (!this->is_initialized())
return {};
68 Logger::initialized =
false;
72std::string Logger::name()
74 return Logger::subsystem_name;
77bool Logger::is_initialized()
79 return Logger::initialized;
98 this->conf.log_level = log_level;
104 this->conf.log_file = log_file;
110 this->conf.events.push_back(event);
116 this->conf.flags.push_back(flag);
122 Logger::init_config = this->conf;
123 return Logger::instance();