【KPDK】Log Library

DPDK日志库为其他DPDK库和驱动程序提供日志记录功能。默认情况下,在Linux应用程序中,日志既发送到syslog,也发送到控制台。在FreeBSD和Windows应用程序上,日志只发送到控制台。但是,用户可以覆盖日志功能以使用不同的日志记录机制.

日志级别

来自应用程序和库的日志消息以给定的严重性级别进行报告。在rte_log.h中指定的这些级别是(从最重要到最不重要):
突发事件
紧急的
告警的
错误
警告
注意
信息
调试
在运行时,应用程序将仅向日志输出发出配置级别或更高级别(即重要性更高)的消息。该级别可以由应用程序从日志库调用相关API来配置,也可以由用户通过应用程序将–log级别参数传递给EAL来配置。

设置全局日志级别

要调整应用程序的全局日志级别,只需将数字级别或级别名称传递给-log-level EAL参数即可。例如:

/path/to/app --log-level=error

/path/to/app --log-level=debug

/path/to/app --log-level=5   # warning

在应用程序中,可以使用rte_log_set_global_level API类似地设置日志级别。

设置组件的日志级别

在某些情况下,例如,出于调试目的,可能希望仅增加或减少特定组件或组件集的日志级别。为了便于实现这一点,–log级别参数还接受一个组件名称(可选通配符),以及该组件所需的级别。例如:

/path/to/app --log-level=lib.eal:crit

/path/to/app --log-level=lib.*:warning

在应用程序中,使用rte_log_set_level_pattern()或rte_log.set_level_regex()API可以获得相同的结果。

使用日志API生成日志消息

若要输出日志消息,应使用rte_log()API函数。除了日志消息,rte_log()还需要两个额外的参数:
1)日志级别
2)日志组件类型

日志级别是一个数值,如上所述。组件类型是一个唯一的id,用于标识日志系统的特定DPDK组件。要获得此id,每个组件都需要在启动时使用宏RTE_LOG_register_DEFAULT进行自身注册。此宏采用两个参数,第二个参数是组件的默认日志级别。第一个参数称为“type”,是组件中使用的“logtype”或“component-type”变量的名称。此变量将由宏定义,并应在调用rte_log()时作为第二个参数传递。通常,大多数DPDK组件都定义了自己的日志宏,以简化对日志API的调用。他们通过以下方式做到这一点:
1)将组件类型参数隐藏在宏中,这样就不需要显式传递。
2)使用rte_log.h中给出的日志级别定义,允许使用简短的文本名称来代替数字日志级别。

以下代码取自rte_dmadev.c,显示了日志注册以及快捷日志宏的后续定义。它可以用作任何使用DPDK日志记录的新组件的模板

RTE_LOG_REGISTER_DEFAULT(rte_dma_logtype, INFO);
#define RTE_DMA_LOG(level, ...) \
        rte_log(RTE_LOG_ ## level, rte_dma_logtype, RTE_FMT("dma: " \
                RTE_FMT_HEAD(__VA_ARGS__,) "\n", RTE_FMT_TAIL(__VA_ARGS__,)))

注意
由于日志注册宏提供了logtype变量定义,因此应将其放置在使用它的C文件的顶部附近。如果没有,则应将logtype变量在文件顶部附近定义为“extern int”。
类似地,如果日志记录由组件中的多个文件完成,则只有一个文件应通过宏注册日志类型,并且日志类型应在公共头文件中定义为“extern int”。任何特定于组件的日志宏都应该类似地在该标头中定义。

因此,在整个dmadev库中,所有日志记录调用的形式如下:

RTE_DMA_LOG(ERR, "Name can't be NULL");

RTE_DMA_LOG(WARNING, "Device %d already started", dev_id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值