summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--logic/BaseInstance.h7
-rw-r--r--logic/launch/LaunchTask.cpp43
-rw-r--r--logic/launch/LaunchTask.h17
-rw-r--r--logic/launch/steps/CheckJava.cpp1
-rw-r--r--logic/minecraft/MinecraftInstance.cpp40
-rw-r--r--logic/minecraft/MinecraftInstance.h3
6 files changed, 53 insertions, 58 deletions
diff --git a/logic/BaseInstance.h b/logic/BaseInstance.h
index 6201f1ac..9c282bbc 100644
--- a/logic/BaseInstance.h
+++ b/logic/BaseInstance.h
@@ -25,6 +25,7 @@
#include "settings/INIFile.h"
#include "BaseVersionList.h"
#include "auth/MojangAccount.h"
+#include "launch/MessageLevel.h"
class QDir;
class Task;
@@ -94,6 +95,12 @@ public:
QString getPostExitCommand();
QString getWrapperCommand();
+ /// guess log level from a line of game log
+ virtual MessageLevel::Enum guessLevel(const QString &line, MessageLevel::Enum level)
+ {
+ return level;
+ };
+
virtual QStringList extraArguments() const;
virtual QString intendedVersionId() const = 0;
diff --git a/logic/launch/LaunchTask.cpp b/logic/launch/LaunchTask.cpp
index 248761f0..66502020 100644
--- a/logic/launch/LaunchTask.cpp
+++ b/logic/launch/LaunchTask.cpp
@@ -119,47 +119,6 @@ QString LaunchTask::censorPrivateInfo(QString in)
return in;
}
-// console window
-MessageLevel::Enum LaunchTask::guessLevel(const QString &line, MessageLevel::Enum level)
-{
- QRegularExpression re("\\[(?<timestamp>[0-9:]+)\\] \\[[^/]+/(?<level>[^\\]]+)\\]");
- auto match = re.match(line);
- if(match.hasMatch())
- {
- // New style logs from log4j
- QString timestamp = match.captured("timestamp");
- QString levelStr = match.captured("level");
- if(levelStr == "INFO")
- level = MessageLevel::Message;
- if(levelStr == "WARN")
- level = MessageLevel::Warning;
- if(levelStr == "ERROR")
- level = MessageLevel::Error;
- if(levelStr == "FATAL")
- level = MessageLevel::Fatal;
- if(levelStr == "TRACE" || levelStr == "DEBUG")
- level = MessageLevel::Debug;
- }
- else
- {
- // Old style forge logs
- if (line.contains("[INFO]") || line.contains("[CONFIG]") || line.contains("[FINE]") ||
- line.contains("[FINER]") || line.contains("[FINEST]"))
- level = MessageLevel::Message;
- if (line.contains("[SEVERE]") || line.contains("[STDERR]"))
- level = MessageLevel::Error;
- if (line.contains("[WARNING]"))
- level = MessageLevel::Warning;
- if (line.contains("[DEBUG]"))
- level = MessageLevel::Debug;
- }
- if (line.contains("overwriting existing"))
- return MessageLevel::Fatal;
- if (line.contains("Exception in thread") || line.contains(QRegularExpression("\\s+at ")))
- return MessageLevel::Error;
- return level;
-}
-
void LaunchTask::proceed()
{
if(state != LaunchTask::Waiting)
@@ -223,7 +182,7 @@ void LaunchTask::onLogLine(QString line, MessageLevel::Enum level)
// If the level is still undetermined, guess level
if (level == MessageLevel::StdErr || level == MessageLevel::StdOut || level == MessageLevel::Unknown)
{
- level = this->guessLevel(line, level);
+ level = m_instance->guessLevel(line, level);
}
// censor private user info
diff --git a/logic/launch/LaunchTask.h b/logic/launch/LaunchTask.h
index 75dc1d35..24139ea8 100644
--- a/logic/launch/LaunchTask.h
+++ b/logic/launch/LaunchTask.h
@@ -21,18 +21,7 @@
#include "MessageLevel.h"
#include "LoggedProcess.h"
#include "LaunchStep.h"
-/* HACK: MINECRAFT: split! */
-#include "minecraft/MinecraftInstance.h"
-#include "java/JavaChecker.h"
-#include "QObjectPtr.h"
-#include "tasks/Task.h"
-class ProcessTask
-{
-
-};
-
-class BaseProfilerFactory;
class LaunchTask: public Task
{
Q_OBJECT
@@ -89,13 +78,9 @@ public: /* methods */
*/
virtual bool abort() override;
-
-
-public: /* HACK: remove this from here! */
-
+public:
QString substituteVariables(const QString &cmd) const;
QString censorPrivateInfo(QString in);
- virtual MessageLevel::Enum guessLevel(const QString &message, MessageLevel::Enum defaultLevel);
protected: /* methods */
virtual void emitFailed(QString reason);
diff --git a/logic/launch/steps/CheckJava.cpp b/logic/launch/steps/CheckJava.cpp
index bd4c4856..22f62057 100644
--- a/logic/launch/steps/CheckJava.cpp
+++ b/logic/launch/steps/CheckJava.cpp
@@ -16,6 +16,7 @@
#include "CheckJava.h"
#include <launch/LaunchTask.h>
#include <QStandardPaths>
+#include <QFileInfo>
void CheckJava::executeTask()
{
diff --git a/logic/minecraft/MinecraftInstance.cpp b/logic/minecraft/MinecraftInstance.cpp
index a078c8fd..13e696b9 100644
--- a/logic/minecraft/MinecraftInstance.cpp
+++ b/logic/minecraft/MinecraftInstance.cpp
@@ -204,4 +204,44 @@ QProcessEnvironment MinecraftInstance::createEnvironment()
return env;
}
+MessageLevel::Enum MinecraftInstance::guessLevel(const QString &line, MessageLevel::Enum level)
+{
+ QRegularExpression re("\\[(?<timestamp>[0-9:]+)\\] \\[[^/]+/(?<level>[^\\]]+)\\]");
+ auto match = re.match(line);
+ if(match.hasMatch())
+ {
+ // New style logs from log4j
+ QString timestamp = match.captured("timestamp");
+ QString levelStr = match.captured("level");
+ if(levelStr == "INFO")
+ level = MessageLevel::Message;
+ if(levelStr == "WARN")
+ level = MessageLevel::Warning;
+ if(levelStr == "ERROR")
+ level = MessageLevel::Error;
+ if(levelStr == "FATAL")
+ level = MessageLevel::Fatal;
+ if(levelStr == "TRACE" || levelStr == "DEBUG")
+ level = MessageLevel::Debug;
+ }
+ else
+ {
+ // Old style forge logs
+ if (line.contains("[INFO]") || line.contains("[CONFIG]") || line.contains("[FINE]") ||
+ line.contains("[FINER]") || line.contains("[FINEST]"))
+ level = MessageLevel::Message;
+ if (line.contains("[SEVERE]") || line.contains("[STDERR]"))
+ level = MessageLevel::Error;
+ if (line.contains("[WARNING]"))
+ level = MessageLevel::Warning;
+ if (line.contains("[DEBUG]"))
+ level = MessageLevel::Debug;
+ }
+ if (line.contains("overwriting existing"))
+ return MessageLevel::Fatal;
+ if (line.contains("Exception in thread") || line.contains(QRegularExpression("\\s+at ")))
+ return MessageLevel::Error;
+ return level;
+}
+
#include "MinecraftInstance.moc"
diff --git a/logic/minecraft/MinecraftInstance.h b/logic/minecraft/MinecraftInstance.h
index 45589daf..7ed659a7 100644
--- a/logic/minecraft/MinecraftInstance.h
+++ b/logic/minecraft/MinecraftInstance.h
@@ -40,6 +40,9 @@ public:
/// create an environment for launching processes
virtual QProcessEnvironment createEnvironment() override;
+
+ /// guess log level from a line of minecraft log
+ virtual MessageLevel::Enum guessLevel(const QString &line, MessageLevel::Enum level);
};
typedef std::shared_ptr<MinecraftInstance> MinecraftInstancePtr;