@@ -71,6 +71,8 @@ ImVec4 colorForLogLevel(LogParsingHelpers::LogLevel logLevel)
7171 return PaletteHelpers::GREEN;
7272 case LogParsingHelpers::LogLevel::Debug:
7373 return PaletteHelpers::WHITE;
74+ case LogParsingHelpers::LogLevel::Alarm:
75+ return PaletteHelpers::YELLOW;
7476 case LogParsingHelpers::LogLevel::Warning:
7577 return PaletteHelpers::DARK_YELLOW;
7678 case LogParsingHelpers::LogLevel::Error:
@@ -140,6 +142,24 @@ void displayHistory(const DeviceInfo& info, DeviceControl& control)
140142 auto & line = info.history [ji];
141143 auto logLevel = info.historyLevel [ji];
142144
145+ // assign proper loglevel to ROOT log messages from stderr
146+ auto getLogLevelUnknown = [&line]() -> LogParsingHelpers::LogLevel {
147+ if (line.starts_with (" Print in" ) || line.starts_with (" Info in" ) || line.starts_with (" [INFO]" )) {
148+ return LogParsingHelpers::LogLevel::Info;
149+ } else if (line.starts_with (" Warning in" )) {
150+ return LogParsingHelpers::LogLevel::Warning;
151+ } else if (line.starts_with (" Error in" ) || line.starts_with (" SysError in" )) {
152+ return LogParsingHelpers::LogLevel::Error;
153+ } else if (line.starts_with (" Fatal in" ) || line.starts_with (" *** Break ***" )) {
154+ return LogParsingHelpers::LogLevel::Fatal;
155+ } else {
156+ return LogParsingHelpers::LogLevel::Unknown;
157+ }
158+ };
159+ if (logLevel == LogParsingHelpers::LogLevel::Unknown) {
160+ logLevel = getLogLevelUnknown ();
161+ }
162+
143163 // Skip empty lines
144164 if (line.empty ()) {
145165 ji = (ji + 1 ) % historySize;
0 commit comments