HarmonyOS 鸿蒙Next中如何收集模拟器异常日志

HarmonyOS 鸿蒙Next中如何收集模拟器异常日志

如何收集模拟器异常日志?如模拟器发生报错

6 回复

在鸿蒙开发中,当模拟器发生报错(如应用崩溃、系统异常、功能失效等)时,可通过以下几种方式收集异常日志,定位问题根源。IDE 内置工具命令行工具本地日志文件三种场景:

一【IDE内置工具】通过 DevEco Studio 的 “Log” 窗口实时查看异常日志

DevEco Studio 提供了实时日志监控功能,可直接捕获模拟器运行过程中的应用日志、系统日志和异常信息。

【官方文档】 使用HiLog打印日志

二【命令行工具】通过hdc命令行工具抓取完整日志

操作步骤:

  1. 确认 hdc 工具路径

    • DevEco Studio 已集成hdc,路径通常为:
      • Windows:{DevEco Studio安装目录}\Sdk\harmonyos\version\toolchains\hdc.exe(如C:\Program Files\Huawei\DevEco Studio\Sdk\harmonyos\3.1.0\toolchains\hdc.exe)。
      • macOS:{DevEco Studio安装目录}/Sdk/harmonyos/version/toolchains/hdc(如/Applications/DevEco Studio.app/Contents/Sdk/harmonyos/3.1.0/toolchains/hdc)。
    • 建议将hdc路径添加到系统环境变量,方便直接在命令行调用。
  2. 连接模拟器:启动模拟器后,在命令行执行以下命令,确认hdc已连接模拟器:

    hdc list targets  # 列出已连接的设备/模拟器,若显示模拟器ID则表示连接成功  
    
  3. 抓取日志并保存到文件

    • 抓取全量日志(包含应用和系统日志),并保存到本地文件:
      hdc logcat > D:\harmony_logs\emulator_error.log  # Windows  
      hdc logcat > ~/harmony_logs/emulator_error.log   # macOS  
      
    • 抓取指定级别的异常日志(如仅 Error 级别):
      hdc logcat *:E > emulator_error.log  # *:E表示所有标签的Error级别日志  
      
    • 当模拟器发生报错时,停止命令(按Ctrl+C),日志文件即保存了异常发生时的完整记录。

【官方文档】 HDC命令使用说明

三【本地日志文件】

在模拟器运行期间,可以点击Actions >v> Show on Disk显示模拟器在本地生成的用户数据。点击Actions >v >Generate logs可以生成模拟器自启动到此刻的所有日志信息(包含异常日志)。

【官方文档】 模拟器的本地日志

更多关于HarmonyOS 鸿蒙Next中如何收集模拟器异常日志的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好,模拟器有专门的存储日志的地址,查看的路径为在模拟器运行期间,可以点击Actions > image > Show on Disk显示模拟器在本地生成的用户数据。点击Actions > image > Generate logs可以生成模拟器自启动到此刻的所有日志信息。想要关闭运行时的模拟器,可以在设备管理器页面点击image,或者点击模拟器工具栏上的关闭按钮image

你可以使用系统级别的日志打印,配合着模拟器使用会更加方便。

在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。

系统提供不同的API供开发者调用并输出日志信息,即HiLog与Console。两个API在使用时略有差异,本文重点介绍HiLog的用法,Console的具体用法可查看API参考Console

案例代码如下:

// Index.ets

import { hilog } from '@kit.PerformanceAnalysisKit';

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        // 添加按钮,以响应用户点击
        Button() {
          Text('Next')
            .fontSize(30)
            .fontWeight(FontWeight.Bold)
        }
        .type(ButtonType.Capsule)
        .margin({
          top: 20
        })
        .backgroundColor('#0D9FFB')
        .width('40%')
        .height('5%')
        // 跳转按钮绑定onClick事件,点击时打印日志
        .onClick(() => {
          hilog.isLoggable(0xFF00, "testTag", hilog.LogLevel.INFO);
          hilog.info(0xFF00, "testTag", "%{public}s World %{public}d", "hello", 3);
          class Person {
             constructor(name: string, age: number) {
               this.name = name;
               this.age = age;
             }
             name: string;
             age:  number;
          }
          let peter: Person = new Person("peter", 15);
          hilog.info(0xFF00, "testTag", "peter is %{public}o", peter);
          // 设置应用日志最低打印级别,设置完成后,低于Warn级别的日志将无法打印
          hilog.setMinLogLevel(hilog.LogLevel.WARN);
          hilog.info(0x0000, 'testTag', 'this is an info level log');
          hilog.error(0x0000, 'testTag', 'this is an error level log');
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

输入日志如下:

01-02 08:18:24.947   30988-30988   A0ff00/com.example.hilogDemo/testTag  com.example.hilogDemo  I     hello World 3
01-02 08:18:24.947   30988-30988   A0ff00/com.example.hilogDemo/testTag  com.example.hilogDemo  I     peter is {"name":"peter","age":15}
01-02 08:18:24.947   30988-30988   A00000/com.example.hilogeDmo/testTag  com.example.hilogDemo  E     this is an error level log

您好,大概步骤如下:

1.使用HiLog打印日志

import hilog from '@ohos.hilog';

// 定义日志标签(模块名/类名)
const TAG: string = 'MyAppModule';

// 在需要监控的代码位置打印日志
try {
  // 业务逻辑代码...
} catch (error) {
  // 捕获异常并打印错误日志
  hilog.error(0x0000, TAG, `模拟器异常: ${error.message}`);

关键参数:0x0000: 自定义日志域(范围0x0~0xFFFF)

TAG: 日志标识(建议用模块名)

日志级别:debug()/info()/warn()/error()/fatal()

2.查看实时日志:启动DevEco Studio模拟器>>打开底部工具栏 >>Log面板 >>在过滤框中输入你的TAG或关键词(如MyAppModule)

3.导出完整的日志文件

开发者您好,在模拟器运行期间,可以点击Actions >v> Show on Disk显示模拟器在本地生成的用户数据。点击Actions >v >Generate logs可以生成模拟器自启动到此刻的所有日志信息(包含异常日志)。

获取模拟器运行日志,可参考此文档:模拟器的使用和日志获取

在HarmonyOS Next中收集模拟器异常日志,可通过DevEco Studio操作。启动模拟器后,在Log窗口查看实时日志输出,筛选器选择"Error"或"Crash"级别。日志自动记录到本地文件,路径通常在用户目录下的Logs文件夹内。如需导出,直接复制日志内容或通过Studio的导出功能保存文件。

在HarmonyOS Next中收集模拟器异常日志,可通过以下步骤操作:

  1. 使用DevEco Studio日志窗口

    • 启动模拟器后,在DevEco Studio底部点击「Logcat」标签
    • 通过包名/关键字过滤日志,支持按错误级别(Error/Warning)筛选
  2. 命令行工具抓取

    • 通过hdc shell logcat命令直接导出完整日志
    • 使用-v time -d *:E参数可抓取特定时间段的错误日志
  3. 模拟器内置日志功能

    • 在模拟器设置中开启「调试模式」
    • 通过「文件管理器」访问/data/log/目录下的异常日志文件
  4. 关键日志类型

    • 应用崩溃:重点观察FATAL EXCEPTION字段
    • 系统错误:关注System.err标签及堆栈信息
    • 渲染异常:检索SurfaceFlinger相关错误记录

建议配合DevEco Studio 4.0+版本使用,其增强的日志分析功能可自动标记Native崩溃与JS异常。注意收集日志前重现异常场景,确保日志时效性。

回到顶部