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, ...)
消息将打印到所有配置了较低和较高日志记录限制的应用程序后端。