当前位置:网站首页>Boost研究:Boost Log
Boost研究:Boost Log
2022-06-30 11:18:00 【JiNan.YouQuan.Soft】
日志系统用于记录软件运行过程中的关键信息,是大型CAx软件系统的一个重要的组件。
本文拟对Boost.Log模块进行分析,旨在记录其技术要点。
注1:限于笔者研究水平,难免有理解不当,欢迎批评指正。
注2:文章内容会不定期更新,欢迎交流讨论。
一、工作原理
Boost.Log大体上可以由Logging Sources、Logging Core、Logging Sinks等组成:Logging Sources创建log records;Logging Core对log records进行处理;Logging Sinks则完成最终格式化与输出。
Ref. from Boost.Log Design Overview
Logging sources
Getting back to the figure, in the left side your application emits log records with help of loggers - special objects that provide streams to format messages that will eventually be put to log. The library provides a number of different logger types and you can craft many more yourself, extending the existing ones. Loggers are designed as a mixture of distinct features that can be combined with each other in any combination. You can simply develop your own feature and add it to the soup. You will be able to use the constructed logger just like the others - embed it into your application classes or create and use a global instance of the logger. Either approach provides its benefits. Embedding a logger into some class provides a way to differentiate logs from different instances of the class. On the other hand, in functional-style programming it is usually more convenient to have a single global logger somewhere and have a simple access to it.
Generally speaking, the library does not require the use of loggers to write logs. The more generic term "log source" designates the entity that initiates logging by constructing a log record. Other log sources might include captured console output of a child application or data received from network. However, loggers are the most common kind of log sources.
Logging core and filtering
When the set of attribute values is composed, the logging core decides if this log record is going to be processed in sinks. This is called filtering. There are two layers of filtering available: the global filtering is applied first within the logging core itself and allows quickly wiping away unneeded log records; the sink-specific filtering is applied second, for each sink separately. The sink-specific filtering allows directing log records to particular sinks. Note that at this point it is not significant which logging source emitted the record, the filtering relies solely on the set of attribute values attached to the record.
Sinks and formatting
If a log record passes filtering for at least one sink the record is considered to be consumable. If the sink supports formatted output, this is the point when log message formatting takes place. The formatted message along with the composed set of attribute values is passed to the sink that accepted the record. Note that formatting is performed on the per-sink basis so that each sink can output log records in its own specific format.

参考资料
Boost.Loghttps://www.boost.org/doc/libs/1_79_0/libs/log/doc/html/index.html
边栏推荐
- 学习redis实现分布式锁—–自己的一个理解
- 100 important knowledge points that SQL must master: using table aliases
- 再不上市,旷视科技就熬不住了
- 揭秘得物客服IM全链路通信过程
- Compression state DP bit operation
- EMC surge
- Win10 R package installation error: not installed in arch=i386
- How to analyze native crash through GDB
- Xu Lei expressed three thanks for the most difficult 618 in 19 years
- PointDistiller:面向高效紧凑3D检测的结构化知识蒸馏
猜你喜欢
如何通过GDB分析Native Crash
Le talent scientifique 丨 dessins animés qu'est - ce qu'erdma?
There are so many kinds of coupons. First distinguish them clearly and then collect the wool!
达梦数据冲刺科创板,或成A股市场“国产数据库第一股”
Oceanbase installation Yum source configuration error and Solutions
ESP32-C3入门教程 问题篇⑨——Core 0 panic‘ed (Load access fault). Exception was unhandled. vfprintf.c:1528
Multiparty cardinality testing for threshold private set-2021: Interpretation
相对位置编码Transformer的一个理论缺陷与对策
win10 R包安装报错:没有安装在arch=i386
数学(快速幂)
随机推荐
H3C switch emptying configuration
100 important knowledge points that SQL must master: summary data
科普達人丨漫畫圖解什麼是eRDMA?
[leetcode 16] sum of three numbers
Set up your own website (13)
How harmful are these "unreliable" experiences in the postgraduate entrance examination?
R语言查看版本 R包查看版本
100 important knowledge points that SQL must master: updating and deleting data
优惠券种类那么多,先区分清楚再薅羊毛!
Introduction to China Mobile oneos development board
100 important knowledge points that SQL must master: grouping data
使用cookie技术实现历史浏览记录并控制显示的个数
国内首批!阿里云云原生数据湖产品通过信通院评测认证
Go语言学习之Switch语句的使用
Typescript readonlyarray (read only array type) details
Esp32-c3 introductory tutorial basic part ⑪ - reading and writing non-volatile storage (NVS) parameters
ESP32-C3入门教程 问题篇⑨——Core 0 panic‘ed (Load access fault). Exception was unhandled. vfprintf.c:1528
datax json说明
什么是微信小程序,带你推开小程序的大门
Flutter 从零开始 008 表单