DOCA 文档 v2.10.0

DOCA 日志

DOCA 日志记录基础设施允许打印 DOCA SDK 库错误消息,以及打印来自应用程序的调试和错误消息。

要使用 DOCA 日志记录机制,必须在使用它的每个源代码中包含头文件 doca_log.h

DOCA 日志记录支持以下详细级别

复制
已复制!
            

enum doca_log_level { DOCA_LOG_LEVEL_DISABLE = 10, /**< Disable log messages */ DOCA_LOG_LEVEL_CRIT = 20, /**< Critical log level */ DOCA_LOG_LEVEL_ERROR = 30, /**< Error log level */ DOCA_LOG_LEVEL_WARNING = 40, /**< Warning log level */ DOCA_LOG_LEVEL_INFO = 50, /**< Info log level */ DOCA_LOG_LEVEL_DEBUG = 60, /**< Debug log level */ DOCA_LOG_LEVEL_TRACE = 70, /**< Trace log level */ };

注意

只有在编译前设置了宏 DOCA_LOGGING_ALLOW_TRACE 时,DOCA_LOG_LEVEL_TRACE 详细级别才可用。

有关更多信息,请参阅 doca_log.h

DOCA 的日志记录后端是日志消息 направляются 的目标。

支持以下后端类型

  • FILE * – 文件流,可以是任何打开的文件或 stdout/stderr

  • 文件描述符 – 系统支持的任何文件描述符,包括(但不限于)原始文件、套接字和管道

  • buf – 内存缓冲区(地址和大小),可以容纳单个消息以及为每个记录的消息调用的回调

  • syslog – 系统标准日志记录

每个记录器在创建时都具有以下默认的较低和较高详细级别

  • 较低级别 – DOCA_LOG_LEVEL_INFO

  • 较高级别 – DOCA_LOG_LEVEL_CRIT

SDK 和应用程序日志记录具有不同的默认配置值,可以使用适当的 API 单独控制。

如果消息的详细级别允许,则每个消息都会打印到每个创建的后端。

DOCA SDK 库将调试和错误消息打印到使用以下函数创建的所有后端

  • doca_log_backend_create_with_file_sdk()

  • doca_log_backend_create_with_fd_sdk()

  • doca_log_backend_create_with_buf_sdk()

  • doca_log_backend_create_with_syslog_sdk()

新创建的 SDK 后端详细级别设置为 SDK 全局详细级别值。可以使用 doca_log_level_set_global_sdk_limit() 更改此值。

doca_log_level_set_global_sdk_limit() 设置所有现有 SDK 后端的详细级别,并设置 SDK 全局详细级别。

doca_log_backend_set_sdk_level() 设置特定 SDK 后端的详细级别。

doca_log_level_get_global_sdk_limit() 获取 SDK 全局详细级别。

注意

消息可能在不同版本的 DOCA 之间发生变化。用户不能依赖消息的永久性或格式。

任何使用 DOCA 的源代码都可以使用 DOCA 日志记录基础设施。

每个调试和错误消息都打印到使用以下函数创建的所有后端

  • doca_log_backend_create_with_file()

  • doca_log_backend_create_with_fd()

  • doca_log_backend_create_with_buf()

  • doca_log_backend_create_with_syslog()

新创建的后端的较低和较高级别设置为默认值。可以使用 doca_log_backend_set_level_lower_limit()doca_log_backend_set_level_upper_limit() 更改这些值。

doca_log_backend_create_standard() 创建一个默认的不可配置的两组后端

  • stdout 打印从全局最低级别到 DOCA_LOG_LEVEL_INFO 的范围

  • stderr 打印从 DOCA_LOG_LEVEL_WARNING 级别到 DOCA_LOG_LEVEL_CRIT 的范围

doca_log_backend_set_level_lower_limit_strict() 将后端的较低日志级别限制标记为严格,防止其在未来的日志级别更改中降低。它是全局的和直接的。

doca_log_backend_set_level_upper_limit_strict() 将后端的较高日志级别限制标记为严格,防止其在未来的日志级别更改中升高。它是全局的和直接的。

doca_log_level_set_global_lower_limit() 设置所有未标记为严格的现有后端的较低限制,并设置全局应用程序较低限制。

doca_log_level_set_global_upper_limit() 设置所有未标记为严格的现有后端的较高限制,并设置全局应用程序较高限制。

要在源代码中使用 DOCA 日志记录基础设施来记录其消息,用户必须在文件开头、使用 DOCA 日志记录功能之前调用宏 DOCA_LOG_REGISTER(source)。此宏处理来自 DOCA 日志记录的注册和拆卸。

可以通过调用以下宏之一(用法与 printf() 相同)来打印消息

  • DOCA_LOG_CRIT(format, ...)

  • DOCA_LOG_ERR(format, ...)

  • DOCA_LOG_WARN(format, ...)

  • DOCA_LOG_INFO(format, ...)

  • DOCA_LOG_DBG(format, ...)

  • DOCA_LOG_TRC(format, ...)

消息将打印到所有配置了较低和较高日志记录限制的应用程序后端。

© 版权所有 2025 NVIDIA。 上次更新时间:2025 年 2 月 12 日。