C++ 如何使用时间戳和严重性字符串? 我使用官方代码成功地设置了接收器格式 sink.set\u格式化程序( expr::流
您提供的代码不完整。在格式化程序表达式中,C++ 如何使用时间戳和严重性字符串? 我使用官方代码成功地设置了接收器格式 sink.set\u格式化程序( expr::流,c++,boost-log,C++,Boost Log,您提供的代码不完整。在格式化程序表达式中,严重性必须是从日志记录中提取严重性级别的一个参数。不清楚在您的情况下它是什么,我怀疑它可能是一个常量,无论日志记录附加的实际严重性级别如何,它都会输出到流中 coloring\u formatter函数不正确,因为它试图对实际流使用格式化程序lambda表达式,如expr::format\u date\u time 您必须理解lambda表达式与lazy表达式(它构造了一个稍后调用的函数;当用流调用该函数时,它将执行格式化)之间的区别以及一个实际的流表达
严重性
必须是从日志记录中提取严重性级别的一个参数。不清楚在您的情况下它是什么,我怀疑它可能是一个常量,无论日志记录附加的实际严重性级别如何,它都会输出到流中
coloring\u formatter
函数不正确,因为它试图对实际流使用格式化程序lambda表达式,如expr::format\u date\u time
expr::format\u date\u time
和boost::log::expressions
命名空间中的其他组件用于为过滤器和格式化程序组成lambda表达式。它们不能在实际的流输出表达式中使用
调用sink.set_formatter
时,您必须提供一个函数,该函数在调用时将执行日志记录格式设置。有多种方法来描述该函数。一种方法是使用lambda表达式,就像您的例子中的#1一样,从expr::stream
或expr::format
开始。另一种方法是编写函数从零开始计算,就像您的例子#2一样,但在该函数中,您不能再使用lambda表达式
您可以查看Boost.Log示例(例如,或),了解如何设置日期/时间和严重性级别的格式。关于这些示例,需要注意的重要部分包括:
- 有一个
操作符