Skip to content

Commit 3615695

Browse files
committed
Add log.h for better logging
1 parent 5a64894 commit 3615695

File tree

4 files changed

+68
-7
lines changed

4 files changed

+68
-7
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ set(CMAKE_AUTOMOC ON)
88
set(CMAKE_AUTORCC ON)
99

1010
set(CMAKE_CXX_EXTENSIONS OFF)
11-
set(CMAKE_CXX_STANDARD 17)
11+
set(CMAKE_CXX_STANDARD 23)
1212
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1313
set(CMAKE_INCLUDE_CURRENT_DIR ON)
1414

src/log.h

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// SPDX-License-Identifier: GPL-2.0-only
2+
#pragma once
3+
#include <print>
4+
5+
enum LogLevel {
6+
FATAL,
7+
WARN,
8+
INFO,
9+
};
10+
11+
constexpr const char *log_level_string(LogLevel level)
12+
{
13+
switch (level) {
14+
case LogLevel::FATAL:
15+
return "fatal";
16+
case LogLevel::WARN:
17+
return "warn";
18+
case LogLevel::INFO:
19+
return "info";
20+
default:
21+
return "unknown";
22+
}
23+
}
24+
25+
template<typename... Args>
26+
static inline void _log(LogLevel level, std::format_string<Args...> fmt, Args &&...args)
27+
{
28+
std::string msg = std::vformat(fmt.get(), std::make_format_args(args...));
29+
switch (level) {
30+
case LogLevel::FATAL:
31+
msg = std::string("\033[1;31m") + log_level_string(level) + ": " + msg + "\033[0m";
32+
break;
33+
case LogLevel::WARN:
34+
msg = std::string("\033[1;33m") + log_level_string(level) + ": " + msg + "\033[0m";
35+
break;
36+
case LogLevel::INFO:
37+
msg = std::string("\033[1;32m") + log_level_string(level) + ": " + msg + "\033[0m";
38+
break;
39+
default:
40+
break;
41+
}
42+
std::println(stderr, "{}", msg);
43+
}
44+
45+
#define die(fmt, ...) \
46+
{ \
47+
_log(LogLevel::FATAL, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \
48+
exit(EXIT_FAILURE); \
49+
}
50+
51+
#define warn(fmt, ...) \
52+
{ \
53+
_log(LogLevel::WARN, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \
54+
}
55+
56+
#define info(fmt, ...) \
57+
{ \
58+
_log(LogLevel::INFO, "[{}:{}] {}", __FILE__, __LINE__, std::format(fmt, ##__VA_ARGS__)); \
59+
}

src/maindialog.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include "environment.h"
1010
#include "evdev-lst-layouts.h"
1111
#include "layoutmodel.h"
12+
#include "log.h"
1213
#include "maindialog.h"
1314
#include "settings.h"
1415
#include "./ui_maindialog.h"
@@ -137,7 +138,7 @@ void setInt(std::vector<std::shared_ptr<Setting>> &settings, QString name, int v
137138
qDebug() << "setInt(): not valid int setting" << name << value;
138139
}
139140
if (value != std::get<int>(setting->value())) {
140-
qDebug() << name << "has changed to" << value;
141+
info("'{} has changed to '{}'", name.toStdString(), value);
141142
xml_set_num(name.toStdString().c_str(), value);
142143
}
143144
}
@@ -153,7 +154,7 @@ void setStr(std::vector<std::shared_ptr<Setting>> &settings, QString name, QStri
153154
qDebug() << "setStr(): not valid string setting" << name << value;
154155
}
155156
if (value != std::get<QString>(setting->value())) {
156-
qDebug() << name << "has changed to" << value;
157+
info("'{} has changed to '{}'", name.toStdString(), value.toStdString());
157158
xml_set(name.toStdString().c_str(), value.toStdString().c_str());
158159
}
159160
}
@@ -204,7 +205,7 @@ void setBool(std::vector<std::shared_ptr<Setting>> &settings, QString name, QStr
204205
}
205206
int boolValue = parseBool(value.toStdString().c_str(), -1);
206207
if (boolValue != std::get<int>(setting->value())) {
207-
qDebug() << name << "has changed to" << value;
208+
info("'{} has changed to '{}'", name.toStdString(), value.toStdString());
208209
xml_set(name.toStdString().c_str(), value.toStdString().c_str());
209210
}
210211
}

src/settings.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#include <QDebug>
22
#include <variant>
3+
#include "log.h"
34
#include "settings.h"
45

56
extern "C" {
@@ -49,7 +50,7 @@ Setting::Setting(QString name, enum settingFileType fileType, enum settingValueT
4950
if (value != std::get<QString>(m_value)) {
5051
m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE;
5152
m_value = value;
52-
qDebug() << "USER OVERRIDE: " << m_name << "=" << value;
53+
info("[user-override] {}: {}", m_name.toStdString(), value.toStdString());
5354
}
5455
break;
5556
}
@@ -58,7 +59,7 @@ Setting::Setting(QString name, enum settingFileType fileType, enum settingValueT
5859
if (value != std::get<int>(m_value)) {
5960
m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE;
6061
m_value = value;
61-
qDebug() << "USER OVERRIDE: " << m_name << "=" << value;
62+
info("[user-override] {}: {}", m_name.toStdString(), value);
6263
}
6364
break;
6465
}
@@ -67,7 +68,7 @@ Setting::Setting(QString name, enum settingFileType fileType, enum settingValueT
6768
if (value != std::get<int>(m_value)) {
6869
m_valueOrigin = LAB_VALUE_ORIGIN_USER_OVERRIDE;
6970
m_value = value;
70-
qDebug() << "USER OVERRIDE: " << m_name << "=" << value;
71+
info("[user-override] {}: {}", m_name.toStdString(), value);
7172
}
7273
break;
7374
}

0 commit comments

Comments
 (0)