使用 easylogging++ 记录 QString 时插入的额外空间
Posted
技术标签:
【中文标题】使用 easylogging++ 记录 QString 时插入的额外空间【英文标题】:Extra space inserted when logging QString with easylogging++ 【发布时间】:2017-11-29 13:44:51 【问题描述】:我有多行代码触发记录器(INFO 模式):
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
我遇到的问题是似乎附加在各个 QString::number()
调用前面的额外空间(下面的空格标有 # 以使其更明显):
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)
在整个地方放置额外的空间,但没想到LOG(INFO)
会出现这种情况。
【问题讨论】:
请尝试 1-cout 查看@p-a-o-l-o 的回答以及我在他下方的评论。据我所知,该问题与 easylogging++ 的日志记录机制密切相关。 【参考方案1】:据此:https://github.com/muflihun/easyloggingpp/issues/179,LoggingFlag::AutoSpacing
标志可用。
来自文档(https://github.com/muflihun/easyloggingpp#logging-flags):
您可以使用静态 el::Loggers::addFlag 和 el::Loggers::removeFlag。您可以检查某些标志是否 使用 el::Loggers::hasFlag 可用,所有这些函数都需要 强类型枚举 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));
【讨论】:
我找到了另一个解决方案,但你的也可以。为了使答案完整,我添加了自己找到的答案。 :)以上是关于使用 easylogging++ 记录 QString 时插入的额外空间的主要内容,如果未能解决你的问题,请参考以下文章