Only continue log level if line starts with whitespace (#4430)

This commit is contained in:
Alexandru Ionut Tripon
2025-12-08 12:42:31 +02:00
committed by GitHub
7 changed files with 252 additions and 255 deletions

View File

@@ -257,10 +257,7 @@ bool LaunchTask::parseXmlLogs(QString const& line, MessageLevel level)
MessageLevel newLevel = messageLevelFromLine(msg);
if (newLevel == MessageLevel::Unknown)
newLevel = LogParser::guessLevel(line);
if (newLevel == MessageLevel::Unknown)
newLevel = model->previousLevel();
newLevel = LogParser::guessLevel(line, model->previousLevel());
msg = censorPrivateInfo(msg);

View File

@@ -320,7 +320,7 @@ std::optional<LogParser::ParsedItem> LogParser::parseLog4J()
throw std::runtime_error("unreachable: already verified this was a complete log4j:Event");
}
MessageLevel LogParser::guessLevel(const QString& line)
MessageLevel LogParser::guessLevel(const QString& line, MessageLevel previous)
{
static const QRegularExpression LINE_WITH_LEVEL("^\\[(?<timestamp>[0-9:]+)\\] \\[[^/]+/(?<level>[^\\]]+)\\]");
auto match = LINE_WITH_LEVEL.match(line);
@@ -343,11 +343,17 @@ MessageLevel LogParser::guessLevel(const QString& line)
return MessageLevel::Debug;
}
if (line.contains("Exception: ") || line.contains("Throwable: "))
return MessageLevel::Error;
if (line.startsWith("Caused by: ") || line.startsWith("Exception in thread"))
return MessageLevel::Error;
if (line.contains("overwriting existing"))
return MessageLevel::Fatal;
if (line == "---- Minecraft Crash Report ----")
return MessageLevel::Error;
if (line.startsWith("\t") || line.startsWith(" "))
return previous;
return MessageLevel::Unknown;
}

View File

@@ -59,7 +59,7 @@ class LogParser {
std::optional<Error> getError();
/// guess log level from a line of game log
static MessageLevel guessLevel(const QString& line);
static MessageLevel guessLevel(const QString& line, MessageLevel previous);
protected:
std::optional<LogEntry> parseAttributes();

View File

@@ -287,10 +287,7 @@ void OtherLogsPage::reload()
if (!m_instance) {
level = messageLevelFromLauncherLine(lineTemp);
} else {
level = LogParser::guessLevel(line);
if (level == MessageLevel::Unknown)
level = last;
level = LogParser::guessLevel(line, last);
}
last = level;

View File

@@ -126,10 +126,7 @@ class XmlLogParseTest : public QObject {
last = entry.level;
} else if (std::holds_alternative<LogParser::PlainText>(item)) {
auto msg = std::get<LogParser::PlainText>(item).message;
auto level = LogParser::guessLevel(msg);
if (level == MessageLevel::Unknown)
level = last;
auto level = LogParser::guessLevel(msg, last);
out.append(std::make_pair(level, msg));
last = level;

View File

@@ -46,166 +46,166 @@ WARN
WARN
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
WARN
WARN
INFO
@@ -299,7 +299,7 @@ INFO
INFO
INFO
INFO
INFO
UNKNOWN
INFO
INFO
INFO
@@ -406,8 +406,8 @@ INFO
WARN
WARN
INFO
INFO
INFO
UNKNOWN
UNKNOWN
INFO
INFO
INFO
@@ -591,7 +591,7 @@ INFO
INFO
INFO
INFO
INFO
UNKNOWN
INFO
INFO
INFO
@@ -626,20 +626,20 @@ INFO
INFO
INFO
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
INFO
ERROR
ERROR
@@ -723,54 +723,54 @@ WARN
INFO
INFO
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
INFO
INFO
INFO
WARN
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
WARN
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
ERROR
INFO
INFO
INFO
@@ -820,27 +820,27 @@ WARN
WARN
WARN
WARN
WARN
INFO
UNKNOWN
INFO
UNKNOWN
INFO
ERROR
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
INFO
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
UNKNOWN
INFO
INFO
INFO
@@ -859,7 +859,7 @@ INFO
INFO
WARN
INFO
INFO
UNKNOWN
INFO
INFO
INFO

View File

@@ -427,8 +427,8 @@ INFO
INFO
INFO
INFO
INFO
INFO
UNKNOWN
UNKNOWN
INFO
INFO
INFO
@@ -606,7 +606,7 @@ INFO
INFO
INFO
INFO
INFO
UNKNOWN
INFO
INFO
INFO
@@ -750,9 +750,9 @@ WARN
WARN
WARN
WARN
WARN
INFO
UNKNOWN
INFO
UNKNOWN
INFO
ERROR
INFO
@@ -777,7 +777,7 @@ INFO
INFO
WARN
INFO
INFO
UNKNOWN
INFO
INFO
INFO