如何在自定义格式功能中使用Boost.Log格式表达式

菲尔

我正在尝试使用带有Boost.Log的自定义格式器。我知道如何执行此操作的set_formatter方法是调用接收器的方法,为它提供本地函数的地址,其中本地函数的签名需要为:

void my_formatter(boost::log::record_view const& rec, boost::log::formatting_ostream& strm)

在其中,my_formatter我可以使用Boost.Log提取API来获取所需的属性值。获得值后,可以将其输出到strm我想这样做,所以我可以轻松地格式化记录中存储的一些自定义属性。但是对于其他更常规的Boost.Log属性,我想继续使用作为该set_formatter方法的关键字参数记录的简单格式表达式有没有办法在my_formatter自定义函数中也使用关键字表达式

例如:

void my_formatter(boost::log::record_view const& rec, boost::log::formatting_ostream& strm)
{
    // here I can get the timestamp attribute and format its ticks value to the stream
    boost::log::value_ref<boost::posix_time::ptime> tstamp_ref =
        boost::log::extract<boost::posix_time::ptime>("TimeStamp", rec);
    const boost::posix_time::ptime& timestamp = tstamp_ref.get();

    strm << timestamp.time_of_day().ticks();
}

然后给一个水槽,我可以打电话给

sink->set_formatter(&my_formatter)

但是Boost.Log给了我一个优雅的(几乎是神奇的)表达式,我可以用它来设置格式化程序:

boost::log::formatter formatter =
    expr::stream
    << expr::format_date_time<boost::posix_time::ptime>(
        "TimeStamp", "%Y/%m/%d, %H:%M:%S.%f, ");

sink->set_formatter(formatter)

我的问题是:有没有办法在我的自定义my_formatter函数中使用格式化程序表达式

谢谢!

安德烈·谢马舍夫(Andrey Semashev)

您可能想要做的是将格式化程序的自定义部分注入到使用Boost.Log创建的格式化表达式中,而不是相反。答案描述了一种通过使用来实现此目标的方法phoenix::bind

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义日期格式的正则表达式

来自分类Dev

如何生成正则表达式以根据其格式配置匹配access.log?

来自分类Dev

如何根据其格式配置生成正则表达式以匹配access.log?

来自分类Dev

如何在Spring Security @ PreAuthorize / @ PostAuthorize批注中使用自定义表达式

来自分类Dev

如何在自定义的编译表达式中使用bindparam()?

来自分类Dev

Swift正则表达式格式?

来自分类Dev

正则表达式-链接格式

来自分类Dev

修复lambda表达式的unrustify格式

来自分类Dev

bash正则表达式格式

来自分类Dev

代数表达式的格式

来自分类Dev

正则表达式动态格式

来自分类Dev

Money的正则表达式格式

来自分类Dev

正则表达式-日期格式

来自分类Dev

正则表达式-链接格式

来自分类Dev

数字格式的正则表达式

来自分类Dev

日期格式的正则表达式

来自分类Dev

格式的正则表达式

来自分类Dev

如何在U-SQL EXTRACT中使用自定义DateTime格式?

来自分类Dev

如何在Hugo中使用自定义输出格式创建易于打印的模板

来自分类Dev

如何在Excel中使用自定义格式将数字从###########更改为####。##。##。##?

来自分类Dev

如何在magento中使用foreach循环添加自定义UL LI格式

来自分类Dev

如何在R中使用正则表达式转换日期格式?

来自分类Dev

如何在javascript中使用正则表达式设置文本格式?

来自分类Dev

如何在Javascript onclick事件中使用正则表达式测试ID(以HTML格式)?

来自分类Dev

用于自定义命令格式的正则表达式验证

来自分类Dev

自定义期间格式的正则表达式(+/-,数字,字母)

来自分类Dev

PHP - 自定义电话号码格式的正则表达式

来自分类Dev

如何使用自定义boost :: log格式化程序输出TimeStamp和ThreadID属性?

来自分类Dev

如何在Android中使用自定义正则表达式来验证EditText输入?

Related 相关文章

  1. 1

    自定义日期格式的正则表达式

  2. 2

    如何生成正则表达式以根据其格式配置匹配access.log?

  3. 3

    如何根据其格式配置生成正则表达式以匹配access.log?

  4. 4

    如何在Spring Security @ PreAuthorize / @ PostAuthorize批注中使用自定义表达式

  5. 5

    如何在自定义的编译表达式中使用bindparam()?

  6. 6

    Swift正则表达式格式?

  7. 7

    正则表达式-链接格式

  8. 8

    修复lambda表达式的unrustify格式

  9. 9

    bash正则表达式格式

  10. 10

    代数表达式的格式

  11. 11

    正则表达式动态格式

  12. 12

    Money的正则表达式格式

  13. 13

    正则表达式-日期格式

  14. 14

    正则表达式-链接格式

  15. 15

    数字格式的正则表达式

  16. 16

    日期格式的正则表达式

  17. 17

    格式的正则表达式

  18. 18

    如何在U-SQL EXTRACT中使用自定义DateTime格式?

  19. 19

    如何在Hugo中使用自定义输出格式创建易于打印的模板

  20. 20

    如何在Excel中使用自定义格式将数字从###########更改为####。##。##。##?

  21. 21

    如何在magento中使用foreach循环添加自定义UL LI格式

  22. 22

    如何在R中使用正则表达式转换日期格式?

  23. 23

    如何在javascript中使用正则表达式设置文本格式?

  24. 24

    如何在Javascript onclick事件中使用正则表达式测试ID(以HTML格式)?

  25. 25

    用于自定义命令格式的正则表达式验证

  26. 26

    自定义期间格式的正则表达式(+/-,数字,字母)

  27. 27

    PHP - 自定义电话号码格式的正则表达式

  28. 28

    如何使用自定义boost :: log格式化程序输出TimeStamp和ThreadID属性?

  29. 29

    如何在Android中使用自定义正则表达式来验证EditText输入?

热门标签

归档