【鸿蒙】日志工具的使用

2023-11-09

【鸿蒙】Harmony应用开发-目录导航

在前面【鸿蒙】创建你的第一个Harmony项目我们已经能够顺利的编译并运行我们的第一个程序hello world!

为了今后能走的更远,我们现在需要点基础的装备,日志工具。学会了日志工具的使用方法,会对我们以后的Harmony应用开发带来极大的帮助。

使用HarmonyOS的日志工具HiLog

HarmonyOS提供了HiLog日志系统(Android的日志工具是Log),让应用可以按照指定类型、指定级别、指定格式字符串输出日志内容,帮助开发者了解应用的运行状态,更好地调试程序。

输出日志的接口由HiLog类提供。在输出日志前,需要先调用HiLog的辅助类HiLogLabel定义日志标签。

这个类提供了以下5种方法供我们调用:

HiLog.debug():用于输出DEBUG级别的日志。DEBUG级别日志表示仅用于应用调试,默认不输出,输出前需要在设备的“开发人员选项”中打开“USB调试”开关。对应Android的Log.d();

HiLog.info():用于输出INFO级别的日志。INFO级别日志表示普通的信息。对应Android的Log.i();

HiLog.warn():用于输出WARN级别的日志。WARN级别日志表示存在警告。对应Android的Log.w();

HiLog.error():用于输出ERROR级别的日志。ERROR级别日志表示存在错误。对应Android的Log.e();

HiLog.fatal():用于输出FATAL级别的日志。FATAL级别日志表示出现致命错误、不可恢复错误。Android应用崩溃时,也能看到fatal的崩溃信息,但这部分是系统打出,不对外提供主动调用FATAL级别的日志接口。

 

HiLog日志不像Android那样有不少重载方法,在这里HiLog日志每个日志级别的接口原型只有一个。

如:

debug​(HiLogLabel label, String format, Object... args)
info​(HiLogLabel label, String format, Object... args)
warn​(HiLogLabel label, String format, Object... args)
error​(HiLogLabel label, String format, Object... args)
fatal​(HiLogLabel label, String format, Object... args)
  • 参数label:定义好的HiLogLabel标签。
  • 参数format:格式字符串,用于日志的格式化输出。格式字符串中可以设置多个参数,例如格式字符串为“Failed to visit %s.”,“%s”为参数类型为string的变参标识,具体取值在args中定义。

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

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

比起常见的android参数,这里多出来一个HiLogLabel标签

什么是HiLogLabel标签?

他其实是HiLog类的辅助类,用于定义日志标签,包括日志类型,服务域和标记。

他的定义原型是

HiLogLabel​(int type, int domain, String tag)
  • 参数type:用于指定输出日志的类型。HiLog中当前只提供了一种日志类型,即应用日志类型LOG_APP。
  • 参数domain:用于指定输出日志所对应的业务领域,取值范围为0x0~0xFFFFF,开发者可以根据需要进行自定义。
  • 参数tag:用于指定日志标识,可以为任意字符串,建议标识调用所在的类或者业务行为。

至于为什么要设计这样一个标签?我的理解是鸿蒙想帮助开发者从另一个维度去自定义参数domain和tag来进行日志的快速筛选和查找。

注:

本篇章仅介绍日志的基本概念和使用,有兴趣的读者请参看api文档:https://developer.harmonyos.com/en/docs/documentation/doc-references/hiloglabel-0000001054838842

Android的接口原型一般为

Log.i(String tag,String msg)
  • 参数tag:用于过滤日志的tag标签
  • 参数msg:需要打印的日志信息

从接口调用的参数来看,鸿蒙的HiLog帮开发者实现了string的格式化,因为在日常日志输出时,经常会碰到日志拼接格式化的问题,虽然是个小细节,但也能看出鸿蒙os的热心。

日志使用示例

package com.example.helloword;

import com.example.helloword.slice.MainAbilitySlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;
import ohos.hiviewdfx.HiLog;
import ohos.hiviewdfx.HiLogLabel;

public class MainAbility extends Ability {
    //定义HiLogLabel
    private static final HiLogLabel LABEL_LOG = new HiLogLabel(HiLog.LOG_APP, 9527, "MainAbility.class");

    @Override
    public void onStart(Intent intent) {
        super.onStart(intent);
        super.setMainRoute(MainAbilitySlice.class.getName());
        //打印日志
        HiLog.info(LABEL_LOG, "[%s] test HiLog!", "tomes");
    }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【鸿蒙】日志工具的使用 的相关文章

  • jQuery九宫格跑马灯抽奖(已知结果)

    描述 写两个抽奖 等级不同 找到一个原生写法的 原作者链接如下 参考 https www cnblogs com yangqing22 p 14065754 html 略改了一下 换成了jQuery方式 优化点 在抽奖过程中 禁止重复点击抽

随机推荐

  • 因果推断-解决推荐系统公平性的新思路

    论文引入 近年来推荐系统公平性成为新的热点 在所有解决公平性问题的方法中 因果推断显得格外靓眼 我们以论文 Recommendations as treatments Debiasing learning and evaluation 1
  • Android.mk的使用以及常用模板

    Android mk使用 一个Android mk file首先必须定义好LOCAL PATH变量 它用于在开发树中查找源文件 在这个例子中 宏函数 my dir 由编译系统提供 用于返回当前路径 即包含Android mk file文件的
  • redis未授权访问getshell

    参考 https blog csdn net guxiaoguo article details 78913245 利用条件 linux 对方开启ssh 用到的工具 kali nmap redis 公司测试服务器 10 0 3 45 red
  • 解决当前标识(IIS APPPOOL\XXXX)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files”...

    1 问题描述 在Windows Server2019数据中心版中搭建IIS项目 访问的时候出现如下所示的错误 当前标识 IIS APPPOOL XXXX 没有对 C Windows Microsoft NET Framework64 v4
  • 区块链入门

    区块链 区块链 区块链基础知识 区块链概念 区块链发展历史 区块链技术基础 区块链特性 区块链分类 私有链 专有链 联盟链 行业链 公有链 区块链应用领域 金融 物联网和物流 供应链 保险 公益 公共服务 数字版权 区块链核心技术 区块链技
  • uniapp用html2canvas将图片和文字部分截取 保存到本地相册

    类实现对整个或者部分页面进行截屏 效果 下载插件 引入 所有代码 效果 下载插件 官网链接 http html2canvas hertzen com 可以npm安装npm install save html2canvas或者直接去官网下载文
  • 计算机浮点数的表示与转换

    参考书籍 x86 64 Assembly Language Programming with Ubuntu
  • 2021-04-21

    python 画多列柱状图 柱状图子图 一 目的 使用matplotlib画柱状图 或在子图中画柱状图 二 方法 1 导包 import pandas as pd import numpy as np import matplotlib p
  • python multiprocessing 报错cannot pickle ‘_io.TextTOWrapper‘ object

    一 报错TypeError cannot pickle io TextTOWrapper object 在使用多进程时报错 错误信息 TypeError cannot pickle io TextTOWrapper object 1 1 原
  • c盘满了怎么办?如何快速清理内存(6个方法)

    很多用户都会问 我的电脑c盘东西太多了 c盘满了怎么办 c盘爆满 可能还会收到系统提示磁盘空间不足的警告 当出现这种情况 会导致电脑很多应用无法正常运行 运行速度也会大大降低 该如何解决这个问题 不如来看看小编精心整理的关于如何清理c盘垃圾
  • antV使用教程入门

    在移动端使用antV F2图表入门介绍 1 通过npm安装 npm install antv f2 save 成功安装完成之后 即可使用 import 或 require 进行引用 const F2 require antv f2 2 通过
  • 剑指 Offer 14- I. 剪绳子 数学法+动态规划

    剑指 Offer 14 I 剪绳子 难度 中等 题目描述 解题思路 1 数学方法 记不清在哪里好像做过这道题 在所有的分法里 每次以3为一段能得到最大的结果 比如9 分成33的时候是最大的 计算数字除以3的余数 如果余1 就和其中一个三组合
  • DETRs Beat YOLOs on Real-time Object Detection

    目录 1 模型架构 1 1高效混合编码器 1 1 1 尺度内特征交互模块AIFI 1 1 2 跨尺度特征融合CCFM 1 2IoU感知查询选择 总结 DETRs在实时目标检测中击败YOLO 问题 DETR的高计算成本 实时检测效果有待提高
  • ES6之map()方法

    map 方法 map 映射 即原数组映射成一个新的数组 map方法接受一个新参数 这个参数就是将原数组变成新数组的映射关系 function myfun 1 arr var array arr map item gt array push
  • unity2019导入leapmotion插件显示SpatialTracking在unity Engine中缺少相应的头文件

    unity2019导入leapmotion插件显示SpatialTracking在unity Engine中缺少相应的头文件 1 问题描述 2 问题解决方法 1 2 3 插入这个插件 4 问题就可以解决了 注 2019将很多插件需要自己选择
  • RabbitMQ--扩展--10--消息追踪

    RabbitMQ 扩展 10 消息追踪 1 介绍 1 1 RabbitMQ 消息异常丢失的情况 可能是生产者与Broker断开了连接并且也没有任何重试机制 可能是消费者在处理消息时发生了异常 不过却提前进行了ack 可能是交换机并没有与任何
  • js如何实现网站内容禁止复制和粘贴、另存为?

    1 使右键和复制失效 方法1 在网页中加入以下代码 代码如下 方法2 在中加入以下代码
  • 四个复制就能用的炫酷网页特效

    第一个 炫酷星空
  • springboot的基本配置

    server port 8086 spring profiles active dev application name my springsecurity plus datasource driver driver class name
  • 【鸿蒙】日志工具的使用

    鸿蒙 Harmony应用开发 目录导航 在前面 鸿蒙 创建你的第一个Harmony项目我们已经能够顺利的编译并运行我们的第一个程序hello world 为了今后能走的更远 我们现在需要点基础的装备 日志工具 学会了日志工具的使用方法 会对