伐木设施和Qt

cyb*_*vnm 22 c++ logging qt

您使用什么日志工具?Qt?

你选择qDebug(),qWarning(),qCritical(),qFatal()方法,还是像Log4cpp(Log4cplus等),或者一些自定义代码?

Dar*_*ylC 12

如果您只是在单个线程中工作,qDebug和这样的工作相当不错,或者您可以通过在QT 5.0+中使用qInstallMessageHandler或旧版本中的qInstallMsgHandler安装自己的处理程序来稍微修改它们.

注意:较旧版本的qDebug()等,您使用qInstallMsgHandler(现已弃用,例如http://doc.qt.io/archives/4.6/qtglobal.html#qDebug)不是线程安全的.如果你使用线程,它们会崩溃/破坏.在内部,它使用的是QTextStream,它是可重入的,但不是线程安全的.

  • @mozzbozz谢谢.如果`qDebug`不安全则不是由于DarrylC给出的原因.如果您安装自己的线程安全的`QtMessageHandler`,那么`qDebug`将是线程安全的.默认处理程序可以交错输出,但我不相信有数据竞争/ UB,虽然我无法证明. (2认同)

rpg*_*rpg 10

现有的C++日志库对我来说太重了,所以我根据Qt qInstallMsgHandlerq后端的Logging in C++创建了一个自定义前端.它是跨平台和线程安全的.总有一天我会清理代码并将它发布到世界上:)

Qt的一个有趣的替代品是QxtLogger.

  • 这个文本如何成为一个答案***"现有的C++日志库对我的口味来说太重了,所以我根据Qt qInstallMsgHandlerq后端的C++ Logging中的想法创建了一个自定义前端.它是交叉的平台和线程安全.有一天我会清理代码并将它发布到世界上:)"***..什么*"现有的C++日志库"*你指的是什么?为什么他们"太沉重"?另外,您的自定义库如何解决问题?任何基准?最重要的是,如果无法使用,它如何解决读者的问题? (3认同)
  • @vnm:我已经在http://bitbucket.org/razvanpetru/qt-components/downloads/上发布了我的日志库. (2认同)
  • 只是为了更新 - 现在有一个官方的http://www.developer.nokia.com/Community/Wiki/Advanced,_cross-platform_logging_for_Qt (2认同)

kko*_*hne 10

由于Qt 5.2支持分类记录:http://qt-project.org/doc/qt-5/qloggingcategory.html.这允许您将日志记录消息拆分为(层次结构)类别,并对记录的细微调整进行分析.


jir*_*mat 5

Log4Qt是Qt世界着名的log​​4j的端口.