Skip to content

Commit 1f4b73d

Browse files
lJxDababdeepin-bot[bot]
authored andcommitted
fix: Device Manager log optimization (AMEND)
modify q-level to qC-level and add log monitor to push Device Manager log optimization Log: modify q-level to qC-level and add log monitor to push Device Manager log optimization Bug: https://pms.uniontech.com/task-view-342033.html (cherry picked from commit 01e100a)
1 parent 94b3d2b commit 1f4b73d

5 files changed

Lines changed: 99 additions & 4 deletions

File tree

deepin-devicemanager/assets/deepin-devicemanager.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
"submodules": [
55
{
66
"name": "deepin-devicemanager",
7-
"filter": "org.deepin.devicemanager.appLog",
7+
"filter": "",
88
"exec": "/usr/bin/deepin-devicemanager",
99
"logType": "journal",
10-
"logPath": "~/.cache/deepin/deepin-devicemanager/deepin-devicemanager.log"
10+
"logPath": ""
1111
}
1212
],
1313
"visible": true,

deepin-devicemanager/assets/org.deepin.devicemanager.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
"magic": "dsg.config.meta",
33
"version": "1.0",
44
"contents": {
5+
"rules": {
6+
"value": "*.debug=false;*.info=false;*.warning=true",
7+
"serial": 0,
8+
"flags": [
9+
"global"
10+
],
11+
"name": "rules",
12+
"name[zh_CN]": "日志规则",
13+
"description": "log rules",
14+
"description[zh_CN]": "日志规则",
15+
"permissions": "readwrite",
16+
"visibility": "public"
17+
},
518
"specialComType": {
619
"value": -1,
720
"serial": 0,
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
2+
//
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
#include "LogConfigread.h"
5+
#include "dtkcore_global.h"
6+
#include "qglobal.h"
7+
#include <QLoggingCategory>
8+
#include <QObject>
9+
#include <DConfig>
10+
11+
DCORE_USE_NAMESPACE
12+
13+
MLogger::MLogger(QObject *parent)
14+
: QObject(parent), m_rules(""), m_config(nullptr) {
15+
QByteArray logRules = qgetenv("QT_LOGGING_RULES");
16+
// qunsetenv 之前一定不要有任何日志打印,否则取消环境变量设置不会生效
17+
qunsetenv("QT_LOGGING_RULES");
18+
// set env
19+
m_rules = logRules;
20+
// set dconfig
21+
m_config = DConfig::create("org.deepin.devicemanager", "org.deepin.devicemanager");
22+
logRules = m_config->value("rules").toByteArray();
23+
appendRules(logRules);
24+
setRules(m_rules);
25+
// watch dconfig
26+
connect(m_config, &DConfig::valueChanged, this, [this](const QString &key) {
27+
if (key == "rules") {
28+
setRules(m_config->value(key).toByteArray());
29+
}
30+
});
31+
}
32+
33+
MLogger::~MLogger() { m_config->deleteLater(); }
34+
35+
void MLogger::setRules(const QString &rules) {
36+
auto tmpRules = rules;
37+
m_rules = tmpRules.replace(";", "\n");
38+
QLoggingCategory::setFilterRules(m_rules);
39+
}
40+
41+
void MLogger::appendRules(const QString &rules) {
42+
QString tmpRules = rules;
43+
tmpRules = tmpRules.replace(";", "\n");
44+
auto tmplist = tmpRules.split('\n');
45+
for (int i = 0; i < tmplist.count(); i++)
46+
if (m_rules.contains(tmplist.at(i))) {
47+
tmplist.removeAt(i);
48+
i--;
49+
}
50+
if (tmplist.isEmpty())
51+
return;
52+
m_rules.isEmpty() ? m_rules = tmplist.join("\n")
53+
: m_rules += "\n" + tmplist.join("\n");
54+
}
55+
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
2+
//
3+
// SPDX-License-Identifier: GPL-3.0-or-later
4+
#include <QObject>
5+
#include <dtkcore_global.h>
6+
7+
DCORE_BEGIN_NAMESPACE
8+
class DConfig;
9+
DCORE_END_NAMESPACE
10+
11+
class MLogger : public QObject {
12+
Q_OBJECT
13+
public:
14+
explicit MLogger(QObject *parent = nullptr);
15+
~MLogger();
16+
17+
inline QString rules() const { return m_rules; }
18+
void setRules(const QString &rules);
19+
20+
private:
21+
void appendRules(const QString &rules);
22+
23+
private:
24+
QString m_rules;
25+
Dtk::Core::DConfig *m_config;
26+
};

deepin-devicemanager/src/main.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include <stdlib.h>
2222
#include <signal.h>
2323
#include <DLog>
24-
24+
#include "LogConfigread.h"
2525
using namespace DDLog;
2626

2727
DWIDGET_USE_NAMESPACE
@@ -42,12 +42,13 @@ void notify(int argc, char *argv[]);
4242

4343
int main(int argc, char *argv[])
4444
{
45+
MLogger();
46+
4547
// /usr/bin/devicemanager notify
4648
if (argc > 2 && QString(argv[1]).contains("notify")) {
4749
notify(argc, argv);
4850
return -1;
4951
}
50-
5152
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 8, 0))
5253
Dtk::Core::DLogManager::registerJournalAppender();
5354
#else

0 commit comments

Comments
 (0)