This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
nettrans/util/net_pub.cpp

42 lines
1.2 KiB
C++
Raw Permalink Normal View History

2024-04-16 21:34:06 +08:00
#include "net_pub.h"
std::shared_ptr<CLogger> 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<CLogger>();
logger_->init();
}
mutex_.unlock();
}
return logger_->log_;
}
void CLogger::init()
{
// 创建控制台接收器
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
console_sink->set_level(spdlog::level::debug);
console_sink->set_pattern("[console] [%^%l%$] %v");
// 创建文件接收器
auto file_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(
"logs/nettrans.log", 1024 * 100, 5);
file_sink->set_level(spdlog::level::debug);
file_sink->set_pattern("[file] [%^%l%$] %v");
// 创建多接收器日志器
std::vector<spdlog::sink_ptr> sinks{console_sink, file_sink};
log_ = std::make_shared<spdlog::logger>("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");
}