#include "net_pub.h" std::shared_ptr CLogger::logger_ = nullptr; Log_t CLogger::log_ = nullptr; std::mutex CLogger::mutex_; Log_t CLogger::getLogger() { if (logger_ == nullptr) { mutex_.lock(); if (logger_ == nullptr) { logger_ = std::make_shared(); logger_->init(); } mutex_.unlock(); } return logger_->log_; } void CLogger::init() { // 创建控制台接收器 auto console_sink = std::make_shared(); console_sink->set_level(spdlog::level::debug); console_sink->set_pattern("[console] [%^%l%$] %v"); // 创建文件接收器 auto file_sink = std::make_shared( "logs/nettrans.log", 1024 * 100, 5); file_sink->set_level(spdlog::level::debug); file_sink->set_pattern("[file] [%^%l%$] %v"); // 创建多接收器日志器 std::vector sinks{console_sink, file_sink}; log_ = std::make_shared("multi_sink", sinks.begin(), sinks.end()); spdlog::register_logger(log_); log_->set_level(spdlog::level::debug); log_->set_pattern("[%H:%M:%S %z] [%n] [%^%l%$] %v"); }