#ifndef SystemLog_MODEL_H
#define SystemLog_MODEL_H
-
#include <cstdint>
-#include <vector>
-
+#include <deque>
namespace OHOS {
enum class SystemLogType {
POWER_ON = 0, // 开机
};
struct SystemLogData {
- SystemLogType type; //类型
- uint32_t timestamp; //时间戳
+ SystemLogType type; // 类型
+ uint32_t timestamp; // 时间戳
};
class SystemLogModel {
bool loadLog();
// 获取日志记录
- std::vector<SystemLogData> getLogData();
+ const std::deque<SystemLogData> &getLogData() const; // 返回 deque 的常量引用
- size_t getLogSize();
+ size_t getLogSize() const; // 返回日志数量
uint32_t GetCurrentTime();
SystemLogModel(const SystemLogModel &) = delete;
SystemLogModel &operator=(const SystemLogModel &) = delete;
- std::vector<SystemLogData> logData; // 用于存储日志数据
+ std::deque<SystemLogData> logData; // 用于存储日志数据
};
} // namespace OHOS
#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"
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(); // 从前端删除最早的日志
}
// 将所有日志写入文件
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