milupHPC documentation
  • include
  • utils
logger.h
Go to the documentation of this file.
1
9#ifndef NBODY_LOGGER_H
10#define NBODY_LOGGER_H
11
12#include <iostream>
13#include <string>
14#include "color.h"
15#include "../parameter.h"
16#include <iostream>
17#include <fstream>
18
19namespace Color {
23 class Modifier {
24 public:
25 Code code;
31 Modifier(Code pCode);
39 friend std::ostream& operator<<(std::ostream& os, const Color::Modifier& mod);
40 };
41
42 std::ostream& operator<<(std::ostream& os, const Color::Modifier& mod);
43}
44
46enum typeLog {
47 DEBUG,
48 INFO,
49 TRACE,
50 WARN,
51 ERROR,
52 TIME
53};
54
58struct structLog {
60 bool headers = false;
62 typeLog level = DEBUG;
64 int rank = -1; // don't use MPI by default
66 int outputRank = -1;
68 bool write2LogFile = true;
70 std::string logFileName {"log/miluphpc.log"};
72 bool omitTime = false;
73};
74
75extern structLog LOGCFG;
76
80class Logger {
81public:
85 Logger() {}
92 Logger(typeLog type, bool toLog=false);
93 ~Logger();
94
102 template<class T> Logger &operator<<(const T &msg) {
103
104 if (LOGCFG.write2LogFile && (this->toLog || (msgLevel == typeLog::WARN || msgLevel == typeLog::ERROR))) {
105 logFile << msg;
106 openedLogFile = true;
107 }
108 if (msgLevel >= LOGCFG.level && (LOGCFG.rank == LOGCFG.outputRank || LOGCFG.outputRank == -1)) {
109 if (!omit) {
110 std::cout << msg;
111 opened = true;
112 }
113 }
114 return *this;
115 }
116
122 Logger &operator<<(const unsigned long &key) {
123 int level = 21;
124 if (msgLevel >= LOGCFG.level && (LOGCFG.rank == LOGCFG.outputRank || LOGCFG.outputRank == -1)) {
125 int levels [level];
126 for (int i = 0; i<level; i++) {
127 levels[i] = (key >> DIM*i) & (unsigned long)(POW_DIM - 1);
128 }
129 std::string msg = "#|";
130 for (int i = level-1; i>=0; i--) {
131 msg += std::to_string(levels[i]);
132 msg += "|";
133 }
134 if (!omit) {
135 std::cout << msg;
136 opened = true;
137 }
138 }
139 return *this;
140 }
141
142
143private:
144 bool opened = false;
145 typeLog msgLevel = INFO;
146 inline std::string getLabel(typeLog type);
147 inline Color::Modifier getColor(typeLog type);
148 std::ofstream logFile;
149 bool openedLogFile = false;
150 bool toLog = false;
151 bool omit = false;
152};
153
154#endif //NBODY_LOGGER_H
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
Color::Modifier::operator<<
friend std::ostream & operator<<(std::ostream &os, const Color::Modifier &mod)
Ofstream operator overload.
Logger
Logger class.
Definition: logger.h:80
Logger::openedLogFile
bool openedLogFile
Definition: logger.h:149
Logger::toLog
bool toLog
Definition: logger.h:150
Logger::getColor
Color::Modifier getColor(typeLog type)
Definition: logger.cpp:58
Logger::operator<<
Logger & operator<<(const T &msg)
Log/output any message.
Definition: logger.h:102
Logger::msgLevel
typeLog msgLevel
Definition: logger.h:145
Logger::operator<<
Logger & operator<<(const unsigned long &key)
Specialized log/output message for keyType (unsigned long)
Definition: logger.h:122
Logger::getLabel
std::string getLabel(typeLog type)
Definition: logger.cpp:41
Logger::Logger
Logger()
Definition: logger.h:85
Logger::omit
bool omit
Definition: logger.h:151
Logger::~Logger
~Logger()
Definition: logger.cpp:29
Logger::logFile
std::ofstream logFile
Definition: logger.h:148
Logger::opened
bool opened
Definition: logger.h:144
color.h
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
Colors for output formatting.
Definition: color.h:5
Color::operator<<
std::ostream & operator<<(std::ostream &os, const Color::Modifier &mod)
Definition: logger.cpp:5
Color::Code
Code
Definition: color.h:6
POW_DIM
#define POW_DIM
Definition: parameter.h:40
DIM
#define DIM
Dimension of the problem.
Definition: parameter.h:38
structLog
Logger settings.
Definition: logger.h:58
structLog::level
typeLog level
Minimum logging level to be shown.
Definition: logger.h:62
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::outputRank
int outputRank
MPI rank to be displayed (default: -1 -> display all)
Definition: logger.h:66
structLog::rank
int rank
whether to use MPI
Definition: logger.h:64

milupHPC - include/utils/logger.h Source File
Generated on Wed Aug 31 2022 12:16:52 by Doxygen 1.9.3