Skip to content

Commit 4eed94c

Browse files
committed
feat: add cmake find_package support and auto-init for EventLogger
为 EventLogger 添加 cmake find_package 支持和自动初始化 - Add DDEAPIConfig.cmake for find_package(DdeApi) - Auto-init with DSGApplication::id() when not explicitly initialized - Use QJsonObject for structured event log messages - Refactor init logic into doInit() method - Install cmake config to /usr/share/cmake/DDEAPI/ PMS: TASK-388657
1 parent 01b26dc commit 4eed94c

4 files changed

Lines changed: 55 additions & 31 deletions

File tree

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ install-misc:
140140
#Need to copy cpp-include/eventlogger.hpp to /usr/include
141141
mkdir -pv ${DESTDIR}${CPP_INCLUDE_DIR}/dde-api
142142
cp -R cpp-include/eventlogger.hpp ${DESTDIR}${CPP_INCLUDE_DIR}/dde-api
143+
#Install cmake config for find_package(DdeApi)
144+
mkdir -pv ${DESTDIR}${PREFIX}/share/cmake/DDEAPI
145+
cp -R cmake/DDEAPI/DDEAPIConfig.cmake ${DESTDIR}${PREFIX}/share/cmake/DDEAPI
143146

144147
install-dev: ${addprefix install/lib/, ${ININSTALLS}}
145148

cmake/DDEAPI/DDEAPIConfig.cmake

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# SPDX-FileCopyrightText: 2026 UnionTech Software Technology Co., Ltd.
2+
#
3+
# SPDX-License-Identifier: LGPL-3.0-or-later
4+
5+
# DdeApiConfig.cmake
6+
# Provides DdeApi::EventLogger imported target (header-only)
7+
#
8+
# Usage:
9+
# find_package(DdeApi QUIET)
10+
# if(DdeApi_FOUND)
11+
# target_link_libraries(myapp PRIVATE DdeApi::EventLogger)
12+
# endif()
13+
14+
include_guard(GLOBAL)
15+
16+
set(DDE_API_INCLUDE_DIRS "/usr/include")
17+
18+
if(NOT TARGET DDEAPI::EventLogger)
19+
add_library(DDEAPI::EventLogger INTERFACE IMPORTED)
20+
set_target_properties(DDEAPI::EventLogger PROPERTIES
21+
INTERFACE_INCLUDE_DIRECTORIES "${DDE_API_INCLUDE_DIRS}"
22+
)
23+
endif()
24+
25+
set(DdeApi_FOUND TRUE)

cpp-include/eventlogger.hpp

Lines changed: 26 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <QJsonDocument>
88
#include <QJsonObject>
99
#include <QLibrary>
10+
#include <DSGApplication>
1011
#include <DSysInfo>
1112

1213
#include <mutex>
@@ -40,16 +41,16 @@ typedef struct _EventLoggerData
4041
{
4142
qint64 tid;
4243
QString target;
43-
QMap<QString, QString> message;
44+
QJsonObject message;
4445

4546
_EventLoggerData()
4647
: tid(0)
4748
, target(QString())
48-
, message(QMap<QString, QString>())
49+
, message(QJsonObject())
4950
{
5051
}
5152

52-
_EventLoggerData(qint64 tid, const QString &target, const QMap<QString, QString> &message)
53+
_EventLoggerData(qint64 tid, const QString &target, const QJsonObject &message)
5354
: tid(tid)
5455
, target(target)
5556
, message(message)
@@ -81,6 +82,9 @@ class EventLogger
8182
}
8283

8384
std::lock_guard<std::mutex> lock(m_mutex);
85+
if (!m_initialized) {
86+
doInit(QString::fromUtf8(Dtk::Core::DSGApplication::id()), false);
87+
}
8488
if (!m_initialized) {
8589
return;
8690
}
@@ -89,33 +93,14 @@ class EventLogger
8993
m_writeEventLog(json.toJson(QJsonDocument::Compact).toStdString());
9094
}
9195

92-
void writeEventLog(qint64 tid, const QString &target, const QString &key, const QString &value)
93-
{
94-
writeEventLog(EventLoggerData(tid, target, {{key, value}}));
95-
}
96-
9796
bool init(QString package_id, bool enable_sig)
9897
{
9998
if (!shouldEnableEventLog()) {
10099
return false;
101100
}
102101

103102
std::lock_guard<std::mutex> lock(m_mutex);
104-
105-
if (nullptr == m_initialize || nullptr == m_writeEventLog) {
106-
return false;
107-
}
108-
109-
if (m_initialized) {
110-
return true;
111-
}
112-
113-
m_initialized = m_initialize(package_id.toStdString(), enable_sig);
114-
if (!m_initialized) {
115-
qDebug() << "Failed to initialize event logger";
116-
return false;
117-
}
118-
return true;
103+
return doInit(package_id, enable_sig);
119104
}
120105

121106
private:
@@ -147,20 +132,30 @@ class EventLogger
147132
EventLogger(const EventLogger &) = delete; // 禁止拷贝构造函数
148133
EventLogger &operator=(const EventLogger &) = delete; // 禁止赋值运算符
149134

135+
bool doInit(const QString &package_id, bool enable_sig)
136+
{
137+
if (nullptr == m_initialize || nullptr == m_writeEventLog) {
138+
return false;
139+
}
140+
141+
if (m_initialized) {
142+
return true;
143+
}
144+
145+
m_initialized = m_initialize(package_id.toStdString(), enable_sig);
146+
if (!m_initialized) {
147+
qDebug() << "Failed to initialize event logger";
148+
}
149+
return m_initialized;
150+
}
151+
150152
// 将结构体转换为 JSON 内容
151153
QJsonDocument structToJson(const EventLoggerData &data)
152154
{
153155
QJsonObject jsonObject;
154156
jsonObject["tid"] = data.tid;
155157
jsonObject["target"] = data.target;
156-
QJsonObject msgJson;
157-
QMapIterator<QString, QString> iterator(data.message);
158-
while (iterator.hasNext()) {
159-
iterator.next();
160-
msgJson[iterator.key()] = iterator.value();
161-
}
162-
163-
jsonObject["message"] = msgJson;
158+
jsonObject["message"] = data.message;
164159
QJsonDocument jsonDocument(jsonObject);
165160
return jsonDocument;
166161
}

debian/dde-api-dev.install

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/usr/share/gocode/
22
/usr/include/
3+
/usr/share/cmake/DDEAPI/

0 commit comments

Comments
 (0)