使用Boost::Log记录日志
使用Boost的Log库,将日志信息写入文件,日志将按时间滚动。详见代码:
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/log/core.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/sinks/sync_frontend.hpp>
#include <boost/log/sinks/text_ostream_backend.hpp>
#include <boost/log/sources/record_ostream.hpp>
#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/support/date_time.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/trivial.hpp>namespace logging = boost::log;
namespace sinks = boost::log::sinks;
namespace src = boost::log::sources;
namespace expr = boost::log::expressions;
namespace attrs = boost::log::attributes;
namespace keywords = boost::log::keywords;void init_log_lib()
{auto sink = logging::add_file_log(keywords::file_name = "%Y%m%d_%4N.log",keywords::rotation_size = 5 * 1024 * 1024,keywords::time_based_rotation = sinks::file::rotation_at_time_point(23,59,59),keywords::format = (expr::stream<< expr::format_date_time<boost::posix_time::ptime>("TimeStamp","%Y-%m-%d %H:%M:%S") << " <" <<logging::trivial::severity<<"> "<<expr::smessage));sink->locked_backend()->set_file_collector(sinks::file::make_collector(keywords::target = "./logs",keywords::max_size = 500*1024*1024,keywords::min_free_space = 800*1024*1024));sink->locked_backend()->auto_flush(true);sink->locked_backend()->scan_for_files();logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::trace);logging::add_common_attributes();
}void close_log_lib()
{logging::core::get()->remove_all_sinks();
}void log_msg(const std::string& msg)
{src::severity_logger_mt<logging::trivial::severity_level> lg;BOOST_LOG_SEV(lg, logging::trivial::info) << msg;
}int main()
{init_log_lib();log_msg("Hello World!\n");close_log_lib();return 0;
}
使用Boost::Log记录日志相关推荐
- Boost Log : Setting up sinks
Setting up sinks 有时候,trivial(简单的)logging并不能满足要求.例如,想要更精细的日志处理,而不是简单地打印出来.为此,必须构建自定义的sinks,并且将它们注册到co ...
- boost::log模块测试样板,用于检查每个公共标头是否都是独立的并且没有任何缺失的 #includes
boost::log模块测试样板,用于检查每个公共标头是否都是独立的并且没有任何缺失的 #includes 实现功能 C++实现代码 实现功能 boost::log模块测试样板,用于检查每个公共标头是 ...
- boost::log模块测试get_attributes()这个const方法可以获取线程模型内部的互斥锁
boost::log模块测试get_attributes这个const方法可以获取线程模型内部的互斥锁 实现功能 C++实现代码 实现功能 boost::log模块测试get_attributes() ...
- boost::log模块测量转储二进制数据的性能
boost::log模块测量转储二进制数据的性能 实现功能 C++实现代码 实现功能 boost::log模块测量转储二进制数据的性能 C++实现代码 #include <cstdlib> ...
- boost::log模块测量日志记录发射的性能
boost::log模块测量日志记录发射的性能 实现功能 C++实现代码 实现功能 boost::log模块测量日志记录发射的性能 C++实现代码 #define BOOST_NO_DYN_LINK ...
- boost::log模块测试检查插入不会使容器中的现有元素无效
boost::log模块测试检查插入不会使容器中的现有元素无效 实现功能 C++实现代码 实现功能 boost::log模块测试检查插入不会使容器中的现有元素无效 C++实现代码 #define BO ...
- boost::log::attributes::make_function用法的测试程序
boost::log::attributes::make_function用法的测试程序 实现功能 C++实现代码 实现功能 boost::log::attributes::make_function ...
- boost::log::attribute_value_set用法的测试程序
boost::log::attribute_value_set用法的测试程序 实现功能 C++实现代码 实现功能 boost::log::attribute_value_set用法的测试程序 C++实 ...
- boost::log::parse_formatter用法的测试程序
boost::log::parse_formatter用法的测试程序 实现功能 C++实现代码 实现功能 boost::log::parse_formatter用法的测试程序 C++实现代码 #def ...
最新文章
- php 怎么分布式,php分布式怎么部署
- 手动制造报错_一个订单管理系统帮你轻松应对复杂的生产订单管理
- 计算1-100之间 所有能被3 不能被 5整除的数 的 个数,每行打印 5 个
- 产品壁垒_打破人员,流程和产品之间的壁垒
- C++ STL容器vector篇(五) vector容器常用初始化操作总结(一维/二维)
- 1748. The Most Complex Number/LG的数学计划~~~持续更新ing(反素数求解)
- hnu暑期CCF培训之多项式加法
- 新年第一份“欧气”,“中国开发者大调查”第五批中奖名单出炉啦
- 星低级格式化工具_Elixir 数据库查询工具 Ecto 讲解
- Spring Boot打包成jar包
- Understanding Growth
- 前端软件sublime的一些常用快捷键
- 深入理解高级数据结构之红黑树
- JavaEE进阶——Spring学习笔记
- 【每日最爱一句】2013.07.10
- glut 配置,解决“gl/glut.h”: No such file or directory
- 如果你喜欢的女孩有了男朋友,但她男朋友比你差很多,怎么办?
- Simcenter Amesim 2019.1与Matlab/simulink联合仿真-环境配置与例程联合仿真
- 闲着无事,自己写的电脑wifi共享软件---WiFi Freedom
- 3D 可视化入门:渲染管线原理与实践