系统:修改系统开关机日志的存储方式
authorCaisking <3449750381@qq.com>
Tue, 8 Oct 2024 09:25:02 +0000 (17:25 +0800)
committerCaisking <3449750381@qq.com>
Tue, 8 Oct 2024 09:25:02 +0000 (17:25 +0800)
code/sdk/application/wearable/fd230app/nativeui/system/include/SystemLogModel.h
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemLogModel.cpp
code/sdk/application/wearable/service/msg_center/src/notify/debug_output_notification/debug_output_notification.cpp

index f80b8e3..63022c9 100644 (file)
@@ -1,10 +1,8 @@
 #ifndef SystemLog_MODEL_H
 #define SystemLog_MODEL_H
 
-
 #include <cstdint>
-#include <vector>
-
+#include <deque> 
 namespace OHOS {
 enum class SystemLogType {
   POWER_ON = 0,    // 开机
@@ -15,8 +13,8 @@ enum class SystemLogType {
 };
 
 struct SystemLogData {
-  SystemLogType type; //类型
-  uint32_t timestamp; //时间戳
+  SystemLogType type; // 类型
+  uint32_t timestamp; // 时间戳
 };
 
 class SystemLogModel {
@@ -30,9 +28,9 @@ public:
   bool loadLog();
 
   // 获取日志记录
-  std::vector<SystemLogData> getLogData();
+  const std::deque<SystemLogData> &getLogData() const; // 返回 deque 的常量引用
 
-  size_t getLogSize();
+  size_t getLogSize() const; // 返回日志数量
 
   uint32_t GetCurrentTime();
 
@@ -44,7 +42,7 @@ private:
   SystemLogModel(const SystemLogModel &) = delete;
   SystemLogModel &operator=(const SystemLogModel &) = delete;
 
-  std::vector<SystemLogData> logData; // 用于存储日志数据
+  std::deque<SystemLogData> logData; // 用于存储日志数据
 };
 } // namespace OHOS
 
index 208c1fb..3336cdd 100644 (file)
 #include <chrono>
 #include <cstdlib>
 #include <ctime>
+#include <deque> 
 #include <fstream>
 #include <iostream>
 #include <sstream>
 #include <string>
 #include <sys/time.h>
 #include <thread>
-#include <vector>
 
 #define SYSTEM_LOG_FILE_PATH "/system/system_log.txt"
 
@@ -61,15 +61,14 @@ uint32_t SystemLogModel::GetCurrentTime() {
   return time;
 }
 
-//保存日志
 // 保存日志
 bool SystemLogModel::saveLog(SystemLogData data) {
   // 将新日志添加到日志数据
   logData.push_back(data);
 
   // 如果超过限制,删除最早的日志
-  if (logData.size() > 50) {
-    logData.erase(logData.begin());
+  while (logData.size() > 50) {
+    logData.pop_front(); // 从前端删除最早的日志
   }
 
   // 将所有日志写入文件
@@ -98,20 +97,29 @@ bool SystemLogModel::loadLog() {
 
   logData.clear();
   SystemLogData data;
-  int type; 
+  int type;
   while (ifs >> type >> data.timestamp) {
-    data.type = static_cast<OHOS::SystemLogType>(type); // 转换为 SystemLogType
-    logData.push_back(data); // 将读取的日志数据存入 logData
+    data.type = static_cast<OHOS::SystemLogType>(type);
+    logData.push_back(data);
   }
+
+  // // 如果超过限制,删除最早的日志
+  // while (logData.size() > 50) {
+  //   logData.pop_front(); // 从前端删除最早的日志
+  // }
+  
   WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Loaded %d logs from file",
                 logData.size());
 
   return true;
 }
-// 获取日志记录
-std::vector<SystemLogData> SystemLogModel::getLogData() { return logData; }
+
+// 获取日志记录,返回deque
+const std::deque<SystemLogData> &SystemLogModel::getLogData() const {
+  return logData; 
+}
 
 // 获取日志大小
-size_t SystemLogModel::getLogSize() { return logData.size(); }
+size_t SystemLogModel::getLogSize() const { return logData.size(); }
 
 } // namespace OHOS
\ No newline at end of file
index b82b3de..8a83b91 100644 (file)
@@ -42,6 +42,7 @@
 #include <string>
 #include <sys/types.h>
 #include <vector>
+#include <deque> 
 namespace OHOS
 {
 
@@ -208,7 +209,7 @@ namespace OHOS
             return "目前没有日志";  
         }  
 
-        std::vector<SystemLogData> systemlogs = logModel->getLogData();  
+        std::deque<SystemLogData> systemlogs = logModel->getLogData();  
         std::ostringstream str;  
 
         for (int i = 0; i < logSize; i++)