OpenHarmony实战:Hilog组件在交互时应用指南

news2024/11/26 11:41:02

一、OpenHarmony hilog 组件工具概述

hilog 是 OpenHarmony 日志系统,提供给系统框架、服务、以及应用打印日志,记录用户操作、系统运行状态等。适用于 OpenHarmony 应用、硬件开发及测试人员,是每个开发人员的必备、入门工具。

hilog 日志查看命令行工具,从 hilogd 读取 ringbuffer 内容,到标准输出,可支持日志过滤。

支持特性:

  1. 支持参数隐私标识格式化(详见下面应用举例)。
  2. 支持对超标日志打印进程流控。
  3. 支持对超标日志打印 domain(标识子系统/模块)流控。
  4. 支持流压缩落盘。

二、应用前准备

  1. 支持运行环境本文以 window10 x64 电脑和 Rk3568 开发板为例进行说明。
  2. hdc 准备就绪
    hdc 可以正常运行,即打开 cmd 窗口,执行 hdc shell 就进入了 hilog 命令交互界面。

三、hilog 命令应用举例

序号命令功能描述成功输出
1hilog grep "C02800"抓取含有 C02800 字符的日志08-05 17:08:32.754 256 762 E C02800...
2hilog -w start -f "mylog" -l 1M -m zlib -n 10执行名字为 hilog 的落盘任务,10 个落盘文件进行轮转,单个文件落盘大小为 1M,采用 zlib 压缩算法。
type、level、domain、tag 支持排除查询,排除查询可以使用以"^"开头的参数和分隔符",""."来完成
Persist task [jobid:1] start successfully
3hilog -w query -j 1指定 jobid 查询1 init,core,app zlib /data/log/hilog/mylog 1.0M 10
4hilog -w query查询全部落盘任务1 init,core,app zlib /data/log/hilog/mylog 1.0M 10
5hilog -w stop停止落盘任务Persist task [jobid:1] stop successfully
6hilog -w start -f "mylog"启动落盘任务Persist task [jobid:1] start successfully
7hilog -t ^coreapp 排除 core 和 app 类型的日志,可以与其他参数一起使用。Invalid log type, the valid log types include app/core/init/kmsg [CODE: -3]
8hilog -t core打印 core 类型的日志,可以与其他参数一起使用。08-05 17:56:05.319...
9hilog -t app -a 3只显示前 3 行日志08-05 17:00:09.212 0 0 I A00000/hilog: ========Zeroth log of type: app
08-05 17:00:16.482 977 977 I A0001a/SystemUI_Default: ...
08-05 17:00:16.574 977 977 I A0001a/SystemUI_Default: ...
10hilog -t app -z 3只显示后 3 行日志08-05 17:58:00.015 977 977 I A0002a/ScreenLock_Default: EventManagerSc...
08-05 17:58:00.040 977 977 I A0001a/SystemUI_Default: EventManager...
08-05 17:58:00.043 977 977 I A0002a/ScreenLock_Default: ...
11hilog -t app -s查询统计信息,需配合-t 或-D 使用Statistic info query failed
Statistic feature is not enable, please set param persist.sys.hilog.stats true to enable it,
12hilog -t app -S清除统计信息,需配合-t 或-D 使用Statistic info clear successfully
13hilog -t app -r清除 buffer 日志,配合-t 指定某一类型使用,默认 app 和 coreLog type app buffer clear successfully
14hilog -g -t app查询日志类型为 app 的 buffer 大小。Log type app buffer size is 256.0K
15hilog -g -t core查询 core 模块的 bufferLog type core buffer size is 256.0K
16hilog -g查询 app, init, core 的 bufferLog type app buffer size is 256.0K
Log type init buffer size is 256.0K
Log type core buffer size is 256.0K
17hilog -G 2M -t core设置 buffer 大小为 2M,日志类型为 coreNone
18hilog -t app -G 2M设置 app 模块的 bufferSet log type app buffer size to 2.0M successfully
19hilog -t app -g查询 app 模块的 bufferLog type app buffer size is 2.0M
20hilog -t init -T ^MMIClienttype、level、domain、tag 支持排除查询,排除查询可以使用以"^“开头的参数和分隔符”,"来完成 "08-05 17:00:09.212 0 0 I I00000/hilog:...
21hilog -D 0xD002220指定 0xD002220 dmain 的日志08-05 17:14:51.055 468 1797 D C02220/...
22hilog -b D -D 0xD002220指定 0xD002220 domain 的 DEBUG 日志查询Set domain 0xd002220 log level to D successfully
23hilog -t app指定 domian 查询,可以与其他参数一起使用08-05 17:19:07.587 1082 1082 I A0001b/Launcher_Default:...
24hilog -L I指定 level 查询
指定日志级别,hilog 中定义了 DEBUG、INFO、WARN、ERROR、FATAL 五种日志级别
08-05 18:16:19.461 2675 2675 I C01800/ ...
25hilog -t app -L I指定日志级别 level 查询08-05 18:13:00.040 977 977 I A0002a/ScreenLock_Default ...
26hilog -T MMIClient指定日志标签 tag 查询08-05 18:15:06.994 256 762 E C02800/MMIClient...
27hilog -t core -T MMIClient指定日志标签 tag 和模块查询, -T 可以与其他参数一起使用08-05 18:15:59.106 256 762 E C02800/MMIClient...
28hilog -t kmsg指定 kmsg 模块查询08-05 18:08:15.374 11,16269,4092503320...
29hilog -t app -x非阻塞式实时查询 app 模块08-05 18:00:23.547 977 977 I A0002a/ScreenLock_Default...
30hilog -b X关闭一切 DEBUG 和 INFO 日志Set global log level to X successfully

