【发布时间】:2021-03-14 06:36:29
【问题描述】:
我正在使用 Boost.Log V2 1.75.0 并使用 boost::log::init_from_stream(config); 从配置文件设置我的环境
是否可以通过配置文件声明彩色控制台接收器,或者有什么方法可以将彩色输出添加到控制台?
现在,我添加了与 Boost Trivial Logger 中可用的日志级别一样多的控制台接收器,并按不同的级别过滤它们,但我不认为这是正确的方法。示例:
[Sinks.ConsoleSinkTrace]
Destination=Console
Filter="%Severity% = trace"
Format="\033[0;35m[%TimeStamp%] [%ProcessId%] [%ThreadId%] [%Severity%] - %Message%\033[0m"
Asynchronous=false
AutoFlush=true
[Sinks.ConsoleSinkDebug]
Destination=Console
Filter="%Severity% = debug"
Format="\033[0;34m[%TimeStamp%] [%ProcessId%] [%ThreadId%] [%Severity%] - %Message%\033[0m"
Asynchronous=false
AutoFlush=true
...等等...
更新
我找到了@AndreySemashev 建议的 SO 帖子,但我不太明白,如何将它融入我的项目中: 我的主要期望是我想通过文件配置 Boost.Log,所以:
- 如果我从配置文件中删除控制台接收器,如何将格式化程序设置为接收器? (我猜
sink是一个控制台类型的接收器,如果配置文件中没有这样的部分,则不会被实例化)
sink->set_formatter(&coloring_formatter);
- 如果我提供一个新的格式化程序方法,我假设处理配置文件中给出的整个格式字符串是我的责任。我也想避免这种情况
这些观察结果是否正确,还是我遗漏了什么?
谢谢
【问题讨论】:
-
每个 SO 问题你应该问一个问题。
-
嗨@AndreySemashev,谢谢你的cmets。我会把我的帖子分成三份。