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