ZBLOG

.8. Disable Logging Module Setting the Verbosity Level, translates into entries not being added to the log queue if the entry’s level has lower importance than the set one. This check is performed when calling the macros defined in Logging Messag...

这段文本讨论了如何在eProsima Fast DDS的构建过程中禁用日志模块的特定功能,包括如何控制不同严重性级别的日志记录。以下是对每个要点的详细解释:

1. 日志级别与禁用

设置日志的详细级别可以控制哪些日志条目会被添加到日志队列。如果某个条目的重要性低于设定的级别,则不会将该条目添加到队列中。这种检查是在调用定义的日志消息宏时进行的。

2. 完全禁用日志宏

你可以在构建时通过以下方式完全禁用每个宏(以及各自的详细级别):

  • EPROSIMA_LOG_INFO

    • 禁用方法:
      • 设置CMake选项 LOG_NO_INFO 为 ON(默认情况下对于非Debug配置)。
      • 定义宏 HAVE_LOG_NO_INFO 为 1。
  • EPROSIMA_LOG_WARNING

    • 禁用方法:
      • 设置CMake选项 LOG_NO_WARNING 为 ON。
      • 定义宏 HAVE_LOG_NO_WARNING 为 1。
  • EPROSIMA_LOG_ERROR

    • 禁用方法:
      • 设置CMake选项 LOG_NO_ERROR 为 ON。
      • 定义宏 HAVE_LOG_NO_ERROR 为 1。

这些操作将在配置时将对应的宏设置为空,使得编译器能够优化这些调用,避免在非调试版本中影响性能。

3. INTERNAL_DEBUG CMake选项

  • 当启用 INTERNAL_DEBUG 时,将激活日志宏的编译,因此这些宏的参数会被编译。然而,这并不意味着会激活警告和错误信息,实际上,这些信息不会被写入日志队列。

4. EPROSIMA_LOG_INFO 的特殊行为

为了简化与多配置IDE(如Visual Studio)的协作,如果CMake选项 LOG_NO_INFO 为 OFF,或者C++定义为 HAVE_LOG_NO_INFO 等于0,则仅在Debug配置中启用日志记录。在这种情况下,可以通过设置 FASTDDS_ENFORCE_LOG_INFO 为 ON 来在非Debug配置中启用 EPROSIMA_LOG_INFO。这对于使用Fast DDS库的外部应用程序特别有用,例如,当Fast DDS被编译为Release版本时。

使用示例:

#define HAVE_LOG_NO_INFO 0
#define FASTDDS_ENFORCE_LOG_INFO 1

上述代码可以放在包含任何Fast DDS头文件之前,以确保在链接Release版本时依然能使用所有三个级别的日志记录。

注意事项

  • 如果CMake选项 EPROSIMA_BUILD 设置为 ON,可能会自动将 INTERNAL_DEBUG 设置为 ON,这样需要留意以防止意外启用调试输出。

通过以上内容,你可以了解如何控制Fast DDS中的日志记录功能,并根据需求选择是否启用或禁用特定类型的信息。这对于优化应用程序性能非常重要。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21495

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?