如何在自定义格式化函数中使用boost :: log :: expressions :: format_date_time?

时间:2014-06-18 13:57:57

标签: c++ boost-log

要格式化格式化程序中的时间戳,可以简单地编写

sink->set_formatter(expr::stream << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S"));

但是如何在自定义格式化函数中使用boost :: log :: expressions :: format_date_time,如下所示:

void MyFormatter(boost::log::record_view const &rec, boost::log::formatting_ostream &stream)
{
  stream << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S"); // <-- does not work!
  stream << rec[expr::smessage];
}

1 个答案:

答案 0 :(得分:1)

格式化程序lambda样式表达式可以作为函数调用,因此您可以委托它:

auto date_time_formatter = expr::stream << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S");
date_time_formatter(rec, stream);
stream << rec[expr::smessage];