Boost.log库使用方法

Boost研究:Boost Log 日志系统用于记录软件运行过程中的关键信息,是大型CAx软件系统的一个重要的组件。本文拟对Boost.Log模块进行分析,旨在记录其技术要点。 阅读详情

做服务器开发首要做的事情,就是将日志系统建立起来。这个系统也是方便我们检查服务器的问题。

完整代码可以去这里看:
下载地址
boost.log库结构

初始化日志系统

这是一个初始化日志系统的代码。我这里是使用了一个配置文件来做boost.log的设置的。所以代码写起来是非常的简洁。

#include <fstream>

#include <boost/filesystem.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/from_stream.hpp>
#include <boost/log/utility/setup/formatter_parser.hpp>
#include <boost/log/utility/setup/filter_parser.hpp>

bool init_log_environment(std::string _cfg)
{
	namespace logging = boost::log;
	using namespace logging::trivial;

	if (!boost::filesystem::exists("./log/"))
	{
		boost::filesystem::create_directory("./log/");
	}
	logging::add_common_attributes();

	logging::register_simple_formatter_factory<severity_level, char>("Severity");
	logging::register_simple_filter_factory<severity_level, char>("Severity");

	std::ifstream file(_cfg);
	try
	{
		logging::init_from_stream(file);
	}
	catch (const std::exception& e)
	{
		std::cout << "init_logger is fail, read log config file fail. curse: " << e.what() << std::endl;
		exit(-2);
	}
	return true;
}

其实最核心的代码就是logging::init_from_stream这个函数。他能加载你对日志的配置信息。这样比起一般将sink设置,日志级别设置写到代码里面的方式要更加简单。接下来我们来看看配置文件的写法。

配置日志

[Core]
DisableLogging=false
Filter="%Severity% >= trace"

[Sinks.console]
Filter="%Severity% > trace "
Destination=Console
Format="[%TimeStamp%] [%Severity%] [%Channel%] %Message%"
Asynchronous=false
AutoFlush=true

