您的位置:首页 > 科技 > IT业 > spdlog学习笔记

spdlog学习笔记

2024/10/7 0:17:18 来源:https://blog.csdn.net/jianfeng123123/article/details/139805685  浏览:    关键词:spdlog学习笔记

学习spdlog的一些记录

项目下载

git clone https://github.com/gabime/spdlog.git

创建异步日志器

void initSpdlog(const std::string& strPath)
{std::string strLogPath = strPath + "/logs/skyense.log";// 异步就一定需要线程或线程池+日志队列,这里给一个线程,队列1024个字节// spdlog::init_thread_pool(1024 , 1);// 创建一个回滚日志,这里使用了工厂,类型是异步工厂,参数:日志名称、路径、文件大小、文件个数// file_logger = spdlog::rotating_logger_mt<spdlog::async_factory>("file_logger", strLogPath , 1024 * 1024 * 5, 5);// 需要输出日志的等级// file_logger->set_level(spdlog::level::info);// spdlog::flush_every(std::chrono::seconds(1));// file_logger->set_pattern("[%n] [%Y-%m-%d %H:%M:%S.%e] [%l] [%t] [%s %!:%#]  %v");// 回收// spdlog::drop_all();//获取某个日志器// spdlog::get("file_logger")->info("loggers can be retrieved from a global");// 异步就一定需要线程或线程池+日志队列,这里给一个线程,队列1024个字节spdlog::init_thread_pool(1024 , 1);auto formatter = std::make_unique<spdlog::pattern_formatter>();auto async_log_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(strLogPath , 1024 * 1024 * 5 , 5);formatter->add_flag<Skyense_formatter_flag>('*').set_pattern("[%*] [%n] [%Y-%m-%d %H:%M:%S.%e] [%l] [%P] [thread %t] [%s %!:%#]  %v");async_log_sink->set_formatter(std::move(formatter));std::vector<spdlog::sink_ptr> sinks;sinks.push_back(std::move(async_log_sink));//auto stdout_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();stdout_sink->set_pattern("[%n] [%Y-%m-%d %H:%M:%S.%e] [%l] [%P] [thread %t] [%s %!:%#]  %v");sinks.push_back(std::move(stdout_sink));//auto logger_skyense = std::make_shared<spdlog::async_logger>("skyense", sinks.begin(), sinks.end() , spdlog::thread_pool());logger_skyense->set_level(spdlog::level::info);logger_skyense->flush_on(spdlog::level::warn);spdlog::flush_every(std::chrono::seconds(3));spdlog::register_logger(std::move(logger_skyense));
}  

使用

直接通过名字获取到日志对象(spdlog创建的时候已经在全局创建,内部通过单例实现)

SPDLOG_LOGGER_ERROR(spdlog::get("skyense"),"Send Sn Arm failed");

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com