四、特别地导出日志

落盘的日志在 ./data/log/hilog/ 下面,都是以压缩包的形式保存的,需要 hdc recv 命令从开发板导出到 PC 目录。

  • 退出不停刷屏日志 Ctrl+Z
  • 退出命令行交互窗口到 cmd 窗口,命令如下#exit
  • 导出命令如下> hdc file recv /data/log/hilog/ d:\FileTransfer finish, File count = 1, Size:73310 time:14ms rate:5236.43kB/s 这时 PC 端会出现这样的文件 D:\hilog\mylog.000.xxx-xxx.gz,解压缩后用 Notepad 或者写字本打开查看
  • 关闭掉一切 DEBUG 和 INFO 日志, 命令如下
    hilog -b X

以上较为完整地演示了常用的命令用法,如果需要其他选项请通过 hilog -h 查询。

五、hilog 命令行使用说明

序号短选项长选项参数说明
1-h--helpNone帮助命令
2缺省缺省None阻塞读日志,不退出
3-x--exitNone非阻塞读日志,读完退出
4-gNoneNone查询 buffer 的大小,配合-t 指定某一类型使用,默认 app 和 core
5-G--buffer-size设置指定日志类型缓冲区的大小,配合-t 指定某一类型使用,默认 app 和 core, 可使用 B/K/M/G 为单位
6-rNoneNone清除 buffer 日志,配合-t 指定某一类型使用,默认 app 和 core
7-p--privacy<on/off>支持系统调试时日志隐私开关控制
8NoneNoneon打开隐私开关,显示
9NoneNoneoff关闭隐私开关,显示明文
10-kNone<on/off>Kernel 日志读取开关控制
11NoneNoneon打开读取 kernel 日志
12NoneNoneoff关闭读取 kernel 日志
13-s--statisticsNone查询统计信息,需配合-t 或-D 使用
14-SNoneNone清除统计信息,需配合-t 或-D 使用
15-QNone流控缺省配额开关控制
16NoneNonepidon进程流控开关打开
17NoneNonepidoff进程流控开关关闭
18NoneNonedomainondomain 流控开关打开
19NoneNonedomainoffdomain 流控开关关闭
20-L--level指定级别的日志,示例:-L D/I/W/E/F
21-t--type指定类型的日志,示例:-t app core init
22-D--domain指定 domain
23-T--Tag指定 tag
24-a--head只显示前行日志
25-z--tail只显示后行日志
26-P--pid标识不同的 pid
27-e--regex只打印日志消息与匹配的行,其中是一个正则表达式
28-f--filename设置落盘的文件名
29-l--length设置落盘的文件大小,需要大于等于 64K
30-n--number设置落盘文件的个数
31-j--jobid设置落盘任务的 ID
32-w--write落盘任务控制
33NoneNonequery落盘任务查询
34NoneNonestart落盘任务开始,命令行参数为文件名、单文件大小、落盘算法、rotate 文件数目.
35NoneNonestop落盘任务停止
36-m--stream落盘方式控制
37NoneNonenone无压缩方式落盘
38NoneNonezlibzlib 压缩算法落盘,落盘文件为.gz
39NoneNonezstdzstd 压缩算法落盘,落盘文件为.zst
40-v--formatNone
41NoneNonetime显示本地时间
42NoneNonecolor显示不同级别显示不同颜色,参数缺省级别颜色模式处理(按黑白方式)
43NoneNoneepoch显示相对 1970 时间
44NoneNonemonotonic显示相对启动时间
45NoneNoneusec显示微秒精度时间
46NoneNonensec显示纳秒精度时间
47NoneNoneyear显示将年份添加到显示的时间
48NoneNonezone显示将本地时区添加到显示的时间
49-b--baselevel设置可打印日志的最低等级:D(DEBUG)/I(INFO)/W(WARN)/E(ERROR)/F(FATAL)

