使用 easylogging++ 记录 QString 时插入额外 space

Extra space inserted when logging QString with easylogging++

我有多行代码触发记录器(信息模式):

LOG(INFO) << connectionsBOther.at(connectionIdx).line
          << " (" << QString::number(connectionsBOther.at(connectionIdx).direction) << ") | "
          << connectionsBOther.at(connectionIdx).directionTarget
          << " "
          << QString::number(connectionsBOther.at(connectionIdx).departureRelative);

输出示例如下:

2017-11-29 14:38:07,643 INFO  [default] M85 ( 2) |  Hello  1

我遇到的问题是额外的 space 似乎附加在相应 QString::number() 调用的前面(下面的 spaces 标有 # 以使其成为更明显):

2017-11-29 14:38:07,643 INFO  [default] M85#(#2)#|##Hello##1

我正在寻找以下输出:

2017-11-29 14:38:07,643 INFO  [default] M85#(2)#|#Hello#1

我需要为此输出使用 INFO。我习惯于 LOG(DEBUG) 在各处放置额外的 space,但没想到 LOG(INFO).

会这样

据此:https://github.com/muflihun/easyloggingpp/issues/179,一个 LoggingFlag::AutoSpacing 标志可用。

来自文档(在 https://github.com/muflihun/easyloggingpp#logging-flags):

You can set/unset these flags by using static el::Loggers::addFlag and el::Loggers::removeFlag. You can check to see if certain flag is available by using el::Loggers::hasFlag, all these functions take strongly-typed enum el::LoggingFlag

我认为你应该取消设置上面提到的标志以避免自动间距(即从你的日志中删除额外的空格)。

更新:

如果不使用 << 运算符对您来说不是问题,您可以随时使用连接:

LOG(INFO) << QString(connectionsBOther.at(connectionIdx).line
          + " (" + QString::number(connectionsBOther.at(connectionIdx).direction) + ") | "
          + connectionsBOther.at(connectionIdx).directionTarget
          + " "
          + QString::number(connectionsBOther.at(connectionIdx).departureRelative));