【问题标题】:How does Boost::log print with the same indentation?Boost::log 如何打印相同的缩进?
【发布时间】:2020-05-06 12:26:51
【问题描述】:

我正在尝试创建日志格式:

expr::stream
            << "[" << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f")
            << "] [" << logging::trivial::severity
            << "]  " << expr::message;

哪些输出:

[2020-05-06 12:25:00.978764] [info]  Testing
[2020-05-06 12:25:00.978880] [trace]  Testingtrace

然而,这是默认的控制台日志:

[2020-05-06 12:17:23.190613] [0x00007eff5e9767c0] [info]    Testing
[2020-05-06 12:17:23.190677] [0x00007eff5e9767c0] [trace]   Testingtrace

如您所见,尽管“info”标记比 trace 短,但两条消息都以相同的缩进开始。

我想通过根据严重性级别比较和设置空格数来做到这一点,首先使用“info”进行测试,但是:

logging::trivial::severity == logging::trivial::info

不是有效的布尔表达式。

有谁知道默认格式是如何定义的,我该如何实现这一点。

【问题讨论】:

  • 大概只使用具有最大可能严重性字符串长度的setw 会起作用吗?
  • 哇,谢谢,我有点不好意思说我从来没有听说过这个选项!

标签: c++ boost boost-log


【解决方案1】:

如果有人想知道,尽管 setw 也可以工作,如 Alan Birtles 所示,更简单的解决方案是简单地使用 \t:

expr::stream
            << "[" << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S.%f")
            << "] " << "[" << logging::trivial::severity
            << "]\t" << expr::message;

输出:

[2020-05-06 12:56:41.741449] [info]     Testing
[2020-05-06 12:56:41.741783] [trace]    Testingtrace
[2020-05-06 12:56:41.741826] [warning]  Testingtrace

我不知道我以前怎么没想到这个……smh

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2014-09-05
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多