MAiNGO
logger.h
Go to the documentation of this file.
1 /**********************************************************************************
2  * Copyright (c) 2019 Process Systems Engineering (AVT.SVT), RWTH Aachen University
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License 2.0 which is available at
6  * http://www.eclipse.org/legal/epl-2.0.
7  *
8  * SPDX-License-Identifier: EPL-2.0
9  *
10  **********************************************************************************/
11 
12 #pragma once
13 
14 #include "MAiNGOdebug.h"
15 #include "returnCodes.h"
16 #include "settings.h"
17 
18 #include <iostream>
19 #include <map>
20 #include <queue>
21 #include <vector>
22 
23 
24 namespace maingo {
25 
26 
32  // The first name has to be 1 and the names have to be increasing (in numbering)
33  EPSILONA = 1,
87 };
88 
95 class Logger {
96 
97  public:
101  Logger(){};
102 
106  Logger(const Logger&) = default;
107 
111  Logger& operator=(const Logger&) = default;
112 
116  ~Logger() {}
117 
126  void print_message(const std::string& message, const VERB verbosityGiven, const VERB verbosityNeeded, const LOGGING_DESTINATION givenOutstreamVerbosity);
127 
134  void print_message_to_stream_only(const std::string& message, const LOGGING_DESTINATION givenOutstreamVerbosity);
135 
141  void set_output_stream(std::ostream* const outputStream);
142 
148  void create_log_file(const LOGGING_DESTINATION givenOutstreamVerbosity);
149 
155  void create_iterations_csv_file(const bool writeCsv);
156 
162  void write_all_lines_to_log(const std::string& errorMessage = "");
163 
168 
175  void save_settings_file_name(const std::string& fileName, const bool fileFound);
176 
183  void save_setting(const SETTING_NAMES settingName, const std::string& str);
184 
192  void print_settings(const VERB verbosityGiven, const VERB verbosityNeeded, const LOGGING_DESTINATION givenOutstreamVerbosity);
193 
197  void clear();
198 
203  std::queue<std::string> babLine{};
204  std::queue<std::string> babLineCsv{};
205  std::string logFileName = "maingo.log";
206  std::string csvIterationsName = "iterations.csv";
210  private:
215  std::ostream* _outStream = &std::cout;
216  unsigned int _nSettingFiles = 0;
217  std::map<int, std::string> _userSetSettings;
220 }; // end of class Logger
221 
222 
223 } // end namespace maingo
LOGGING_DESTINATION
Enum for controlling where logging information of MAiNGO should be written.
Definition: settings.h:38
Definition: logger.h:35
std::ostream * _outStream
Definition: logger.h:215
Definition: logger.h:80
Definition: logger.h:73
Definition: logger.h:58
bool reachedMinNodeSize
Definition: logger.h:207
std::queue< std::string > babLine
Definition: logger.h:203
Definition: logger.h:54
Definition: logger.h:50
std::string logFileName
Definition: logger.h:205
Definition: logger.h:64
Definition: logger.h:41
Definition: logger.h:85
Definition: logger.h:34
Definition: logger.h:53
Definition: logger.h:69
Definition: logger.h:37
std::map< int, std::string > _userSetSettings
Definition: logger.h:217
void set_output_stream(std::ostream *const outputStream)
Sets output stream.
Definition: logger.cpp:70
Definition: logger.h:55
Logger()
Default constructor.
Definition: logger.h:101
Definition: logger.h:42
Definition: logger.h:44
Definition: logger.h:49
Definition: logger.h:52
SETTING_NAMES
Enum for representing the setting names and making the tracking of set settings easier.
Definition: logger.h:31
std::queue< std::string > babLineCsv
Definition: logger.h:204
unsigned int _nSettingFiles
Definition: logger.h:216
Definition: logger.h:45
Definition: logger.h:48
This class contains all logging and output information.
Definition: logger.h:95
Definition: logger.h:36
Definition: logger.h:77
Definition: logger.h:33
Definition: logger.h:83
Definition: logger.h:47
Definition: logger.h:61
Definition: logger.h:79
void print_settings(const VERB verbosityGiven, const VERB verbosityNeeded, const LOGGING_DESTINATION givenOutstreamVerbosity)
Function for printing and writing user-set settings.
Definition: logger.cpp:196
Definition: logger.h:40
std::string csvIterationsName
Definition: logger.h:206
Definition: logger.h:59
Definition: logger.h:43
Definition: logger.h:67
Logger & operator=(const Logger &)=default
Default copy assignment.
void create_iterations_csv_file(const bool writeCsv)
Function used for creating the csv file with information on the B&B iterations.
Definition: logger.cpp:92
Definition: logger.h:75
Definition: logger.h:65
namespace holding all essentials of MAiNGO
Definition: aleModel.h:25
Definition: logger.h:57
Definition: logger.h:82
Definition: logger.h:51
Definition: logger.h:76
void save_setting(const SETTING_NAMES settingName, const std::string &str)
Function used for saving the user-set settings.
Definition: logger.cpp:174
Definition: logger.h:63
Definition: logger.h:81
VERB
Enum for controlling the output level of solvers (i.e., how much should be printed on the screen and...
Definition: settings.h:28
Definition: logger.h:84
Definition: logger.h:78
Definition: logger.h:70
Definition: logger.h:68
Definition: logger.h:46
Definition: logger.h:86
void save_settings_file_name(const std::string &fileName, const bool fileFound)
Function used for saving the names of setting files set by the user.
Definition: logger.cpp:151
void write_all_iterations_to_csv()
Function used for writing all iterations currently stored queue babLineCsv to csv.
Definition: logger.cpp:135
Definition: logger.h:71
Definition: logger.h:72
void clear()
Clears all logging information.
Definition: logger.cpp:228
void create_log_file(const LOGGING_DESTINATION givenOutstreamVerbosity)
Function used for creating the log file.
Definition: logger.cpp:79
Definition: logger.h:66
void print_message_to_stream_only(const std::string &message, const LOGGING_DESTINATION givenOutstreamVerbosity)
The main function used for printing a given message and storing it in log and/or csv.
Definition: logger.cpp:59
Definition: logger.h:56
Definition: logger.h:38
void print_message(const std::string &message, const VERB verbosityGiven, const VERB verbosityNeeded, const LOGGING_DESTINATION givenOutstreamVerbosity)
The main function used for printing a given message and storing it in log and/or csv.
Definition: logger.cpp:24
Definition: logger.h:74
Definition: logger.h:60
void write_all_lines_to_log(const std::string &errorMessage="")
Function used for writing all lines stored in queue babLine to log.
Definition: logger.cpp:117
Definition: logger.h:39
~Logger()
Default destructor.
Definition: logger.h:116