Skip to content

Commit b157a5a

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 b157a5a

4 files changed

Lines changed: 54 additions & 48 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: 25 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,23 @@
77
#include <QJsonDocument>
88
#include <QJsonObject>
99
#include <QLibrary>
10+
#include <DSGApplication>
1011
#include <DSysInfo>
1112

1213
#include <mutex>
1314

1415
#include <dlfcn.h>
1516
#include <unistd.h>
1617

17-
// Enable logging for current system version (debug only, remove before release)
18-
// #define DDE_EVENTLOG_DEBUG_ENABLE_CURRENT_VERSION
19-
2018
namespace DDE_EventLogger {
2119

2220
// Check if event logging should be enabled based on system edition
2321
// Only UosProfessional is enabled by default
2422
inline bool shouldEnableEventLog()
2523
{
26-
#ifdef DDE_EVENTLOG_DEBUG_ENABLE_CURRENT_VERSION
27-
// Debug mode: enable for current system version
28-
return true;
29-
#else
3024
// Production mode: only enable for UosProfessional edition
3125
// Note: DSysInfo is in Dtk::Core namespace
3226
return Dtk::Core::DSysInfo::uosEditionType() == Dtk::Core::DSysInfo::UosProfessional;
33-
#endif
3427
}
3528

3629
typedef bool (*Initialize)(const std::string &package_id, bool enable_sig);
@@ -40,16 +33,16 @@ typedef struct _EventLoggerData
4033
{
4134
qint64 tid;
4235
QString target;
43-
QMap<QString, QString> message;
36+
QJsonObject message;
4437

4538
_EventLoggerData()
4639
: tid(0)
4740
, target(QString())
48-
, message(QMap<QString, QString>())
41+
, message(QJsonObject())
4942
{
5043
}
5144

52-
_EventLoggerData(qint64 tid, const QString &target, const QMap<QString, QString> &message)
45+
_EventLoggerData(qint64 tid, const QString &target, const QJsonObject &message)
5346
: tid(tid)
5447
, target(target)
5548
, message(message)
@@ -81,6 +74,9 @@ class EventLogger
8174
}
8275

8376
std::lock_guard<std::mutex> lock(m_mutex);
77+
if (!m_initialized) {
78+
doInit(QString::fromUtf8(Dtk::Core::DSGApplication::id()), false);
79+
}
8480
if (!m_initialized) {
8581
return;
8682
}
@@ -89,35 +85,6 @@ class EventLogger
8985
m_writeEventLog(json.toJson(QJsonDocument::Compact).toStdString());
9086
}
9187

92-
void writeEventLog(qint64 tid, const QString &target, const QString &key, const QString &value)
93-
{
94-
writeEventLog(EventLoggerData(tid, target, {{key, value}}));
95-
}
96-
97-
bool init(QString package_id, bool enable_sig)
98-
{
99-
if (!shouldEnableEventLog()) {
100-
return false;
101-
}
102-
103-
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;
119-
}
120-
12188
private:
12289
EventLogger()
12390
: m_initialized(false)
@@ -147,20 +114,30 @@ class EventLogger
147114
EventLogger(const EventLogger &) = delete; // 禁止拷贝构造函数
148115
EventLogger &operator=(const EventLogger &) = delete; // 禁止赋值运算符
149116

117+
bool doInit(const QString &package_id, bool enable_sig)
118+
{
119+
if (nullptr == m_initialize || nullptr == m_writeEventLog) {
120+
return false;
121+
}
122+
123+
if (m_initialized) {
124+
return true;
125+
}
126+
127+
m_initialized = m_initialize(package_id.toStdString(), enable_sig);
128+
if (!m_initialized) {
129+
qDebug() << "Failed to initialize event logger";
130+
}
131+
return m_initialized;
132+
}
133+
150134
// 将结构体转换为 JSON 内容
151135
QJsonDocument structToJson(const EventLoggerData &data)
152136
{
153137
QJsonObject jsonObject;
154138
jsonObject["tid"] = data.tid;
155139
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;
140+
jsonObject["message"] = data.message;
164141
QJsonDocument jsonDocument(jsonObject);
165142
return jsonDocument;
166143
}

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)