From 62da81aa0bebaf3420cd5bd00dffae7f9cacc26a Mon Sep 17 00:00:00 2001 From: re2zero Date: Tue, 28 Apr 2026 14:01:10 +0800 Subject: [PATCH] fix(log): remove write to read-only system directory in initLog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Linux, config.conf is now installed by deb package as read-only. Only create the file on Windows where logDir() is user-writable. Linux端日志配置改为deb包预装只读文件,不再运行时写入系统目录。 Windows端保留原有的自动创建逻辑。 Log: 日志初始化不再写入系统只读目录 PMS: BUG-347813 Influence: 修复磐石系统拦截通知,启动时不再尝试写入/usr/share/目录 --- .reuse/dep5 | 8 +++++++- debian/dde-cooperation.install | 2 ++ debian/deepin-data-transfer.install | 1 + src/apps/data-transfer/CMakeLists.txt | 3 +++ src/apps/dde-cooperation/CMakeLists.txt | 3 +++ src/common/commonutils.cpp | 5 ++++- src/common/config.conf | 2 ++ src/compat/common/commonutils.cpp | 5 ++++- src/compat/plugins/daemon/core/CMakeLists.txt | 3 +++ 9 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 src/common/config.conf diff --git a/.reuse/dep5 b/.reuse/dep5 index 88605a983..022ac7668 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -30,4 +30,10 @@ License: CC0-1.0 Files: android/* Copyright: 2018 Huang JinQun -License: Apache-2.0 \ No newline at end of file +License: Apache-2.0 + +# config files without inline SPDX headers +Files: src/common/config.conf +Copyright: + 2023 - 2026 UnionTech Software Technology Co., Ltd. +License: GPL-3.0-or-later \ No newline at end of file diff --git a/debian/dde-cooperation.install b/debian/dde-cooperation.install index cb4a516c8..eb78ff04b 100644 --- a/debian/dde-cooperation.install +++ b/debian/dde-cooperation.install @@ -10,6 +10,8 @@ usr/lib/*/libco.so* usr/lib/*/libzrpc.so* usr/lib/*/dde-cooperation/plugins/daemon/libdaemon-core.so usr/share/dde-cooperation/translations/*.qm +usr/share/dde-cooperation/config.conf +usr/share/dde-cooperation-daemon/config.conf usr/share/icons/hicolor/scalable/apps/dde-cooperation.svg usr/share/dsg/configs/org.deepin.dde.cooperation/*.json usr/share/applications/dde-cooperation.desktop diff --git a/debian/deepin-data-transfer.install b/debian/deepin-data-transfer.install index c34aac6e2..15fae1255 100644 --- a/debian/deepin-data-transfer.install +++ b/debian/deepin-data-transfer.install @@ -1,6 +1,7 @@ usr/bin/deepin-data-transfer usr/lib/*/libdata-transfer-core.so* usr/share/deepin-data-transfer/translations/*.qm +usr/share/deepin-data-transfer/config.conf usr/share/icons/hicolor/scalable/apps/deepin-data-transfer.svg usr/share/applications/deepin-data-transfer.desktop usr/share/deepin-log-viewer/deepin-log.conf.d/deepin-data-transfer.json diff --git a/src/apps/data-transfer/CMakeLists.txt b/src/apps/data-transfer/CMakeLists.txt index 66fe7d555..5828ba10b 100644 --- a/src/apps/data-transfer/CMakeLists.txt +++ b/src/apps/data-transfer/CMakeLists.txt @@ -147,5 +147,8 @@ else() # 日志收集配置 install(FILES res/linux/deepin-data-transfer.json DESTINATION share/deepin-log-viewer/deepin-log.conf.d) + + # 日志级别配置(只读,由deb包安装) + install(FILES ${CMAKE_SOURCE_DIR}/src/common/config.conf DESTINATION share/${PROJ_NAME}) endif() diff --git a/src/apps/dde-cooperation/CMakeLists.txt b/src/apps/dde-cooperation/CMakeLists.txt index ac032557b..d28c2e9c9 100644 --- a/src/apps/dde-cooperation/CMakeLists.txt +++ b/src/apps/dde-cooperation/CMakeLists.txt @@ -140,4 +140,7 @@ else() # 日志收集配置 install(FILES res/linux/dde-cooperation.json DESTINATION share/deepin-log-viewer/deepin-log.conf.d) + + # 日志级别配置(只读,由deb包安装) + install(FILES ${CMAKE_SOURCE_DIR}/src/common/config.conf DESTINATION share/${PROJ_NAME}) endif() diff --git a/src/common/commonutils.cpp b/src/common/commonutils.cpp index 4fce23c57..ade0e91d4 100644 --- a/src/common/commonutils.cpp +++ b/src/common/commonutils.cpp @@ -142,12 +142,15 @@ void CommonUitls::initLog() QString logConfPath = logDir(); #endif QString configFile = logConfPath + "config.conf"; //日志级别配置 - QFile file(configFile); QSettings settings(configFile, QSettings::IniFormat); +#ifndef linux + // On Windows, create config file if not exists (logDir is user-writable) + QFile file(configFile); if (!file.exists()) { settings.setValue("g_minLogLevel", 2); settings.sync(); } +#endif #ifndef QT_DEBUG int level = settings.value("g_minLogLevel", 2).toInt(); diff --git a/src/common/config.conf b/src/common/config.conf new file mode 100644 index 000000000..b06df345a --- /dev/null +++ b/src/common/config.conf @@ -0,0 +1,2 @@ +[General] +g_minLogLevel=2 diff --git a/src/compat/common/commonutils.cpp b/src/compat/common/commonutils.cpp index 6c04cba5f..74dcd087e 100644 --- a/src/compat/common/commonutils.cpp +++ b/src/compat/common/commonutils.cpp @@ -172,12 +172,15 @@ void CommonUitls::initLog() QString logConfPath = logDir(); #endif QString configFile = logConfPath + "config.conf"; //日志级别配置 - QFile file(configFile); QSettings settings(configFile, QSettings::IniFormat); +#ifndef linux + // On Windows, create config file if not exists (logDir is user-writable) + QFile file(configFile); if (!file.exists()) { settings.setValue("g_minLogLevel", 2); settings.sync(); } +#endif #ifndef QT_DEBUG int level = settings.value("g_minLogLevel", 2).toInt(); diff --git a/src/compat/plugins/daemon/core/CMakeLists.txt b/src/compat/plugins/daemon/core/CMakeLists.txt index 6bc14fd92..2ba59bbb9 100644 --- a/src/compat/plugins/daemon/core/CMakeLists.txt +++ b/src/compat/plugins/daemon/core/CMakeLists.txt @@ -63,3 +63,6 @@ install(TARGETS ${DEEPIN_DAEMON_PLUGIN_DIR} ) +# 日志级别配置(只读,由deb包安装) +install(FILES ${CMAKE_SOURCE_DIR}/src/common/config.conf DESTINATION share/dde-cooperation-daemon) +