67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
#include "core/System.h"
|
|
#include "utils/Logger.h"
|
|
#include "config/SystemConfig.h"
|
|
#include <iostream>
|
|
#include <thread>
|
|
#include <csignal>
|
|
#include <filesystem>
|
|
|
|
volatile sig_atomic_t running = true;
|
|
|
|
void signalHandler(int signum) {
|
|
std::cout << "Interrupt signal (" << signum << ") received.\n";
|
|
running = false;
|
|
}
|
|
|
|
LogLevel getLogLevelFromString(const std::string& level) {
|
|
if (level == "debug") return LogLevel::DEBUG;
|
|
if (level == "info") return LogLevel::INFO;
|
|
if (level == "warning") return LogLevel::WARNING;
|
|
if (level == "error") return LogLevel::ERROR;
|
|
return LogLevel::INFO; // 默认级别
|
|
}
|
|
|
|
int main(int argc, char* argv[]) {
|
|
try {
|
|
// 设置信号处理
|
|
signal(SIGINT, signalHandler);
|
|
signal(SIGTERM, signalHandler);
|
|
|
|
// 创建日志目录
|
|
std::filesystem::create_directories("logs");
|
|
|
|
// 加载系统配置
|
|
SystemConfig::instance().load("config/system_config.json");
|
|
|
|
// 初始化日志系统
|
|
Logger::initialize(SystemConfig::instance().logging.file, getLogLevelFromString(SystemConfig::instance().logging.level));
|
|
Logger::info("Starting system...");
|
|
Logger::debug("Log level set to: ", SystemConfig::instance().logging.level);
|
|
|
|
// 初始化系统
|
|
System system;
|
|
if (!system.initialize()) {
|
|
Logger::error("Failed to initialize system");
|
|
return 1;
|
|
}
|
|
|
|
// 启动系统
|
|
system.start();
|
|
Logger::info("System running...");
|
|
|
|
// 主循环
|
|
while (running) {
|
|
std::this_thread::sleep_for(std::chrono::seconds(1));
|
|
}
|
|
|
|
// 停止系统
|
|
system.stop();
|
|
Logger::info("System stopped");
|
|
|
|
return 0;
|
|
}
|
|
catch (const std::exception& e) {
|
|
std::cerr << "Fatal error: " << e.what() << std::endl;
|
|
return 1;
|
|
}
|
|
}
|