// // Created by atdunbg on 2026/9/20. // #include #include "spdlog/sinks/basic_file_sink.h" #include "spdlog/sinks/stdout_color_sinks.h" namespace Engine::Logger { static bool IsInited = false; void Initialize() { if (IsInited) { throw std::runtime_error("spdlog already inited"); } IsInited = true; // 控制台彩色 sink (多线程安全) auto console = std::make_shared(); console->set_pattern("%^[%T.%e] [%l] [%n] %v%$"); // 文件 auto file = std::make_shared("HelloVulkan.log", true); file->set_pattern("[%Y-%m-%d %T.%e] [%l] [%t] %v"); // 多sink 组合默认 logger // auto logger = std::make_shared("hello", spdlog::sinks_init_list{console, file}); auto logger = std::make_shared("APP", spdlog::sinks_init_list{console, file}); logger->set_level(spdlog::level::trace); logger->flush_on(spdlog::level::warn); // warn 及以上立即 flush,避免崩溃丢日志 spdlog::set_default_logger(logger); } void Shutdown() { if (!IsInited) { throw std::runtime_error("spdlog already shutdown or not init"); } IsInited = false; spdlog::shutdown(); } }