六、常用几个参数说明

6.1 可查询字段说明

序号可查询字段命令符入参含义
1模块 type-tapp, core, kmsg, initNone
2level-LD、W、E、FDEBUG、INFO、WARN、ERROR、FATAL
3domain-D0x------16 进制整数,范围 0x0~0xFFFF
4Tag-TNone标识调用所在的类或者业务

6.2 日志级别的详细说明

DEBUG:比 INFO 级别更详细的流程记录,通过该级别的日志可以更详细地分析业务流程和定位分析问题。DEBUG 级别的日志在正式发布版本中默认不会被打印,只有在调试版本或打开调试开关的情况下才会打印。
INFO:用来记录业务关键流程节点,可以还原业务的主要运行过程;用来记录非正常情况信息,但这些情况都是可以预期的(如无网络信号、登录失败等)。这些日志都应该由该业务内处于支配地位的模块来记录,避免在多个被调用的模块或低级函数中重复记录。
WARN:发生了较为严重的非预期情况,但是对用户影响不大,程序可以自动恢复或通过简单的操作就可以恢复的问题。
ERROR:程序或功能发生了错误,该错误会影响功能的正常运行或用户的正常使用,可以恢复但恢复代价较高,如重置数据等。
FATAL:重大致命异常,表明程序或功能即将崩溃,故障无法恢复。

6.3 Buffer 大小单位 B/K/M/G

七、补充

源代码目录 .\base\hiviewdfx\hilog。文中涉及的 hdc 工具可参阅《OpenHarmony 命令行工具 hdc 安装应用指南》。用 Cmder.exe 代替系统 cmd 控制台程序,可以分割多个窗口同时监听、交互感兴趣的内容。这个软件十分好用,因为安装包较大建议自行下载。

八、总结

OpenHarmony hilog 组件的交互应用详细阐述了其在开发过程中的重要作用,既有应用举例又有完整的命令参数说明。此文可珍藏作为工作的常用手册,以备不时之需。

最后

有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。 

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!

获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

鸿蒙(HarmonyOS NEXT)最新学习路线

  •  HarmonOS基础技能

  • HarmonOS就业必备技能 
  •  HarmonOS多媒体技术

  • 鸿蒙NaPi组件进阶

  • HarmonOS高级技能

  • 初识HarmonOS内核 
  • 实战就业级设备开发

有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。

获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料

《鸿蒙 (OpenHarmony)开发入门教学视频》

《鸿蒙生态应用开发V2.0白皮书》

图片

《鸿蒙 (OpenHarmony)开发基础到实战手册》

OpenHarmony北向、南向开发环境搭建

