1#ifndef __PROBLEMGENERATIONLOGGER_H__
2#define __PROBLEMGENERATIONLOGGER_H__
15#include "antares-xpansion/xpansion_interfaces/ILogger.h"
16#include "antares-xpansion/xpansion_interfaces/LoggerUtils.h"
18namespace ProblemGenerationLog
27 LogUtils::LOGLEVEL level,
28 const std::string& context)
override
30 void PrintIterationSeparatorBegin()
override = 0;
31 void PrintIterationSeparatorEnd()
override = 0;
33 virtual std::ostream& GetOstreamObject() = 0;
35 LogUtils::LOGGERTYPE Type()
const
41 void SetType(
const LogUtils::LOGGERTYPE& type)
47 LogUtils::LOGGERTYPE type_ = LogUtils::LOGGERTYPE::NONE;
50using ProblemGenerationILoggerSharedPointer = std::shared_ptr<ProblemGenerationILogger>;
55 std::filesystem::path logFilePath_;
56 std::ofstream logFile_;
67 const LogUtils::LOGLEVEL log_level,
68 const std::string& context)
override;
69 void PrintIterationSeparatorBegin()
override;
70 void PrintIterationSeparatorEnd()
override;
71 std::ostream& GetOstreamObject()
override;
77 std::ostream& stream_;
84 const LogUtils::LOGLEVEL log_level,
85 const std::string& context)
override;
86 void PrintIterationSeparatorBegin()
override;
87 void PrintIterationSeparatorEnd()
override;
88 std::ostream& GetOstreamObject()
override;
94 LogUtils::LOGLEVEL log_level_;
95 std::string context_ =
"Unknown Context";
105 void AddLogger(
const ProblemGenerationILoggerSharedPointer& logger);
108 const LogUtils::LOGLEVEL log_level,
109 const std::string& context)
override;
110 void PrintIterationSeparatorBegin()
override;
111 void PrintIterationSeparatorEnd()
override;
112 void setLogLevel(
const LogUtils::LOGLEVEL log_level);
114 void setContext(
const std::string& context)
119 const std::string& getContext()
const;
123 std::unique_lock ulck(write_mutex_, std::defer_lock);
128 return (*
this) << log_level;
133 std::unique_lock ulck(write_mutex_, std::defer_lock);
138 return (*
this) << PrefixMessage(log_level_, context_);
154 std::mutex write_mutex_;
155 std::list<ProblemGenerationILoggerSharedPointer> loggers_;
156 std::set<ProblemGenerationILoggerSharedPointer> enabled_loggers_;
157 void update_enabled_logger();
158 bool try_to_add_logger_to_enabled_list(
const ProblemGenerationILoggerSharedPointer& logger);
164 for (
const auto& subLogger: enabled_loggers_)
166 subLogger->GetOstreamObject() << t;
171std::shared_ptr<ProblemGenerationLogger> BuildLogger(
const std::filesystem::path& log_file_path,
172 std::ostream& stream,
173 const std::string& context);
Definition ProblemGenerationLogger.h:53
void display_message(const std::string &message) override
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.cpp:18
Definition ProblemGenerationLogger.h:22
void display_message(const std::string &message) override=0
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.h:92
void display_message(const std::string &message) override
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.cpp:87
Definition ProblemGenerationLogger.h:75
void display_message(const std::string &message) override
pure virtual method to display a std::string message
Definition ProblemGenerationLogger.cpp:56
Xpansion Unique log Interface.
Definition ILogger.h:79