diff --git a/src/ui/settings_page.cpp b/src/ui/settings_page.cpp index 4fc3ea8..ea2bdcf 100644 --- a/src/ui/settings_page.cpp +++ b/src/ui/settings_page.cpp @@ -411,24 +411,9 @@ void SettingsPage::onResetConfig() { } void SettingsPage::onClearLogs() { - // 使用与 Logger 相同的路径逻辑 - QString logDir = configManager_->get("app.log_dir").toString(); - if (logDir.isEmpty()) { - logDir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - } - - auto result = clearDirectoryFiles(logDir, {"*.log"}, "日志文件", TruncateMode); - if (result.deletedCount < 0) { - QMessageBox::warning(this, "清除日志", "清除失败,请检查目录权限"); - return; - } - if (result.deletedCount == 0) { - QMessageBox::information(this, "清除日志", "没有可清除的日志文件"); - return; - } - QMessageBox::information(this, "清除日志", - QString("已清空 %1 个日志文件的内容,释放 %2 KB 空间") - .arg(result.deletedCount).arg(result.freedBytes / 1024)); + Logger::clearLogFile(); + LOG_INFO(kTag, "日志文件已通过 Logger 清空"); + QMessageBox::information(this, "清除日志", "日志文件已清空"); statusLabel_->setText("日志文件已清空"); } diff --git a/src/utils/logger.cpp b/src/utils/logger.cpp index 67451a8..b0d2335 100644 --- a/src/utils/logger.cpp +++ b/src/utils/logger.cpp @@ -60,6 +60,15 @@ void Logger::setLogFile(const QString& path) { } } +void Logger::clearLogFile() { + QMutexLocker locker(&mutex_); + if (logFile_ && logFile_->isOpen()) { + logFile_->flush(); + logFile_->resize(0); + logFile_->seek(0); + } +} + void Logger::log(LogLevel level, const QString& tag, const QString& message) { QMutexLocker locker(&mutex_); QString logLine = QString("[%1] [%2] [%3] %4") diff --git a/src/utils/logger.h b/src/utils/logger.h index 4fead08..2c15a14 100644 --- a/src/utils/logger.h +++ b/src/utils/logger.h @@ -39,6 +39,9 @@ public: /** @brief 设置日志文件路径(运行时切换) */ static void setLogFile(const QString& path); + /** @brief 清空日志文件内容(线程安全) */ + static void clearLogFile(); + private: static QString levelToString(LogLevel level); static QString getTimestamp();