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

  • 您必须理解lambda表达式与lazy表达式(它构造了一个稍后调用的函数;当用流调用该函数时,它将执行格式化)之间的区别以及一个实际的流表达式,它在执行流时在流中生成输出。
    expr::format\u date\u time
    boost::log::expressions
    命名空间中的其他组件用于为过滤器和格式化程序组成lambda表达式。它们不能在实际的流输出表达式中使用

    调用
    sink.set_formatter
    时,您必须提供一个函数,该函数在调用时将执行日志记录格式设置。有多种方法来描述该函数。一种方法是使用lambda表达式,就像您的例子中的#1一样,从
    expr::stream
    expr::format
    开始。另一种方法是编写函数从零开始计算,就像您的例子#2一样,但在该函数中,您不能再使用lambda表达式

    您可以查看Boost.Log示例(例如,或),了解如何设置日期/时间和严重性级别的格式。关于这些示例,需要注意的重要部分包括:

    • 有一个
      操作符