#    trace,
[Sinks.trace]
Filter="%Severity% = trace"
Destination=TextFile
boost log库链接问题 1. 使用动态库时,要定义BOOST_LOG_DYN_LINK或者BOOST_ALL_DYN_LINK 否则会出现如下错误: CMakeFiles/IrcChatData.dir/src/main.cpp.o: In function `boost::log::v2s_mt_posix::sources::basic_logger<char, boost::log::v2s_m... 阅读详情

相关推荐

boost log 使用碰到的问题.

boost log 使用碰到的问题. 2011年12月30日   好不容易编译通过了Boost库和Log库,使用时却发现报如下错误:   1>------ Build started: Project: log, Configuration: Debug Win32 ------   1> stdafx.cpp   1> log.cpp   1>c:\program ...

ncs478yl 371

boost的log使用

以前使用log4cpp,boost增加了log库改用了boost的, 其实在用法上差不了太多 log影响性能最基本的有2个地方 一个是console显示,一个是auto_flush不通过缓存直接写入 1 #include "stdafx.h" 2 #include "SLog.h" 3 4 #include 5 #include 6 #incl

zhanghuan_wangkai的博客 3102

【BOOST C++ 19 应用库】(1)Boost.log

Boost.Log 是 Boost 中的日志记录库。它支持众多后端以各种格式记录数据。通过以不同方式捆绑服务和转发日志条目的前端访问后端。例如,有一个前端使用线程异步转发日志条目。前端可以有过滤器来忽略某些日志条目。他们定义了如何将日志条目格式化为字符串。所有这些功能都是可扩展的,这使得 Boost.Log 成为一个强大的库。

gongdiwudu的专栏 5479

使用Boost库实现日志功能是一种非常方便的方法

其中,Boost.Log库提供了丰富的日志功能接口,可以满足不同场景下的日志需求。通过设置日志过滤器,我们可以控制输出哪些级别的日志信息。但是,仅仅输出文本信息有时候是不够的,我们可能需要以更自定义的方式输出日志信息。关键字参数还可以用于指定输出日志的其它格式,例如输出当前线程ID、函数名等信息。关键在于深入了解Boost.Log库的表达式和过滤器语法,以便能够灵活地设置日志输出信息。首先,我们先看一下如何使用Boost.Log库进行简单的日志输出。关键字参数,我们可以指定输出日志的格式。

HackVibe的博客 404

使用boost::log库实现日志记录的方法

在上述代码中,我们定义了一个枚举类型severity_level来表示日志的不同等级,然后定义了init_logging函数,用于初始化日志输出的格式。在这个函数中,我们首先打开一个记录对象,然后向这个记录对象中写入消息,并将等级与消息关联起来,最后将这个记录推送到日志记录器中。在上面的代码中,我们首先创建了一个带有等级的日志记录器,然后调用init_logging函数来初始化日志输出的格式。至此,我们就成功地使用boost::log库实现了一个简单的日志记录功能。首先,我们需要定义一个日志记录器。

techDM的博客 636

boost::log::filter的使用实例

以上代码中,我们使用了core::get()函数获取日志核心对象,并通过set_filter函数设置了过滤条件,即只输出严重性为warning及以上级别的日志。以上即是boost::log::filter的使用实例,通过上述示例代码可以轻松地掌握boost::log::filter的使用方法,并用于实际的日志处理中。以上代码中,我们使用了BOOST_LOG_TRIVIAL宏来记录不同级别的日志,并在输出时指定了日志的严重性,以便过滤器对其进行过滤。boost::log::filter的使用实例。

James_CODER的博客 270

使用boost::log模块测量性能 并进行进制数据转储

在上面的代码中,我们添加了一些新的头文件,包括boost/log/core.hpp、boost/log/expressions.hpp、boost/log/sinks/binary_file.hpp和boost/log/sources/logger.hpp。在C++中,Boost库提供了一个强大的日志库boost::log,它不仅可以帮助我们方便地记录日志,还可以用于测量和分析代码的性能。总结起来,使用boost::log模块可以方便地测量代码的性能,并将测量结果以进制数据的形式进行转储。

ScriptCharm的博客 193

MindIE与vLLM-Ascend性能对决:Qwen3在昇腾910B上的推理效率实测

本文深度对比了昇腾910B平台上两大推理框架MindIE与vLLM-Ascend的性能表现。通过实测Qwen3系列模型,详细分析了二者在单卡、多卡场景下的推理效率、扩展性及生产环境适用性,为AI算力基础设施选型提供关键参考。

weixin_29214335的博客 1180

在MCUXpresso上通过J-link烧写KW45

背景: KW45B是nxp 的ble npi产品,其使用的IDE为MCUXpressso或者IAR,MCUXpressso有一些bug,但是由于MCUXpressso阅读查找代码相对IAR容易,所以我经常使用的MCUXpressso进行开发。当然IAR也有其优势,比如编译、烧写速度相对MCUXpressso更快,是比较通用的一个平台,而MCUXpressso是NXP独有的。 Kw45有两种烧写方式,一是使用MCUlink,二是使用Jlink。NXP ble 产品线提供的IDE资料里有最新的15.0版本的

weixin_41889258的博客 2859

36 Agent Memory:如何让智能体记住该记的东西

Agent 会调用工具,只能说明它有了行动能力。要让它跨会话、跨任务持续工作,还需要一套可治理的 Memory 系统。本文讲清上下文窗口、RAG 和 Agent Memory 的区别,以及工作记忆、情景记忆、语义记忆、程序记忆该如何分层设计。

老于的笔记的专栏 88

pycharm下载continue插件接入DeepSeek的API,向其提问输出乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2219

在armv8架构中,有哪些是serror

(3)、RAS(Reliability, Availability, and Serviceability)错误:一些对于系统的可靠性、可用性和可维护性有影响的错误可能会触发 SError。(2)、ECC(Error Correction Code)错误:在访问带有错误校验的内存(如ECC内存)时,如果发现错误校验失败,可能会产生SError。2、其实呢,大多数Serror都是实现定义的,真正实现的serror就没有多少个。Serror(也称System Error),是异步异常的一种,一般是来自。

baron-周贺贺-代码改变世界ctw 1013

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

看完就会!手把手教您如何正确开启飞牛Nas 虚拟机的 IOMMU 硬件直通,让虚拟机的性能飙升!

XiaoqiangClub的博客 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: C语言利用openSSL库AES模块加密
下一篇: C语言IP地址知识
erlang_hell
博客等级 码龄14年 57粉丝 89原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值