#include "loginit.h" #include "spdlog/spdlog.h" #include "spdlog/sinks/stdout_color_sinks.h" #include "spdlog/sinks/daily_file_sink.h" // #include "fmt/base.h" /* 初始化spdlog */ void init_log() { try { /* 给默认记录器用的sink */ auto sink_default = std::make_shared(); /* 创建一个控制台sink */ auto sink_consolse = std::make_shared(); /* 创建一个文件sink,每天一个,00:00创建新的 */ auto sink_file = std::make_shared("log/EyeMap.txt", 0, 0); /* 修改输出格式 */ #if C_DEBUG sink_default->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%s %#] %v %$"); sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] [%s %#] %v%$"); sink_file->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] [%s %#] %v %$"); #elif C_RELEASE sink_default->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] %v %$"); sink_consolse->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] %v %$"); sink_file->set_pattern("%^[%Y-%m-%d %H:%M:%S:%e] [%l] [%n] %v %$"); #endif /* 设置默认日志记录器,设置成自定义的sink */ spdlog::default_logger()->sinks().clear(); spdlog::default_logger()->sinks().push_back(sink_default); /* 创建sink数组 */ std::vector sinks; sinks.push_back(sink_consolse); sinks.push_back(sink_file); /* 创建一个标准输出 */ auto logger_main = std::make_shared("main",begin(sinks),end(sinks)); /* 创建一个OSC输出Logger */ auto logger_OSC = std::make_shared("EyeMap",begin(sinks),end(sinks)); /* 创建一个OscData输出Logger */ auto logger_OscData = std::make_shared("OscData",begin(sinks),end(sinks)); /* 注册到注册表 */ spdlog::register_logger(logger_main); spdlog::register_logger(logger_OSC); spdlog::register_logger(logger_OscData); /* 设置spdlog输出级别,默认的估计不输出debug这个级别 */ #ifdef C_DEBUG spdlog::set_level(spdlog::level::trace); spdlog::flush_on(spdlog::level::trace); #elif C_RELEASE spdlog::set_level(spdlog::level::info); spdlog::flush_on(spdlog::level::info); #endif // SPDLOG_LOGGER_DEBUG(logger_main,"******* 有行号且debug也能输出 *******"); } catch (const spdlog::spdlog_ex& ex) { fmt::print("Log initialization failed: %s\n", ex.what()); } }