图片

 《鸿蒙开发基础》

  • ArkTS语言
  • 安装DevEco Studio
  • 运用你的第一个ArkTS应用
  • ArkUI声明式UI开发
  • .……

图片

 《鸿蒙开发进阶》

  • Stage模型入门
  • 网络管理
  • 数据管理
  • 电话服务
  • 分布式应用开发
  • 通知与窗口管理
  • 多媒体技术
  • 安全技能
  • 任务管理
  • WebGL
  • 国际化开发
  • 应用测试
  • DFX面向未来设计
  • 鸿蒙系统移植和裁剪定制
  • ……

图片

《鸿蒙进阶实战》

  • ArkTS实践
  • UIAbility应用
  • 网络案例
  • ……

图片

 获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料

总结

总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1561223.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.28号系统移植

系统移植就是给开发板搭建一个linux操作系统 1. 安装tftp服务器 tftp服务器作用&#xff1a;将ubuntu中指定的文件下载到开发板中 安装步骤 1. 首先需要保证ubuntu组网成功 2. 安装tftp服务器安装包 3. 在家目录下&#xff0c;创建tftpboot文件夹&#xff0c;并且添加最高…

5.11 Vue配置Element UI框架

Vue配置Element UI框架 目录一、 概要二、 开发前准备1. 搭建Vue框架 三、 安装 Element UI1. 引入 Element UI 依赖2. 在 main.js 中引入 Element UI 和相关样式&#xff1a;3. 按需引入(非必须, 可忽略)4. 简单构建一个主页面 目录 一、 概要 Element UI 是一个基于 Vue.js …

【算法】01背包问题(代码+详解+练习题)

题目&#xff1a; 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整…

代码随想录算法训练营第二十七天|131.分割回文串、93.复原IP地址

文档链接&#xff1a;https://programmercarl.com/ LeetCode131.分割回文串 题目链接&#xff1a;https://leetcode.cn/problems/palindrome-partitioning/ 思路&#xff1a;把回溯的树画出来就好很多。startIndex用来控制切割的位置 例如对于字符串abcdef&#xff1a; 组…

【T5模型源码】深入T5模型:源码解析与实现细节

【T5模型源码】深入T5模型&#xff1a;源码解析与实现细节 文章脉络 模型结构图 类关系分析 简单类的源码 T5LayerNorm T5DenseActDense T5DenseGatedActDense T5LayerFF 复杂类的源码 常见参数介绍 最难的T5Attention源码 常见面试提问 总结 我们在日常业务中可能…

上传本地项目到gitee仓库(简单快速)

目录 前提准备 1.已经下载好git Bash 2.已经注册好gitee账号 3.在gitee上新建一个仓库 上传项目到gitee 1.找到本地需要传的文件目录 2.在本页面右键空白处&#xff0c;点击Git Bash Here 3.检查gitee账号是否存在或是否正确 4.若不正确或不存在则配置用户名和邮箱 5…

Matlab|【核心复现】同时考虑考虑孤岛与重构的配电网故障恢复运行策略

目录 主要内容 基本知识 1.问题引出 2.可控负荷 3.网络拓扑约束 4.算法流程 结果一览 1.原文结果 2.程序运行结果 下载链接 主要内容 该模型复现文章《同时考虑考虑孤岛与重构的配电网故障恢复运行策略》&#xff0c;以IEEE33配电网为分析对象&#xff0c;…

OceanMind海睿思数据工程2.0重磅发布,赋能企业“韧性”成长!

近日&#xff0c;由江苏省工业和信息化厅指导&#xff0c;江苏省企业信息化协会主办的 2024制造业数字化转型南京高峰论坛 圆满落幕。 中新赛克海睿思 作为长三角地区数字化转型优秀厂商代表受邀参会&#xff0c;并发布全新数据工程系列产品。中新赛克副总兼大数据产品线总经理…

python print用法

1.输出字符串换行 输出结果会换行&#xff0c;默认自带换行 print(111) print(0) 2.末尾插入字符串或去除换行 末尾只能插入字符串&#xff0c;不能是其他类型 print(111,end0) print(0) 3.变量&#xff0c;字符串混合输入 没有必要什么都学&#xff0c;好用的常用的学一…

