#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_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)); /* 创建一个线程池输出Logger */ auto logger_threadPool = std::make_shared("ThreadPool",begin(sinks),end(sinks)); /* 注册到注册表 */ spdlog::register_logger(logger_main); spdlog::register_logger(logger_MQTT); spdlog::register_logger(logger_threadPool); /* 设置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()); } }