initial commit

This commit is contained in:
Tony
2026-03-26 12:04:08 +08:00
commit 7e8ac7f566
31 changed files with 4304 additions and 0 deletions

59
include/log.hpp Normal file
View File

@@ -0,0 +1,59 @@
#pragma once
#include <functional>
#include <mutex>
#include <string>
#include <vector>
enum class LogLevel { debug = 0, info = 1, warning = 2, error = 3 };
class DaliLog {
public:
static DaliLog& instance() {
static DaliLog inst;
return inst;
}
void setLevel(LogLevel level) {
std::lock_guard<std::mutex> lock(mu_);
level_ = level;
}
LogLevel currentLevel() const { return level_; }
void setSink(std::function<void(const std::string&)> sink) {
std::lock_guard<std::mutex> lock(mu_);
sink_ = std::move(sink);
}
void debugLog(const std::string& message) { log(LogLevel::debug, "DEBUG", message); }
void infoLog(const std::string& message) { log(LogLevel::info, "INFO", message); }
void warningLog(const std::string& message) { log(LogLevel::warning, "WARNING", message); }
void errorLog(const std::string& message) { log(LogLevel::error, "ERROR", message); }
std::vector<std::string> logMessages() const {
std::lock_guard<std::mutex> lock(mu_);
return logs_;
}
void clearLogs() {
std::lock_guard<std::mutex> lock(mu_);
logs_.clear();
}
private:
DaliLog() = default;
void log(LogLevel level, const char* tag, const std::string& message) {
std::lock_guard<std::mutex> lock(mu_);
if (static_cast<int>(level) < static_cast<int>(level_)) return;
const std::string line = std::string("[") + tag + "] " + message;
logs_.push_back(line);
if (sink_) sink_(line);
}
mutable std::mutex mu_;
LogLevel level_ = LogLevel::info;
std::vector<std::string> logs_;
std::function<void(const std::string&)> sink_;
};