QDltRegistration 类
QDltRegistration 类控制 QLoggingCategory 与 dlt 上下文之间的映射。 更多...
头文件 | #include <QDltRegistration> |
qmake | QT += geniviextras |
继承 | QObject |
公共类型
枚举类型 | LongMessageBehavior { Truncate, Split, Pass } |
属性
- longMessageBehavior : LongMessageBehavior
公共函数
QDltRegistration::LongMessageBehavior | longMessageBehavior() const |
void | registerApplication(const char *dltAppID, const char *dltAppDescription) |
void | registerCategory(const QLoggingCategory *category, const char *dltCtxName, const char *dltCtxDescription) |
void | registerUnregisteredContexts() |
void | setDefaultContext(const char *categoryName) |
void | setLongMessageBehavior(QDltRegistration::LongMessageBehavior config) |
void | setRegisterContextOnFirstUseEnabled(bool enabled) |
void | unregisterApplication() |
void | unregisterCategories() |
信号
void | logLevelChanged(const QLoggingCategory *category) |
静态公共成员
void | messageHandler(QtMsgType msgType, const QMessageLogContext &msgCtx, const QString &msg) |
详细描述
该类与 dlt-daemon 通信,并提供一个 Qt messageHandler,该 handler 将 Qt 日志框架记录的日志消息转发到 dlt-daemon。
使用 dlt-daemon 版本 2.12 或更高版本时,它还会对 DLT 控制消息做出反应,并在 dlt 上下文的日志级别变化时调整 QLoggingCategory 的启用 msg 类型。
成员类型文档
枚举类型 LongMessageBehavior
此枚举类型描述了长消息的可用选项。
常量 | 值 | 描述 |
---|---|---|
QDltRegistration::LongMessageBehavior::Truncate | 0 | 将消息截断为最大长度。 |
QDltRegistration::LongMessageBehavior::Split | 1 | 将消息拆分为几个较小的部分。 |
QDltRegistration::LongMessageBehavior::Pass | 2 | 按原样将消息传递给 DLT。此选项的性能影响最小,但如果消息过长,DLT 可能会忽略该消息并仅生成一个空行。 |
此枚举是在 Qt 5.12.4 中引入或修改的。
属性文档
longMessageBehavior : LongMessageBehavior
定义了处理对于 DLT 无法正确处理的超长消息的方式
DLT 定义一个消息的最大大小约为 1k(实际值取决于所使用的 DLT 版本)。
默认行为是将消息截断到最大支持长度。
此属性自 Qt 5.12.4 版本中引入。
访问函数
QDltRegistration::LongMessageBehavior | longMessageBehavior() const |
void | setLongMessageBehavior(QDltRegistration::LongMessageBehavior config) |
成员函数文档
[信号]
void QDltRegistration::logLevelChanged(const QLoggingCategory *category)
每当 dlt-daemon 更改 dlt 上下文的日志级别并且该 dlt 上下文与 QLoggingCategory 注册时,都会发出此信号。更新的 QLoggingCategory 作为 category 传递。
注意:此信号需要一个等于 2.12 或更高版本的 dlt-daemon。
[静态]
void QDltRegistration::messageHandler(QtMsgType msgType, const QMessageLogContext &msgCtx, const QString &msg)
Qt 消息处理器,将所有日志消息转发到 dlt-daemon。
此函数将 msgTypes 映射到相应的 dlt 日志级别,并将 msg 转发到与 msgCtx 中的类别匹配的 dlt 上下文。
如果 msgCtx 中的类别尚未与 dlt 上下文注册,则将使用后备日志类别(如果已注册)。
此 messageHandler 需要通过以下方式安装
qInstallMessageHandler(QDltRegistration::messageHandler);
void QDltRegistration::registerApplication(const char *dltAppID, const char *dltAppDescription)
使用 dltAppID 和 dltAppDescription 注册应用程序到 dlt-daemon。
每个进程只能注册一个应用程序。在应用程序已经被注册后调用此函数,将在新的 dltAppID 和 dltAppDescription 下注册应用程序,并填充此应用程序下已注册的所有 dlt 上下文。如果应用程序之前已注册,使用空 dltAppID 调用该方法只会更新描述。
另请参阅:QDLT_REGISTER_APPLICATION。
void QDltRegistration::registerCategory(const QLoggingCategory *category, const char *dltCtxName, const char *dltCtxDescription)
使用 dltCtxName 和 dltCtxDescription 将 category 注册到 dlt-daemon。
不应直接使用此函数,而应使用便利宏。
另请参阅:QDLT_LOGGING_CATEGORY 和 QDLT_REGISTER_LOGGING_CATEGORY。
void QDltRegistration::registerUnregisteredContexts()
将所有尚未注册的上下文与 dlt-daemon 注册。
该函数可以与 setRegisterContextOnFirstUseEnabled 结合使用,以延迟对 dlt-daemon 的注册,直到真正需要注册,并且所有尚未注册的上下文都安全注册后,例如使用相关的日志类别。
另请参阅setRegisterContextOnFirstUseEnabled。
void QDltRegistration::setDefaultContext(const char *categoryName)
将 categoryName 设置为后备日志类别。
categoryName 需要是 dlt-daemon 中已注册的有效 QLoggingCategory 名称。可以通过使用 QDLT_LOGGING_CATEGORY 或 QDLT_REGISTER_LOGGING_CATEGORY 实现。
不应直接使用此函数,而应使用便利宏。
void QDltRegistration::setRegisterContextOnFirstUseEnabled(bool enabled)
当设置为 enabled 时,类别第一次使用时进行注册。
否则,在调用 QDLT_LOGGING_CATEGORY 或 QDLT_REGISTER_LOGGING_CATEGORY 时立即进行注册。
不应直接使用此函数,而应使用便利宏。
另请参阅QDLT_REGISTER_CONTEXT_ON_FIRST_USE。
void QDltRegistration::unregisterApplication()
从 dlt-daemon 中注销应用程序。将删除已注册的应用程序以及所有已注册的 dlt 上下文。
void QDltRegistration::unregisterCategories()
从 dlt-daemon 注销所有类别及其关联的上下文 ID。
此函数的一个应用可以是更新日志级别:在此函数调用后,所有类别将在下次使用时重新注册(带有新日志级别)。
©2020 The Qt Company Ltd. 本文档中的文档贡献归其各自所有者所有。本文档根据发布的 Free Software Foundation 条款许可,许可协议为 GNU Free Documentation License version 1.3。Qt 和相关标志是 The Qt Company Ltd. 在芬兰和/或其他国家和地区的商标。所有其他商标均为其各自所有者的财产。