Public Types |
Public Member Functions |
Static Public Member Functions |
Protected Member Functions |
Static Protected Member Functions |
Private Attributes |
Static Private Attributes |
Friends
Log Class Reference
Detailed DescriptionDefinition at line 9 of file Logging.hh. Member Typedef Documentation
Typedef for a collection of shell color codes, accessed by log level. Definition at line 24 of file Logging.hh.
Typedef for a collection of named log levels. Definition at line 21 of file Logging.hh. Typedef for a collection of named logs. Definition at line 18 of file Logging.hh. Member Enumeration Documentation
Constructor & Destructor Documentation
Member Function Documentation
Definition at line 131 of file Logging.hh.
Definition at line 137 of file Logging.hh.
Turn a message string into the current log format. Definition at line 150 of file Logging.cc. { string out; if (Log::useShellColors) { out += getColorCode(level); } if (Log::showLoggerName) { out += getName(); out += ": "; } if (Log::showLogLevel) { out += Log::getLevelName(level); out += " "; } if (Log::showTimestamp) { time_t rawtime; time(&rawtime); char* timestr = ctime(&rawtime); timestr[24] = ' '; out += timestr; out += " "; } if (Log::useShellColors) { out += endColorCode; } out += " "; out += message; return out; }
Definition at line 113 of file Logging.cc. { if (!Log::useShellColors) return ""; // If the codes haven't been initialized, do so now. if (Log::colorCodes.empty()) { // If stdout is a valid tty, try to use the appropriate codes. if (isatty(1)) { /// @todo Test for VT100 compliance? Log::colorCodes[TRACE] = "\033[0;36m"; Log::colorCodes[DEBUG] = "\033[0;34m"; Log::colorCodes[INFO] = "\033[0;32m"; Log::colorCodes[WARN] = "\033[0;33m"; Log::colorCodes[ERROR] = "\033[0;31m"; Log::endColorCode = "\033[0m"; } else { Log::colorCodes[TRACE] = ""; Log::colorCodes[DEBUG] = ""; Log::colorCodes[INFO] = ""; Log::colorCodes[WARN] = ""; Log::colorCodes[ERROR] = ""; } } // Return the appropriate code from the colour map. /// @todo Do the map::upper_limit thing to find nearest level... return colorCodes[level]; }
Get a log level enum from a string. Definition at line 140 of file Logging.cc.
Get the std::string representation of a log level.
Definition at line 93 of file Logging.cc. { /// @todo Do the map::upper_limit thing to find nearest level... switch(level) { case TRACE: return "TRACE"; case DEBUG: return "DEBUG"; case INFO: return "INFO"; case WARN: return "WARN"; case ERROR: return "ERROR"; default: return ""; } //throw Error("Enum value was not a valid log level. How did that happen?"); } Get a logger with the given name. The level will be taken from the "requestedLevels" static map or will be INFO by default. Definition at line 55 of file Logging.cc. { auto theLog = existingLogs.find(name); if (theLog == existingLogs.end()) { int level = INFO; // Try running through all parent classes to find an existing level string tmpname = name; bool triedAllParents = false; while (! triedAllParents) { // Is there a default level? if (defaultLevels.find(tmpname) != defaultLevels.end()) { level = defaultLevels.find(tmpname)->second; break; } // Is there already such a logger? (NB. tmpname != name in later iterations) if (existingLogs.find(tmpname) != existingLogs.end()) { level = existingLogs.find(tmpname)->second.getLevel(); break; } // Crop the string back to the next parent level size_t lastDot = tmpname.find_last_of("."); if (lastDot != string::npos) { tmpname = tmpname.substr(0, lastDot); } else { triedAllParents = true; } } // for (LevelMap::const_iterator l = defaultLevels.begin(); l != defaultLevels.end(); ++l) { // // } // emplace returns pair<iterator,bool> auto result = existingLogs.emplace(name, Log(name, level)); theLog = result.first; } return theLog->second; }
Definition at line 133 of file Logging.hh.
Will this log level produce output on this logger at the moment? Definition at line 123 of file Logging.hh. { return (level >= _level); }
Write a message at a particular level. Definition at line 186 of file Logging.cc. { if (isActive(level)) { cout << formatMessage(level, message) << endl; } }
Set the log levels. Definition at line 40 of file Logging.cc. { defaultLevels[name] = level; //cout << name << " -> " << level << endl; _updateLevels(defaultLevels, existingLogs); } Set the priority level of this logger. Definition at line 100 of file Logging.hh. { _level = level; return *this; } Definition at line 47 of file Logging.cc. { for (LevelMap::const_iterator lev = logLevels.begin(); lev != logLevels.end(); ++lev) { defaultLevels[lev->first] = lev->second; } _updateLevels(defaultLevels, existingLogs); } Set the name of this logger. Definition at line 117 of file Logging.hh. { _name = name; return *this; }
Definition at line 60 of file Logging.hh. { showLogLevel = showLevel; }
Definition at line 64 of file Logging.hh. { showLoggerName = showName; }
Definition at line 56 of file Logging.hh. { showTimestamp = showTime; }
Definition at line 68 of file Logging.hh. { useShellColors = useColors; }
Definition at line 129 of file Logging.hh.
Definition at line 135 of file Logging.hh. Friends And Related Function Documentation
The streaming operator can use Log's internals. Member Data Documentation
Threshold level for this logger. Definition at line 145 of file Logging.hh.
This logger's name. Definition at line 142 of file Logging.hh.
A static map of shell color codes for the log levels. Definition at line 34 of file Logging.hh.
A static map of default log levels. Definition at line 31 of file Logging.hh.
Shell color code for the end of the log levels. Definition at line 37 of file Logging.hh.
A static map of existing logs: we don't make more loggers than necessary. Definition at line 28 of file Logging.hh.
Show logger name? Definition at line 46 of file Logging.hh.
Show log level? Definition at line 43 of file Logging.hh.
Show timestamp? Definition at line 40 of file Logging.hh.
Use shell colour escape codes? Definition at line 49 of file Logging.hh. The documentation for this class was generated from the following files: Generated on Tue Dec 13 2016 16:32:51 for The Rivet MC analysis system by ![]() |