如何为多行字符串添加前缀?

how to add prefix for multi lines string?

有时,源字符串包含多行。从日志结果的第二行开始,我发现没有前缀。我不想将源字符串拆分为单行,有什么想法吗?

int main()
{
    BOOST_LOG_TRIVIAL(info) << "hello\nworld";
    return 0;
}

输出:

[2017-12-05 09:49:34.957813] [0x000028d4] [info]    hello
world

我想要以下输出:

[2017-12-05 10:01:35.033017] [0x00000af8] [info]    hello
[2017-12-05 10:01:35.033017] [0x00000af8] [info]    world

不幸的是,Boost.Log 无法做到这一点。您在流表达式中生成的任何输出(包括换行符)都被视为单个日志记录,它被格式化一次,因此它在输出中只有一个时间戳和其他属性。

您应该手动将行分成不同的日志记录。如果日志消息文本是从外部源(例如网络或来自某些库的回调)收到的,您将必须自己用换行符拆分文本。