milupHPC documentation
  • src
  • utils
logger.cpp
Go to the documentation of this file.
1#include "../../include/utils/logger.h"
2
3Color::Modifier::Modifier(Code pCode) : code(pCode) {}
4
5std::ostream& Color::operator<<(std::ostream& os, const Color::Modifier& mod) {
6 return os << "\033[" << mod.code << "m";
7}
8
9Logger::Logger(typeLog type, bool toLog) {
10 if (LOGCFG.omitTime && type == typeLog::TIME) {
11 omit = true;
12 }
13 this->toLog = toLog;
14 msgLevel = type;
15 if (LOGCFG.write2LogFile && (this->toLog || (msgLevel == typeLog::WARN || msgLevel == typeLog::ERROR))) {
16 logFile.open(LOGCFG.logFileName.c_str(), std::ios::out | std::ios::app);
17
18 }
19 Color::Modifier def(Color::FG_DEFAULT);
20 if(LOGCFG.headers) {
21 if (!omit) {
22 std::cout << getColor(type);
23 operator<<(getLabel(type));
24 std::cout << def;
25 }
26 }
27}
28
29Logger::~Logger() {
30 if (opened && !omit) {
31 std::cout << std::endl;
32 }
33 if (openedLogFile) {
34 logFile << std::endl;
35 logFile.close();
36 }
37 opened = false;
38 openedLogFile = false;
39}
40
41inline std::string Logger::getLabel(typeLog type) {
42 std::string label;
43 std::string rankLbl = "";
44 if (LOGCFG.rank >= 0){
45 rankLbl = "(" + std::to_string(LOGCFG.rank) + ")";
46 }
47 switch(type) {
48 case DEBUG: label = "[DEBUG] "; break;
49 case INFO: label = "[INFO ] "; break;
50 case TRACE: label = "[TRACE] "; break;
51 case WARN: label = "[WARN ] "; break;
52 case ERROR: label = "[ERROR] "; break;
53 case TIME: label = "[TIME ] "; break;
54 }
55 return rankLbl + label;
56}
57
58inline Color::Modifier Logger::getColor(typeLog type) {
59 Color::Modifier color(Color::FG_DEFAULT);
60 switch(type) {
61 case DEBUG: color.code = Color::FG_DARK_GRAY; break;
62 case INFO: color.code = Color::FG_LIGHT_GREEN; break;
63 case TRACE: color.code = Color::FG_WHITE; break;
64 case WARN: color.code = Color::FG_YELLOW; break;
65 case ERROR: color.code = Color::FG_RED; break;
66 case TIME: color.code = Color::FG_BLUE; break;
67 }
68 return color;
69}
Color::Modifier
Modify (color) of terminal output.
Definition: logger.h:23
Color::Modifier::code
Code code
Definition: logger.h:25
Color::Modifier::Modifier
Modifier(Code pCode)
Constructor.
Definition: logger.cpp:3
Logger::getColor
Color::Modifier getColor(typeLog type)
Definition: logger.cpp:58
Logger::getLabel
std::string getLabel(typeLog type)
Definition: logger.cpp:41
Logger::Logger
Logger()
Definition: logger.h:85
Logger::~Logger
~Logger()
Definition: logger.cpp:29
typeLog
typeLog
logging types
Definition: logger.h:46
DEBUG
@ DEBUG
Definition: logger.h:47
ERROR
@ ERROR
warning log type
Definition: logger.h:51
INFO
@ INFO
debug log type
Definition: logger.h:48
WARN
@ WARN
trace log type
Definition: logger.h:50
TRACE
@ TRACE
info log type
Definition: logger.h:49
TIME
@ TIME
error log type
Definition: logger.h:52
LOGCFG
structLog LOGCFG
Definition: main.cpp:50
Color::operator<<
std::ostream & operator<<(std::ostream &os, const Color::Modifier &mod)
Definition: logger.cpp:5
Color::Code
Code
Definition: color.h:6
Color::FG_LIGHT_GREEN
@ FG_LIGHT_GREEN
Foreground: light red.
Definition: color.h:18
Color::FG_DARK_GRAY
@ FG_DARK_GRAY
Foreground: light gray.
Definition: color.h:16
Color::FG_YELLOW
@ FG_YELLOW
Foreground: green.
Definition: color.h:11
Color::FG_DEFAULT
@ FG_DEFAULT
Definition: color.h:7
Color::FG_WHITE
@ FG_WHITE
Foreground: light cyan.
Definition: color.h:23
Color::FG_BLUE
@ FG_BLUE
Foreground: yellow.
Definition: color.h:12
Color::FG_RED
@ FG_RED
Foreground: black.
Definition: color.h:9
structLog::omitTime
bool omitTime
omit time output/logging
Definition: logger.h:72
structLog::headers
bool headers
show headers
Definition: logger.h:60
structLog::logFileName
std::string logFileName
log file to be written
Definition: logger.h:70
structLog::write2LogFile
bool write2LogFile
write additionally to log file
Definition: logger.h:68
structLog::rank
int rank
whether to use MPI
Definition: logger.h:64

milupHPC - src/utils/logger.cpp Source File
Generated on Wed Aug 31 2022 12:16:53 by Doxygen 1.9.3