文档管理中心

您当前浏览的3.1/4.0版本文档归档不再维护,推荐您使用最新的HarmonyOS NEXT版本文档。详细请参考文档维护策略变更

打印日志

DevEco Studio的日志系统包括HiLog日志和FaultLog日志系统,其中:

  • HiLog日志系统:让应用/服务可以按照指定类型、指定级别、指定格式字符串打印日志内容,帮助开发者了解应用/服务的运行状态,更好地调试程序。
  • FaultLog日志系统:FaultLog是为了满足HarmonyOS应用/服务开发者基本的故障定位需求而设计,能够帮助应用开发者快速查询、定位、导出应用故障信息。

打印Hilog日志

输出日志

在输出日志前,需要先调用isLoggable确认某个domain、tag和日志级别是否被禁止打印日志。使用示例:

收起
自动换行
深色代码主题
复制
  1. hilog.isLoggable(0x0000, "testTag", hilog.LogLevel.INFO);
  • 参数domain:用于指定输出日志所对应的业务领域,取值范围为0x0~0xFFFFF,开发者可以根据需要进行自定义。
  • 参数tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。
  • 参数level:用于指定日志级别。

hilog中定义了DEBUG、INFO、WARN、ERROR、FATAL五种日志级别,并提供了对应的方法用于输出不同级别的日志,如下表所示:

表1 HiLog提供的主要接口
展开

接口名

功能描述

debug(domain: number, tag: string, format: string, ...args: Array<Object>)

输出DEBUG级别的日志。DEBUG级别日志表示仅用于应用/服务调试。

可以在DevEco Studio的terminal窗口或cmd里,通过命令“hdc shell hilogcat”设置可打印日志的等级为DEBUG。

info(domain: number, tag: string, format: string, ...args: Array<Object>)

输出INFO级别的日志。INFO级别日志表示普通的信息。

warn(domain: number, tag: string, format: string, ...args: Array<Object>)

输出WARN级别的日志。WARN级别日志表示存在警告。

error(domain: number, tag: string, format: string, ...args: Array<Object>)

输出ERROR级别的日志。ERROR级别日志表示存在错误。

fatal(domain: number, tag: string, format: string, ...args: Array<Object>)

输出FATAL级别的日志。FATAL级别日志表示出现致命错误、不可恢复错误。

  • 参数domain和tag应与isLoggable中使用的一致。
  • 参数format:格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,例如格式字符串为“%s World”,“%s”为参数类型为string的变参标识,具体取值在args中定义。

    每个参数需添加隐私标识,分为{public}或{private},默认为{private}。{public}表示日志打印结果可见;{private}表示日志打印结果不可见,输出结果为<private>。

    调试时可以通过命令“hilog -p off”指令,关闭隐私开关,明文显示private日志内容。

  • 参数args:可以为0个或多个参数,是格式字符串中参数类型对应的参数列表。参数的数量、类型必须与格式字符串中的标识一一对应。

以输出一条INFO级别的信息为例,示例代码:

收起
自动换行
深色代码主题
复制
  1. hilog.info(0xFF00, "testTag", "%{public}s World %{public}d", "hello", 3);

该行代码表示输出一个普通信息,格式字符串为:”%{public}s World %{public}d”。其中变参"%{public}s"为公共的字符串;%{public}d为公共的整型数。

查看日志信息

DevEco Studio提供了“Log > HiLog”窗口查看日志信息,开发者可通过设置设备、进程、日志级别和搜索关键词来筛选日志信息。搜索功能支持使用正则表达式,开发者可通过搜索自定义的业务领域值和TAG来筛选日志信息。

根据实际情况选择了设备和进程后,搜索标签“testTag”进行筛选,得到对应的日志信息。

结果输出:

收起
自动换行
深色代码主题
复制
  1. 10-27 10:07:04.456 20680-20939/com.example.myapplication I 0FF00/testTag: hello World 3
  • 20680-20939表示进程的进程ID和线程ID。
  • com.example.myapplication表示应用进程名。
  • I表示日志级别为INFO。
  • testTag为开发者自定义的日志标签。
  • 日志内容中显示将实际取值填入字符串的结果。

HiLog窗口左侧各个按钮的作用为:

:单击该按钮可以向上翻页,日志窗口取消自动滚动。

:单击该按钮可以向下翻页,日志窗口取消自动滚动。如果翻页已到底部,日志窗口自动滚动。

:当该按钮处于选中状态时,日志自动换行显示,否则日志按行显示。

:当该按钮处于选中状态时,日志自动滚动到窗口底部,否则停留在当前日志显示处。

:单击该按钮可以重新开启日志接收,会清空日志缓存和窗口日志。

:单击该按钮可以清空窗口日志。

: 单击该按钮可以对当前选择的设备屏幕进行截屏,并保存在本地。不支持对包含密码输入的界面进行截屏。

:单击该按钮可以保存日志缓存到指定文件。

:自动选择和切换已连接的设备。

:过滤只展示App日志。

:单击该按钮可以关闭当前日志窗口。

日志打印实例

在按钮中增加一个单击事件,单击按钮时打印一条日志。

说明

本示例采用ArkTS语言为例,使用JS语言开发仅在UI部分代码有所不同,hilog部分代码通用。

  1. 新建一个工程,选择“Empty Ability”。
  2. 工程配置界面中,Model选择“FA ”、Language选择“ArkTS”。
  3. Project窗口单击“entry > src > main > ets > MainAbility > pages ”,打开工程中的“index.ets”文件,添加一个按钮,点击按钮打印日志。

    示例代码如下:
    收起
    自动换行
    深色代码主题
    复制
    1. // index.ets
    2. import hilog from '@ohos.hilog';
    3. @Entry
    4. @Component
    5. struct Index {
    6. build() {
    7. Row() {
    8. Column() {
    9. // 添加按钮,以响应用户点击
    10. Button() {
    11. Text('Next')
    12. .fontSize(30)
    13. .fontWeight(FontWeight.Bold)
    14. }
    15. .type(ButtonType.Capsule)
    16. .margin({
    17. top: 20
    18. })
    19. .backgroundColor('#0D9FFB')
    20. .width('40%')
    21. .height('5%')
    22. // 跳转按钮绑定onClick事件,点击时打印日志
    23. .onClick(() => {
    24. hilog.isLoggable(0xFF00, "testTag", hilog.LogLevel.INFO);
    25. hilog.info(0xFF00, "testTag", "%{public}s World %d", "hello", 3);
    26. })
    27. }
    28. .width('100%')
    29. }
    30. .height('100%')
    31. }
    32. }

  4. 在真机/远程模拟器上运行该工程,单击应用/服务界面上的“Next”按钮。
  5. 在DevEco Studio的底部,切换到“Log”窗口,设置日志的过滤条件。

    选择当前的设备及进程,日志级别选择Info,搜索内容设置为“testTag”。此时窗口仅显示符合条件的日志。

打印FaultLog日志

FaultLog是由系统自动从设备进行收集,包括如下四类故障信息:

  • App Freeze
  • CPP Crash
  • JS Crash
  • Java Crash

FaultLog故障信息如下图所示,支持按照应用包名进行过滤、日志刷新、日志导出等功能。

如上图所示,FaultLog故障信息左侧按照应用/服务包名 > 故障类型 > 故障时间结构组成,选中具体的故障日期,则会在右侧展示详细的故障信息,便于开发者进行故障定位。

在 指南 中进行搜索
请输入您想要搜索的关键词