#星光计划2.0#释放调试利器hilog,让代码不在枯燥 原创 精华
#星光计划2.0#;释放调试利器hilog,让代码不在枯燥--hilog使用
【本文正在参与51CTO HarmonyOS技术社区创作者激励计划-星光计划2.0】
介绍
背景
使用开发板3516进行软总线发现协议测试,由于硬件环境有限,使用两块开发板进行软总线发现协议测试的时候wifi模块无法正常使用(主要是配置不了,蛋疼,后期发文讲解步骤),只能转而求其次的使用网线进行测试,网络可以发现互联但其他情况一无所知,急需打通hilog日志的使用。万幸成功,特此分享。
前提
本次使用单板3516(貌似只有一块板子可用),使用软总线发现协议测试用例进行测试,编译,上传测试用例,前期已发文讲解,此处不在讲解。
代码流程一览
1、通过在dsoftbus 使用find ./ -name log 我们可以看到处理日志的四个文件。当然我们需要考虑L0、L1、L2等设备对日志处理流程会不同。
日志文件如图所示
2、softbus_log.c 只是对日志文件进行简单管理,日志实际处理函数在softbus_adapter_log.c 文件中,SoftBusOutPrint 函数显示可以通过printf函数打印。softbus_adapter_log.h 中可以通过修改日志打印模式进行打印,但这可能不符合我们预期希望的。
用例设置
1、disc_sdk_test.cpp 测试用例中使用PublishService 我们需要在PublishService 函数使用曾设一些打印标志,日志输出时进行通过标志进行查找,
2、HILOG_DEBUG/INFO/WARN/ERROR 日志处理机制。
hilog当成一个模块放在base/hiviewdfx 目录下面,
3、log_c.h 日志组合。
LOG_DOMAIN和LOG_TAG主要用于协助于我们筛选日志信息,hilog 是一个客服端服务端的模式,将会源源不断的有日志输入。我们需要特定的字段来筛选。
hilog一览
开发板上执行hilog 将会出现一堆日志信息。
hilog hilogd
执行hilog 会出现一堆其他用信息,在此,我们需要使用grep 进行日志筛选,按照LOG_DOMAIN和LOG_TA字段进行筛选,但由于hilog 这一块功能不完善,日志输出中LOG_DOMAIN和LOG_TA输出
由于上传不了图片,只能通过文字显示一下
hilog |grep “d0015c0”
问题定位
我们改用hilog |grep “test” 筛选日志的信息,结果如下
hilog |grep “test”
12-22 15:16:31.446 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.446 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.446 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
12-22 15:16:31.447 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.447 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.447 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
12-22 15:16:31.447 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.447 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.447 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
12-22 15:16:31.448 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.448 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.448 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
12-22 15:16:31.453 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.453 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.788 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
12-22 15:16:31.789 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.789 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.789 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
12-22 15:16:31.789 561 561 D 015c0/dsoftbus_standard: [DISC]test LOG_DEBUG
12-22 15:16:31.790 561 561 I 015c0/dsoftbus_standard: [DISC]test LOG_INFO
12-22 15:16:31.790 561 561 E 015c0/dsoftbus_standard: [DISC]test LOG_ERROR
hilog 中存在我们设定的日志信息,也就我们在softbus 中设置的LOG_DOMAIN和LOG_TA并没有其作用
这是我们在softbus使用printf 函数打印的信息
SOFTBUS_HILOG_ID:3
LOG_DOMAIN:d0015c0
LOG_TAG:dsoftbus_standard
It might be printf
结束
Hilog 现在可以正常打印我们需要的日志了,哈哈哈。到此结束,不过在这吐槽一下这个51的编辑器貌似挺难用的,csdn 比这个好用