1#ifndef __PROBLEMGENERATIONLOGGER_H__
2#define __PROBLEMGENERATIONLOGGER_H__
14#include "antares-xpansion/xpansion_interfaces/ILogger.h"
15#include "antares-xpansion/xpansion_interfaces/LoggerUtils.h"
17namespace ProblemGenerationLog {
24 const std::string& context)
override = 0;
25 void PrintIterationSeparatorBegin()
override = 0;
26 void PrintIterationSeparatorEnd()
override = 0;
28 virtual std::ostream& GetOstreamObject() = 0;
29 LogUtils::LOGGERTYPE Type()
const {
return type_; }
32 void SetType(
const LogUtils::LOGGERTYPE& type) { type_ = type; }
35 LogUtils::LOGGERTYPE type_ = LogUtils::LOGGERTYPE::NONE;
37using ProblemGenerationILoggerSharedPointer =
38 std::shared_ptr<ProblemGenerationILogger>;
41 std::filesystem::path logFilePath_;
42 std::ofstream logFile_;
47 const std::filesystem::path& logFilePath);
50 const LogUtils::LOGLEVEL log_level,
51 const std::string& context)
override;
52 void PrintIterationSeparatorBegin()
override;
53 void PrintIterationSeparatorEnd()
override;
54 std::ostream& GetOstreamObject()
override;
59 std::ostream& stream_;
66 const LogUtils::LOGLEVEL log_level,
67 const std::string& context)
override;
68 void PrintIterationSeparatorBegin()
override;
69 void PrintIterationSeparatorEnd()
override;
70 std::ostream& GetOstreamObject()
override;
75 LogUtils::LOGLEVEL log_level_;
76 std::string context_ =
"Unknown Context";
80 : log_level_(log_level) {}
83 void AddLogger(
const ProblemGenerationILoggerSharedPointer& logger);
86 const LogUtils::LOGLEVEL log_level,
87 const std::string& context)
override;
88 void PrintIterationSeparatorBegin()
override;
89 void PrintIterationSeparatorEnd()
override;
90 void setLogLevel(
const LogUtils::LOGLEVEL log_level);
91 void setContext(
const std::string& context) { context_ = context; }
92 const std::string& getContext()
const;
94 return (*
this) << log_level;
97 return (*
this) << PrefixMessage(log_level_, context_);
102 const std::shared_ptr<ProblemGenerationLogger> logger) {
107 template <
typename T>
111 std::list<ProblemGenerationILoggerSharedPointer> loggers_;
112 std::set<ProblemGenerationILoggerSharedPointer> enabled_loggers_;
113 void update_enabled_logger();
114 bool try_to_add_logger_to_enabled_list(
115 const ProblemGenerationILoggerSharedPointer& logger);
119 for (
const auto& subLogger : enabled_loggers_) {
120 subLogger->GetOstreamObject() << t;
124std::shared_ptr<ProblemGenerationLogger> BuildLogger(
125 const std::filesystem::path& log_file_path, std::ostream& stream,
126 const std::string& context);
Definition ProblemGenerationLogger.h:39
void display_message(const std::string &message) override
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.cpp:17
Definition ProblemGenerationLogger.h:19
void display_message(const std::string &message) override=0
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.h:73
void display_message(const std::string &message) override
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.cpp:67
Definition ProblemGenerationLogger.h:57
void display_message(const std::string &message) override
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.cpp:45
Xpansion Unique log Interface.
Definition ILogger.h:74