设计定时任务实现数据同步的最佳实践

✨✨ 祝屏幕前的您天天开心&#xff0c;每天都有好运相伴。我们一起加油&#xff01;✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目录 引言 一、选择合适的定时任务框架 Quartz Spring 的 TaskScheduler JDK 的 ScheduledE…

记录何凯明在MIT的第一堂课:神经网络发展史

https://www.youtube.com/watch?vZ5qJ9IxSuKo 目录 表征学习 主要特点&#xff1a; 方法和技术&#xff1a; LeNet 全连接层​ 主要特点&#xff1a; 主要特点&#xff1a; 网络结构&#xff1a; AlexNet 主要特点&#xff1a; 网络结构&#xff1a; Sigmoid Re…

SDWebImage源码解析---疑难问题解答

SDWebImage的简单流程图&#xff1a; 上图大致流程是对的&#xff0c;有几个没写到的地方&#xff1a; 加载沙盒中对应的图片后&#xff0c;不仅要显示&#xff0c;而且要把图片缓存到内存中下载完毕后&#xff0c;有一个异步解码的过程&#xff0c;没体现出来 网上有大佬做了…

【JAVASE】学习数组的定义与使用

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a; 再无B&#xff5e;U&#xff5e;G-CSDN博客 目标&#xff1a; 1. 理解数组基本概念 2. 掌握数组的基本用法…

腾讯云函数计算技术:云原生架构下的Serverless与微服务新篇章

作者&#xff1a;哈哥撩编程&#xff08;视频号、公众号、抖音同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 文章目录 前言全面上云之首战&#xff1a;春保&#…

探索DAPP生态:代币预售、系统开发、NFT质押分红和代币质押技术

随着区块链技术的迅速发展&#xff0c;去中心化应用程序&#xff08;DAPPs&#xff09;生态系统已经成为了数字经济的一部分&#xff0c;并在不断壮大和发展。DAPP生态系统的繁荣离不开代币预售、系统开发、NFT质押分红和代币质押技术等关键要素的支持和推动。本文将深入探讨这…

热门IT【视频教程】-华为/思科/红帽/oracle

华为认证 网络工程师-入门基础课&#xff1a;华为HCIA认证课程介绍-CSDN博客 网络工程师进阶课&#xff1a;华为HCIP认证课程介绍-CSDN博客 职场进阶&#xff0c;踏上高峰——HCIE-Datacom认证-CSDN博客 华为HCIA试听课程 &#xff1a; 超级实用&#xff0c;华为VRP系统文件…

算法——距离计算

距离计算常用的算法包括欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、余弦相似度等。这些算法在数据挖掘、机器学习和模式识别等领域中被广泛应用。 1.欧氏距离 欧式距离也称欧几里得距离&#xff0c;是最常见的距离度量&#xff0c;衡量的是多维空间中两个点之间的…

【LeetCode】三月题解

文章目录 [2369. 检查数组是否存在有效划分](https://leetcode.cn/problems/check-if-there-is-a-valid-partition-for-the-array/)思路&#xff1a;代码&#xff1a; [1976. 到达目的地的方案数](https://leetcode.cn/problems/number-of-ways-to-arrive-at-destination/) 思路…

lua脚本在redis集群中哈希槽分片问题

上文说到&#xff0c;通过用redis lua脚本实现时间窗分布式限流 可以操作redis lua脚本来实现时间窗限流&#xff0c;在执行lua脚本的时候&#xff0c;参数中有个keys列表&#xff0c;当lua脚本中如果有操作多个key的情况&#xff0c;就可以传个key列表了。通常情况下&#xff…

[蓝桥杯 2019 省赛 AB] 完全二叉树的权值

# [蓝桥杯 2019 省 AB] 完全二叉树的权值 ## 题目描述 给定一棵包含 $N$ 个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从上到下、从左到右的顺序依次是 $A_1,A_2, \cdots A_N$&#xff0c;如下图所示&#xff1a; 现在小明要把相同深度的节点的权值…