forked from quickshell/quickshell
core/log: add fancy logger
This commit is contained in:
parent
533b389742
commit
46f48f2f87
4 changed files with 85 additions and 4 deletions
|
@ -37,6 +37,7 @@ qt_add_library(quickshell-core STATIC
|
||||||
types.cpp
|
types.cpp
|
||||||
qsmenuanchor.cpp
|
qsmenuanchor.cpp
|
||||||
clock.cpp
|
clock.cpp
|
||||||
|
logging.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set_source_files_properties(main.cpp PROPERTIES COMPILE_DEFINITIONS GIT_REVISION="${GIT_REVISION}")
|
set_source_files_properties(main.cpp PROPERTIES COMPILE_DEFINITIONS GIT_REVISION="${GIT_REVISION}")
|
||||||
|
|
74
src/core/logging.cpp
Normal file
74
src/core/logging.cpp
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
#include "logging.hpp"
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
|
#include <qlogging.h>
|
||||||
|
#include <qstring.h>
|
||||||
|
#include <qtenvironmentvariables.h>
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
bool COLOR_LOGS = false; // NOLINT
|
||||||
|
|
||||||
|
void formatMessage(
|
||||||
|
QtMsgType type,
|
||||||
|
const QMessageLogContext& context,
|
||||||
|
const QString& msg,
|
||||||
|
bool color
|
||||||
|
) {
|
||||||
|
const auto* typeString = "[log error]";
|
||||||
|
|
||||||
|
if (color) {
|
||||||
|
switch (type) {
|
||||||
|
case QtDebugMsg: typeString = "\033[34m DEBUG"; break;
|
||||||
|
case QtInfoMsg: typeString = "\033[32m INFO"; break;
|
||||||
|
case QtWarningMsg: typeString = "\033[33m WARN"; break;
|
||||||
|
case QtCriticalMsg: typeString = "\033[31m ERROR"; break;
|
||||||
|
case QtFatalMsg: typeString = "\033[31m FATAL"; break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (type) {
|
||||||
|
case QtDebugMsg: typeString = " DEBUG"; break;
|
||||||
|
case QtInfoMsg: typeString = " INFO"; break;
|
||||||
|
case QtWarningMsg: typeString = " WARN"; break;
|
||||||
|
case QtCriticalMsg: typeString = " ERROR"; break;
|
||||||
|
case QtFatalMsg: typeString = " FATAL"; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const auto isDefault = strcmp(context.category, "default") == 0;
|
||||||
|
|
||||||
|
const char* format = nullptr;
|
||||||
|
|
||||||
|
if (color) {
|
||||||
|
if (type == QtFatalMsg) {
|
||||||
|
if (isDefault) format = "%s: %s\033[0m\n";
|
||||||
|
else format = "%s %s: %s\033[0m\n";
|
||||||
|
} else {
|
||||||
|
if (isDefault) format = "%s\033[0m: %s\n";
|
||||||
|
else format = "%s \033[97m%s\033[0m: %s\n";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (isDefault) format = "%s: %s\n";
|
||||||
|
else format = "%s %s: %s\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDefault) {
|
||||||
|
printf(format, typeString, msg.toStdString().c_str());
|
||||||
|
} else {
|
||||||
|
printf(format, typeString, context.category, msg.toStdString().c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
fflush(stdout);
|
||||||
|
}
|
||||||
|
|
||||||
|
void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& msg) {
|
||||||
|
formatMessage(type, context, msg, COLOR_LOGS);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
void LogManager::setup() {
|
||||||
|
COLOR_LOGS = qEnvironmentVariableIsEmpty("NO_COLOR");
|
||||||
|
qInstallMessageHandler(&messageHandler);
|
||||||
|
}
|
6
src/core/logging.hpp
Normal file
6
src/core/logging.hpp
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class LogManager {
|
||||||
|
public:
|
||||||
|
static void setup();
|
||||||
|
};
|
|
@ -22,10 +22,12 @@
|
||||||
#include <qtextstream.h>
|
#include <qtextstream.h>
|
||||||
#include <qtpreprocessorsupport.h>
|
#include <qtpreprocessorsupport.h>
|
||||||
|
|
||||||
|
#include "logging.hpp"
|
||||||
#include "plugin.hpp"
|
#include "plugin.hpp"
|
||||||
#include "rootwrapper.hpp"
|
#include "rootwrapper.hpp"
|
||||||
|
|
||||||
int qs_main(int argc, char** argv) {
|
int qs_main(int argc, char** argv) {
|
||||||
|
LogManager::setup();
|
||||||
QString configFilePath;
|
QString configFilePath;
|
||||||
QString workingDirectory;
|
QString workingDirectory;
|
||||||
|
|
||||||
|
@ -330,11 +332,9 @@ int qs_main(int argc, char** argv) {
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qInfo() << "shell id:" << shellId;
|
||||||
|
|
||||||
if (printCurrent) {
|
if (printCurrent) return 0;
|
||||||
qInfo() << "shell id:" << shellId;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (auto [var, val]: envOverrides.asKeyValueRange()) {
|
for (auto [var, val]: envOverrides.asKeyValueRange()) {
|
||||||
qputenv(var.toUtf8(), val.toUtf8());
|
qputenv(var.toUtf8(), val.toUtf8());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue