鸿蒙三方库 | harmony-utils之LogUtil日志输出与级别控制详解
📅 2026/7/22 20:30:07
👁️ 次浏览
前言日志是开发调试和问题排查的重要工具。pura/harmony-utils的LogUtil封装了日志输出方法支持不同日志级别和标签管理让日志输出更加规范和可控。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解帮助开发者快速掌握并应用到实际项目中。一、LogUtil核心APILogUtil提供了以下日志输出方法方法说明参数使用场景debug(tag, msg)输出DEBUG级别日志tag, msg调试信息info(tag, msg)输出INFO级别日志tag, msg一般信息warn(tag, msg)输出WARN级别日志tag, msg警告信息error(tag, msg)输出ERROR级别日志tag, msg错误信息setLogLevel(level)设置日志级别level级别控制1.1 核心特性简洁易用封装复杂API为一行调用降低使用门槛类型安全完整的TypeScript类型定义编译期即可发现错误异常处理内置异常捕获机制避免运行时崩溃级别控制支持动态设置日志输出级别1.2 日志级别对照级别常量说明生产环境DEBUGLogLevel.DEBUG调试信息不输出INFOLogLevel.INFO一般信息可选WARNLogLevel.WARN警告信息输出ERRORLogLevel.ERROR错误信息输出二、完整使用步骤2.1 安装依赖ohpminstallpura/harmony-utils2.2 输出不同级别日志import{LogUtil}frompura/harmony-utils;Button(输出DEBUG日志).width(100%).onClick((){LogUtil.debug(MyApp,这是一条调试日志);this.resultDEBUG日志已输出 ;})Button(输出INFO日志).width(100%).onClick((){LogUtil.info(MyApp,这是一条信息日志);this.resultINFO日志已输出 ℹ️;})Button(输出ERROR日志).width(100%).onClick((){LogUtil.error(MyApp,这是一条错误日志);this.resultERROR日志已输出 ❌;})2.3 设置日志级别Button(设置日志级别).width(100%).onClick((){LogUtil.setLogLevel(LogLevel.INFO);this.result日志级别已设为INFO\n低于INFO的日志将不输出;})三、完整页面示例import{LogUtil}frompura/harmony-utils;EntryComponentstruct LogDemo{Stateresult:string;build(){Column({space:12}){Button(输出全部级别日志).width(100%).onClick((){LogUtil.debug(Demo,调试信息);LogUtil.info(Demo,一般信息);LogUtil.warn(Demo,警告信息);LogUtil.error(Demo,错误信息);this.result四级日志已输出\n查看HiLog查看日志;});Text(this.result).fontSize(14).fontColor(#333333)}.padding(16)}}四、进阶用法4.1 日志工具类封装import{LogUtil}frompura/harmony-utils;classAppLogger{privatestaticTAGMyApp;staticd(msg:string):void{LogUtil.debug(AppLogger.TAG,msg);}statici(msg:string):void{LogUtil.info(AppLogger.TAG,msg);}staticw(msg:string):void{LogUtil.warn(AppLogger.TAG,msg);}statice(msg:string):void{LogUtil.error(AppLogger.TAG,msg);}}4.2 条件日志输出functionlogIf(condition:boolean,tag:string,msg:string):void{if(condition){LogUtil.info(tag,msg);}}五、注意事项标签规范建议使用统一的标签命名规范级别控制生产环境建议设置为WARN或ERROR敏感信息不要在日志中输出敏感信息初始化依赖使用前需确保AppUtil.init()已调用日志量避免在高频方法中输出大量日志六、常见问题Q1: 日志在HiLog中看不到检查日志级别设置确保当前级别允许输出。同时检查HiLog的过滤条件。Q2: setLogLevel()设置后不生效确认设置时机是否正确建议在应用启动时设置。Q3: 如何查看日志使用DevEco Studio的HiLog工具或通过 hdc hilog 命令查看。Q4: 日志输出影响性能吗大量日志输出会影响性能生产环境建议设置较高级别。总结LogUtil的日志输出方法为开发调试提供了规范化支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。合理使用日志级别和标签可以提高开发效率和问题排查速度。本文基于pura/harmony-utils工具库更多功能请参考官方文档与后续系列文章。
在 InfoQ 或各类架构师峰会上,我们经常听到关于“敏捷”、“云原生”的宏大叙事。但对于身处金融核心系统或关键基础设施领域的架构师来说,现实的引力往往更沉重。
当前,在信创(国产化)替代的硬指标下,许多…
📅 2026/7/22 20:30:07
2026年是人形机器人产业技术收敛、量产突围、数据闭环落地的关键转折年。行业彻底告别此前依靠单点技术展示、样机性能比拼的0-1原型探索阶段,全面迈入1-10规模化量产、场景商业化落地、数据迭代升级的全新周期。据行业权威数据,2026年国内人形机器人整机…
📅 2026/7/22 20:30:07
最近在做基于 ROS2 Humble 的两轮差速智能小车项目,底盘通过 ESP32 采集编码器数据解算里程计,上位机节点发布/odom话题。调试过程中遇到一个非常典型的新手高频问题:明明能通过ros2 topic echo看到里程计数据正常输出,但rqt_tf_t…
📅 2026/7/22 20:29:07
X-StereoLab核心模型解析:StereoNet如何实现高精度视差估计? 【免费下载链接】X-StereoLab SOS IROS 2018 GOOGLE; StereoNet ECCV2018 GOOGLE; ActiveStereoNet ECCV2018 Oral GOOGLE; HITNET CVPR2021 GOOGLE;PLUME Uber ATG 项目地址: h…
📅 2026/7/22 21:58:37
风口褪去后的“幸存者游戏”
2023至2025年间,跨境电商领域经历了一场堪称“洗礼”般的剧变。平台规则收紧、全球税务合规化浪潮(如欧盟IOSS、美国各州销售税)、同质化价格战白热化,让许多曾经风光无两的卖家黯然离场。行业仿佛经历…
📅 2026/7/22 21:58:37
小程序分销系统开发哪家公司专业?做私域、做裂变、做增长,越来越多的商家把目光投向了小程序分销系统。但真正落地时,很多企业都会卡在同一个问题上:市面上做小程序开发的公司那么多,到底哪家才是真的懂分销、能把系统…
📅 2026/7/22 21:58:37
24a2引擎项目结构解析:从源码到文档的组织艺术 【免费下载链接】24a2 🏵 An ultra-minimalist game engine 项目地址: https://gitcode.com/gh_mirrors/24/24a2
24a2是一个超极简游戏引擎(ultra-minimalist game engine)&a…
📅 2026/7/22 21:58:37
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/22 21:58:37
本文关键词:geo restful说实话,搞地图开发的兄弟们都懂那种痛。以前为了调个逆地理编码,或者查个周边POI,为了那点坐标转换,头发掉了一把又一把。特别是当项目急着上线,后端接口还没写好,前端在那干瞪眼,那种焦虑感,真不是盖的。我前阵子接手一个老项目重构,里面嵌套…
📅 2026/7/22 21:57:23
1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…
📅 2026/7/22 0:00:13
1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…
📅 2026/7/22 0:00:13
甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…
📅 2026/7/22 0:00:13
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/22 1:05:21
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/22 1:05:21
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/22 1:05:21
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/22 7:05:39
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/22 17:06:14
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/22 5:05:32