diff --git a/logger/Logger.cxx b/logger/Logger.cxx index 16f89ab..bcfda87 100644 --- a/logger/Logger.cxx +++ b/logger/Logger.cxx @@ -19,53 +19,6 @@ using namespace std; namespace fair { -enum class Color : int -{ - fgBlack = 30, - fgRed = 31, - fgGreen = 32, - fgYellow = 33, - fgBlue = 34, - fgMagenta = 35, - fgCyan = 36, - fgWhite = 37, - fgDefault = 39, - bgRed = 41, - bgGreen = 42, - bgBlue = 44, - bgDefault = 49 -}; - -string startColor(Color color) -{ - ostringstream os; - os << "\033[01;" << static_cast(color) << "m"; - return os.str(); -} - -string endColor() -{ - return "\033[0m"; -} - -class ColorOut -{ - public: - ColorOut(Color color, const string& str) - : fColor(color) - , fStr(str) - {} - - friend ostream& operator<<(ostream& os, const ColorOut& w) - { - return os << "\033[01;" << static_cast(w.fColor) << "m" << w.fStr << "\033[0m"; - } - - private: - Color fColor; - const string& fStr; -}; - class ColoredSeverityWriter { public: @@ -77,40 +30,40 @@ class ColoredSeverityWriter { switch (w.fSeverity) { case Severity::nolog: - return os << "\033[01;" << static_cast(Color::fgDefault) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgDefault) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::fatal: - return os << "\033[01;" << static_cast(Color::bgRed) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::bgRed) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::error: - return os << "\033[01;" << static_cast(Color::fgRed) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgRed) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::warn: - return os << "\033[01;" << static_cast(Color::fgYellow) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgYellow) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::state: - return os << "\033[01;" << static_cast(Color::fgMagenta) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgMagenta) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::info: - return os << "\033[01;" << static_cast(Color::fgGreen) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgGreen) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::debug: - return os << "\033[01;" << static_cast(Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::debug1: - return os << "\033[01;" << static_cast(Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::debug2: - return os << "\033[01;" << static_cast(Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::debug3: - return os << "\033[01;" << static_cast(Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::debug4: - return os << "\033[01;" << static_cast(Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgBlue) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; case Severity::trace: - return os << "\033[01;" << static_cast(Color::fgCyan) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; + return os << "\033[01;" << static_cast(Logger::Color::fgCyan) << "m" << Logger::SeverityName(w.fSeverity) << "\033[0m"; break; default: return os << "UNKNOWN"; diff --git a/logger/Logger.h b/logger/Logger.h index c5374db..5ea8ed0 100644 --- a/logger/Logger.h +++ b/logger/Logger.h @@ -182,6 +182,82 @@ class Logger public: Logger(Severity severity, const std::string& file, const std::string& line, const std::string& func); + enum class Color : int + { + bold = 1, + dim = 2, + underline = 4, + blink = 5, + reverse = 7, + hidden = 8, + + fgDefault = 39, + fgBlack = 30, + fgRed = 31, + fgGreen = 32, + fgYellow = 33, + fgBlue = 34, + fgMagenta = 35, + fgCyan = 36, + fgLightGray = 37, + fgDarkGray = 90, + fgLightRed = 91, + fgLightGreen = 92, + fgLightYellow = 93, + fgLightBlue = 94, + fgLightMagenta = 95, + fgLightCyan = 96, + fgWhite = 97, + + bgDefault = 49, + bgBlack = 40, + bgRed = 41, + bgGreen = 42, + bgYellow = 43, + bgBlue = 44, + bgMagenta = 45, + bgCyan = 46, + bgLightGray = 47, + bgDarkGray = 100, + bgLightRed = 101, + bgLightGreen = 102, + bgLightYellow = 103, + bgLightBlue = 104, + bgLightMagenta = 105, + bgLightCyan = 106, + bgWhite = 107 + }; + + static std::string startColor(Color color) + { + std::ostringstream os; + os << "\033[01;" << static_cast(color) << "m"; + return os.str(); + } + + static std::string endColor() + { + return "\033[0m"; + } + + class ColorOut + { + public: + ColorOut(Color color, const std::string& str) + : fColor(color) + , fStr(str) + {} + + friend std::ostream& operator<<(std::ostream& os, const ColorOut& w) + { + return os << "\033[01;" << static_cast(w.fColor) << "m" << w.fStr << "\033[0m"; + } + + private: + Color fColor; + const std::string& fStr; + }; + static void SetConsoleSeverity(const Severity severity); static void SetConsoleSeverity(const std::string& severityStr); static Severity GetConsoleSeverity();