File indexing completed on 2025-08-05 08:19:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <stddef.h>
0017 #include <fstream>
0018
0019 #include "JetScapeLogger.h"
0020
0021 using namespace std;
0022
0023
0024
0025
0026 #include <sys/time.h>
0027 #include <sys/resource.h>
0028
0029 long getMemoryUsage() {
0030 struct rusage usage;
0031
0032
0033 float mbsize = 1024;
0034 #ifdef __MACH__
0035 mbsize = 1024 * 1024;
0036 #endif
0037
0038 if (0 == getrusage(RUSAGE_SELF, &usage))
0039 return usage.ru_maxrss / mbsize;
0040 else
0041 return 0;
0042 }
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069 #define BLACK "\033[30m"
0070 #define RED "\033[31m"
0071 #define GREEN "\033[32m"
0072 #define YELLOW "\033[33m"
0073 #define BLUE "\033[34m"
0074 #define MAGENTA "\033[35m"
0075 #define CYAN "\033[36m"
0076 #define WHITE "\033[37m"
0077 #define BOLDBLACK "\033[1m\033[30m"
0078 #define BOLDRED "\033[1m\033[31m"
0079 #define BOLDGREEN "\033[1m\033[32m"
0080 #define BOLDYELLOW "\033[1m\033[33m"
0081 #define BOLDBLUE "\033[1m\033[34m"
0082 #define BOLDMAGENTA "\033[1m\033[35m"
0083 #define BOLDCYAN "\033[1m\033[36m"
0084 #define BOLDWHITE "\033[1m\033[37m"
0085
0086 #define CLEAR "\033[2J"
0087
0088 namespace Jetscape {
0089
0090 std::ostringstream null;
0091
0092 SafeOstream safe_cout(std::cout);
0093 SafeOstream safe_cerr(std::cerr);
0094 SafeOstream safe_null(null);
0095
0096 JetScapeLogger *JetScapeLogger::m_pInstance = NULL;
0097
0098 JetScapeLogger *JetScapeLogger::Instance() {
0099 if (!m_pInstance)
0100 m_pInstance = new JetScapeLogger();
0101
0102 return m_pInstance;
0103 }
0104
0105 LogStreamer JetScapeLogger::Warn() {
0106 string s = "[Warning] ";
0107
0108
0109 return LogStreamer(std::cout << BOLDRED << s);
0110 }
0111
0112 LogStreamerThread JetScapeLogger::DebugThread() {
0113 if (debug) {
0114 string s = "[Debug Thread] ";
0115
0116 s += to_string(getMemoryUsage());
0117 s += "MB ";
0118 return (LogStreamerThread(safe_cout) << BLUE << s);
0119 } else {
0120
0121
0122 return LogStreamerThread(safe_null);
0123 }
0124 }
0125
0126 LogStreamer JetScapeLogger::Debug() {
0127 if (debug) {
0128 string s = "[Debug] ";
0129
0130 s += to_string(getMemoryUsage());
0131 s += "MB ";
0132 return LogStreamer(std::cout << BLUE << s);
0133 } else {
0134 null.setstate(std::ios_base::failbit);
0135 return LogStreamer(null);
0136 }
0137 }
0138
0139 LogStreamer JetScapeLogger::Info() {
0140 string s = "[Info] ";
0141
0142 if (info) {
0143 string s = "[Info] ";
0144
0145 s += to_string(getMemoryUsage());
0146 s += "MB ";
0147 return LogStreamer(std::cout << s);
0148 } else {
0149 null.setstate(std::ios_base::failbit);
0150 return LogStreamer(null);
0151 }
0152 }
0153
0154 LogStreamer JetScapeLogger::InfoNice() {
0155 string s = "[Info] ";
0156
0157
0158 if (info) {
0159 return LogStreamer(std::cout << s);
0160 } else {
0161 null.setstate(std::ios_base::failbit);
0162 return LogStreamer(null);
0163 }
0164 }
0165
0166 LogStreamer JetScapeLogger::Remark() {
0167 if (remark) {
0168 string s = "[REMARK] ";
0169 return LogStreamer(std::cout << BOLDMAGENTA << s);
0170 } else {
0171 null.setstate(std::ios_base::failbit);
0172 return LogStreamer(null);
0173 }
0174 }
0175
0176 LogStreamer JetScapeLogger::Verbose(unsigned short m_vlevel) {
0177 if (m_vlevel < vlevel)
0178 {
0179 string s = "[Verbose][";
0180 s += std::to_string(m_vlevel);
0181 s += "] ";
0182 s += to_string(getMemoryUsage());
0183 s += "MB ";
0184 return LogStreamer(std::cout << GREEN << s);
0185 } else {
0186 null.setstate(std::ios_base::failbit);
0187 return LogStreamer(null);
0188 }
0189 }
0190
0191 LogStreamer JetScapeLogger::VerboseShower(unsigned short m_vlevel) {
0192 if (m_vlevel < vlevel)
0193 {
0194 string s = "[Verbose][";
0195 s += std::to_string(m_vlevel);
0196 s += "] ";
0197 s += to_string(getMemoryUsage());
0198 s += "MB ";
0199 return LogStreamer(std::cout << BOLDCYAN << s);
0200 } else {
0201 null.setstate(std::ios_base::failbit);
0202 return LogStreamer(null);
0203 }
0204 }
0205
0206 LogStreamer JetScapeLogger::VerboseParton(unsigned short m_vlevel, Parton &p) {
0207 if (m_vlevel < vlevel)
0208 {
0209 string s = "[Verbose][";
0210 s += std::to_string(m_vlevel);
0211 s += "] Parton: ";
0212 return LogStreamer(std::cout << GREEN << s << " " << p << endl);
0213 } else {
0214 null.setstate(std::ios_base::failbit);
0215 return LogStreamer(null);
0216 }
0217 }
0218
0219 LogStreamer JetScapeLogger::VerboseVertex(unsigned short m_vlevel, Vertex &v) {
0220 if (m_vlevel < vlevel)
0221 {
0222 string s = "[Verbose][";
0223 s += std::to_string(m_vlevel);
0224 s += "] Vertex: ";
0225 return LogStreamer(std::cout << GREEN << s << " " << v << endl);
0226 } else {
0227 null.setstate(std::ios_base::failbit);
0228 return LogStreamer(null);
0229 }
0230 }
0231
0232 }