HarmonyOS 鸿蒙Next中如何收集模拟器异常日志
HarmonyOS 鸿蒙Next中如何收集模拟器异常日志
如何收集模拟器异常日志?如模拟器发生报错
在鸿蒙开发中,当模拟器发生报错(如应用崩溃、系统异常、功能失效等)时,可通过以下几种方式收集异常日志,定位问题根源。IDE 内置工具、命令行工具和本地日志文件三种场景:
一【IDE内置工具】通过 DevEco Studio 的 “Log” 窗口实时查看异常日志
DevEco Studio 提供了实时日志监控功能,可直接捕获模拟器运行过程中的应用日志、系统日志和异常信息。
【官方文档】 使用HiLog打印日志
二【命令行工具】通过hdc命令行工具抓取完整日志
操作步骤:
-
确认 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)。
- Windows:
- 建议将
hdc路径添加到系统环境变量,方便直接在命令行调用。
- DevEco Studio 已集成
-
连接模拟器:启动模拟器后,在命令行执行以下命令,确认
hdc已连接模拟器:hdc list targets # 列出已连接的设备/模拟器,若显示模拟器ID则表示连接成功 -
抓取日志并保存到文件:
- 抓取全量日志(包含应用和系统日志),并保存到本地文件:
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 >
> Show on Disk显示模拟器在本地生成的用户数据。点击Actions >
> Generate logs可以生成模拟器自启动到此刻的所有日志信息。想要关闭运行时的模拟器,可以在设备管理器页面点击
,或者点击模拟器工具栏上的关闭按钮
。
你可以使用系统级别的日志打印,配合着模拟器使用会更加方便。
在应用开发过程中,可在关键代码处输出日志信息。在运行应用后,通过查看日志信息来分析应用执行情况(如应用是否正常运行、代码运行时序、运行逻辑分支是否正常等)。
系统提供不同的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日志窗口
- 启动模拟器后,在DevEco Studio底部点击「Logcat」标签
- 通过包名/关键字过滤日志,支持按错误级别(Error/Warning)筛选
-
命令行工具抓取
- 通过
hdc shell logcat命令直接导出完整日志 - 使用
-v time -d *:E参数可抓取特定时间段的错误日志
- 通过
-
模拟器内置日志功能
- 在模拟器设置中开启「调试模式」
- 通过「文件管理器」访问
/data/log/目录下的异常日志文件
-
关键日志类型
- 应用崩溃:重点观察
FATAL EXCEPTION字段 - 系统错误:关注
System.err标签及堆栈信息 - 渲染异常:检索
SurfaceFlinger相关错误记录
- 应用崩溃:重点观察
建议配合DevEco Studio 4.0+版本使用,其增强的日志分析功能可自动标记Native崩溃与JS异常。注意收集日志前重现异常场景,确保日志时效性。


