#include "loginit.h" #include "spdlog/spdlog.h" #include "spdlog/sinks/stdout_color_sinks.h" #include "spdlog/sinks/daily_file_sink.h" #include /* 初始化spdlog */ void init_log() { try { /* 创建一个控制台sink */ auto sink_consolse = std::make_shared(); /* 创建一个文件sink,每天一个,00:00创建新的 */ auto sink_file = std::make_shared("log/log.txt",0,0); /* 修改输出格式 */ sink_consolse->set_pattern("[%Y-%m-%d %H:%M:%S] [%^%n%$] [%^%l%$] %s %#: %v"); sink_file->set_pattern("[%Y-%m-%d %H:%M:%S] [%^%n%$] [%^%l%$] %s %#: %v"); std::vector sinks; sinks.push_back(sink_consolse); sinks.push_back(sink_file); /* 创建一个标准输出 */ auto logger_main = std::make_shared("main",begin(sinks),end(sinks)); /* 创建一个MQTT输出Logger */ auto logger_MQTT = std::make_shared("MQTT",begin(sinks),end(sinks)); /* 创建一个UI输出Logger */ auto logger_UI_IPSet = std::make_shared("UI_IPSet",begin(sinks),end(sinks)); /* 创建一个设备IO logger,包括网络和串口 */ auto logger_DeviceIO = std::make_shared("DeviceIO",begin(sinks),end(sinks)); /* 创建一个设备UI logger */ auto logger_UIPortSetting = std::make_shared("PortSetting",begin(sinks),end(sinks)); /* 创建一个设备UI logger */ auto logger_UIKeyFunc = std::make_shared("KeyFunc",begin(sinks),end(sinks)); /* 创建一个“播出时段”的logger */ auto logger_UIBoardCast = std::make_shared("BroadCast",begin(sinks),end(sinks)); /* 创建一个设备UI logger */ auto logger_UIExecPlan = std::make_shared("ExecPlan",begin(sinks),end(sinks)); /* 创建一个设备Info logger */ auto logger_Info = std::make_shared("DevInfo",begin(sinks),end(sinks)); /* 注册到注册表 */ spdlog::register_logger(logger_main); spdlog::register_logger(logger_MQTT); spdlog::register_logger(logger_UI_IPSet); spdlog::register_logger(logger_DeviceIO); spdlog::register_logger(logger_UIBoardCast); spdlog::register_logger(logger_UIPortSetting); spdlog::register_logger(logger_UIKeyFunc); spdlog::register_logger(logger_UIExecPlan); spdlog::register_logger(logger_Info); /* 设置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) { qDebug() << "Log initialization failed: " << ex.what() ; } }