Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
LoggerFactories.h
1
2#ifndef ANTARESXPANSION_LOGGERFACTORIES_H
3#define ANTARESXPANSION_LOGGERFACTORIES_H
4
5#include <filesystem>
6
7#include "antares-xpansion/benders/logger/Master.h"
8#include "antares-xpansion/benders/logger/MathLogger.h"
9#include "antares-xpansion/benders/logger/UserFile.h"
10#include "antares-xpansion/xpansion_interfaces/ILogger.h"
11Logger build_void_logger();
12
14{
15private:
16 Logger logger;
17
18public:
19 explicit FileAndStdoutLoggerFactory(const std::filesystem::path& report_file_path_string,
20 bool expert_log_at_console)
21 {
22 auto masterLogger = std::make_shared<xpansion::logger::Master>();
23 auto user_file = std::make_shared<xpansion::logger::UserFile>(report_file_path_string);
24 masterLogger->addLogger(user_file);
25
26 if (!expert_log_at_console)
27 {
28 auto loggerUser = std::make_shared<xpansion::logger::User>(std::cout);
29 masterLogger->addLogger(loggerUser);
30 }
31
32 logger = masterLogger;
33 }
34
35 inline Logger get_logger() const
36 {
37 return logger;
38 }
39};
40
42{
43 MathLoggerDriver math_logger_driver;
44
45public:
46 explicit MathLoggerFactory(const BENDERSMETHOD& method,
47 bool console_log,
48 const std::filesystem::path& math_logs_file_path = "")
49 {
50 if (math_logs_file_path != "")
51 {
52 auto math_logger_file = std::make_shared<MathLoggerFile>(method, math_logs_file_path);
53 math_logger_driver.add_logger(math_logger_file);
54 }
55
56 if (console_log)
57 {
58 auto math_logger_ostream = std::make_shared<MathLoggerOstream>(method);
59
60 math_logger_driver.add_logger(math_logger_ostream);
61 }
62 }
63
64 explicit MathLoggerFactory() = default;
65
66 std::shared_ptr<MathLoggerDriver> get_logger()
67 {
68 return std::make_shared<MathLoggerDriver>(math_logger_driver);
69 }
70
71 static std::shared_ptr<MathLoggerDriver> get_void_logger()
72 {
73 return std::make_shared<MathLoggerDriver>();
74 }
75};
76#endif // ANTARESXPANSION_LOGGERFACTORIES_H
Definition LoggerFactories.h:14
Definition BendersMathLogger.h:213
Definition LoggerFactories.h:42