当前位置: 首页 > news >正文

HarmonyOS开发:封装一个便捷的Log工具类

前言

日志打印,没什么好说的,系统已给我们提供,且调用也是非常的简单,我们封装的目的,一是扩展,打印一些不常见的类型,比如格式化json,使得日志看起来比较好看,二是,控制日志的开关,使其动态开启打印和关闭打印,三是,简化代码,使其调用起来更加的方便。

如下图所示,便是我们封装之后的打印效果。

本章的内容大致如下,关于源码解析,我们放到下篇文章概述。

1、Log工具快速使用

2、全局初始化

3、基本打印

4、开源地址

一、Log工具快速使用

目前Log工具类已经开源,在源码中的README中已经做了很详细的介绍,当然了,你也可以按照如下的方式进行快速使用。

私服和远程依赖,由于权限和审核问题,预计需要等到2024年第一季度面向所有开发者,所以,只能暂时使用本地静态共享包源码两种使用方式,本地静态共享包类似Android中的aar依赖,直接复制到项目中即可。

1、本地静态共享包har包使用

首先,下载har包,点击下载

下载之后,把har包复制项目中,目录自己创建,如下,我创建了一个libs目录,复制进去。

引入之后,进行同步项目,点击Sync Now即可,当然了你也可以,将鼠标放置在报错处会出现提示,在提示框中点击Run 'ohpm install'。

需要注意,@app/log,是用来区分目录的,可以自己定义,比如@aa/bb等,关于静态共享包的创建和使用,请查看如下我的介绍,这里就不过多介绍。

HarmonyOS开发:走进静态共享包的依赖与使用

2、源码直接使用

下载源码后,直接把源码中log这个module复制到项目中,直接引用即可:

如果您的DevEco Studio低于4.0,您需要更改log模块里的hvigorfile.ts文件

修改前

import { harTasks } from '@ohos/hvigor-ohos-plugin';export default {system: harTasks,  /* Built-in plugin of Hvigor. It cannot be modified. */plugins:[]         /* Custom plugin to extend the functionality of Hvigor. */
}

修改后

export { harTasks } from '@ohos/hvigor-ohos-plugin';

并需要进行模块的引入,在跟项目中build-profile.json5文件里添加如下:

{"app": {"signingConfigs": [],"compileSdkVersion": 9,"compatibleSdkVersion": 9,"products": [{"name": "default","signingConfig": "default"}]},"modules": [{"name": "entry","srcPath": "./entry","targets": [{"name": "default","applyToProducts": ["default"]}]},{"name": "log","srcPath": "./log"}]
}

3、查看是否引用成功

无论使用哪种方式进行依赖,最终都会在使用的模块中,生成一个oh_modules文件,并创建源代码文件,有则成功,无则失败,如下:

二、全局初始化

初始化仅需要初始化一次即可,可以在AbilityStage进行,目前初始化中均有默认值,如果您使用默认值,就无需进行初始化。初始化采用的是对象参数传递形式,其参数您可以按实际需要进行传递,如果想和默认值保持一致,有些参数就可以省略。

Log.init({tag: "HarmonyOSLog",domain: 0x0000,close: false,isHilog: true,showLogLocation: true,logSize: 800
})

初始化参数介绍

属性

类型

概述

tag

string

打印的标签,默认为: HarmonyOSLog

domain

number

输出日志所对应的业务领域,默认为0x0000

close

boolean

是否关闭打印,默认true为打开,false为不打印

isHilog

boolean

打印类型,默认为true是hilog打印 ,false为console

mShowLogLocation

boolean

是否展示点击的位置,默认为true是展示 ,false为不展示

logSize

number

日志每次输出大小,最大1024字节

二、基本打印

统一标签打印

使用统一标签进行打印,直接传递打印内容即可。

Log.info("我是一个info类型日志")
Log.debug("我是一个debug类型日志")
Log.warn("我是一个warn类型日志")
Log.error("我是一个error类型日志")
Log.fatal("我是一个fatal类型日志")

自定义标签

使用自定义标签进行打印

Log.info("我是一个info类型日志", "testTag")
Log.debug("我是一个debug类型日志", "testTag")
Log.warn("我是一个warn类型日志", "testTag")
Log.error("我是一个error类型日志", "testTag")
Log.fatal("我是一个fatal类型日志", "testTag")

json打印

json打印会进行格式化处理,直接传递json对象或者json字符串即可。

Log.info({ "name": "AbnerMing", "age": 18 })

四、开源地址

https://gitee.com/abnercode/harmony-os-log

开发环境

DevEco Studio 4.0 Beta2,Build Version: 4.0.0.400

Api版本:9

hvigorVersion:3.0.2

常见问题

如果你的开发环境比较低,会造成,下载源码,运行工程失败问题,常见错误如下,是因为开发环境不一致造成。

您可以选择解决问题,解决方式如下:

解决DevEco Studio低版本导入高版本项目运行失败问题

您也可以不运行,直接按照文档进行使用,完全没有问题。

相关文章:

HarmonyOS开发:封装一个便捷的Log工具类

前言 日志打印,没什么好说的,系统已给我们提供,且调用也是非常的简单,我们封装的目的,一是扩展,打印一些不常见的类型,比如格式化json,使得日志看起来比较好看,二是&…...

第十章_祖冲之_圆周率

倒数1又2/3章,keep_writting的一天: 第十章10.1.7 运行程序资源下载网站为何打不开呢?...

FVM管理Flutter 环境

开发中,会经常切换不同版本的 Flutter 环境。使用 FVM(Flutter Version Manager )来进行 Flutter 版本切换是一个很不错的选择。 下面从安装FVM、环境配置、切换Flutter这几个主要步骤总结下 FVM 的使用 一、安装 homebrew 网址&#xff1…...

vue | 样式隔离scoped的原理 样式穿透deep的原理

文章目录 vue中的样式穿透scoped 样式隔离父组件可以修改子组件根节点样式 deep 样式穿透:deep(.el-col)的原理 vue中的样式穿透 scoped 样式隔离 一个style标签拥有scoped属性时,css样式就只能作用于当前的组件,这样就可以使得组件之间的样式不互相污…...

UML,集合框架

1.什么是UML UML是统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明,展示,构建和记录软件系统的产出。UML代表了一系列在大型而复杂系统建模中被证明是成功的做法,是开发面向对象软件…...

如何快速轻松自动添加微信好友?

有些客需要换新的微信号,想把以前微信号上的好友全部加回来,但是因为微信系统的规定,频繁加好友容易被封号,而且手动添加好友太费时费力,还要控制加好友的间隔时间。那么有没有什么方法可以快速轻松自动添加好友呢&…...

MySQL高级语句(第一部分)

MySQL高级语句(第一部分)一、MySQL进阶查询1、select ----显示表格中一个或数个字段的所有数据记录2、distinct ----不显示重复的数据记录3、where ----有条件查询4、and or ----且 或5、in ----显示已知的值的数据记录6、between ----显示两个值范围内的数据记录7、通配符8、l…...

Perl区分文件换行符类型

背景 在Windows上使用Perl判断文件时何种换行符时,处理CR LF类型的换行符时,也识别成了LF。 思路 Windows上的换行是 CRLF , Unix上是 LF , Mac CR在Windows平台使用Perl读取文件创建文件句柄时,未对file handler设置binmode,了…...

数据备份文件生成--根据表名生成对应的sql语句文件

最近客户有个需求,希望在后台增加手动备份功能,将数据导出下载保存。 当然,此方法不适用于海量数据的备份,这只适用于少量数据的sql备份。 这是我生成的sql文件,以及sql文件里的insert语句,已亲测&#x…...

进程同步与互斥

目录 进程同步与互斥(1) 第一节、进程间相互作用 一、相关进程和无关进程 二、与时间有关的错误 第二节、进程同步与互斥 一、进程的同步 二、进程的互斥 三、临界区 进程同步与互斥(2) 三、信号量与P、V操作的物理含义…...

mysql workbench常用操作

1、No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar 方法一:双击你要使用的库 方法二:USE 数据库名 2、复制表名,字段名 3、保存链接...

【操作】国标GB28181视频监控EasyGBS平台更新设备信息时间间隔

国标GB28181协议视频平台EasyGBS是基于GB28181协议的视频监控云服务平台,可支持多路设备同时接入,并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台…...

TensorFlow入门(八、TensorBoard可视化工具的应用)

TensorBoard常用函数和类http://t.csdn.cn/Hqi9c TensorBoard可视化的过程: ①确定一个整体的图表,明确从这个图表中获取哪些数据的信息 ②确定在程序的哪些节点、以什么样的方式进行汇总数据的运算,以记录信息,比如在反向传播定义以后,使用tf.summary.scalar记录损失值的变…...

升级targetSdkVersion至33(以及迁移至Androidx)

1.设置 android.useAndroidXtrue 和 android.enableJetifiertrue 2.一键迁移至androidx:Refactor -> Migrate to Androidx 3.手动修改未能自动迁移到androidx的部分: android.support.v4.view.ViewPager.PageTransformer -> androidx.viewpager.wi…...

python3.11版本pip install ddddocr调用时报错got an unexpected keyword argument ‘det‘ 解决

一、如图出现如下问题 ddddocr.__init__() got an unexpected keyword argument det出现问题原因:python3.11默认安装版本就旧版的ddddocr1.0的,所以导致如下报错 二、解决方案一(推荐) python3.11的环境直接安装这个即可&…...

代理IP与Socks5代理:跨界电商之安全防护与智能数据引擎

第一部分:跨界电商的兴起与网络安全挑战 1.1 跨界电商的崭露头角 跨界电商已经成为全球贸易的新引擎,企业纷纷踏上了拓展国际市场的征程。 1.2 网络安全的不容忽视 跨界电商的增长也伴随着网络安全威胁的增加。黑客攻击、数据泄露和欺诈行为等风险呈…...

如何评估一个HR是否专业?看这些标准

HR在遇到优秀的人才时,以往的招聘中,我们总以惯性思维寻找吸引人才的突破口,诸如体现薪酬优厚、突出平台优势甚至提高面试话术等,却忽略了面试官本人的人格魅力,本身就是公司招聘的形象代言,因为优秀的面试…...

WordPress主题开发( 八)之—— 模板循环详细用法

WordPress 主题开发教程手册 — 模板循环 WordPress 主题开发中,模板循环是一个非常关键的概念,它负责默认机制来输出文章内容。模板循环会遍历当前页面获取的所有文章,然后使用主题中的模板标签将它们格式化并输出。 模板循环的应用 Word…...

QT : 完成绘制时钟

1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QTimer> #include <QTime> #include <QPaintEvent> #include <QDebug> #include <QBrush>QT_BEGIN_NAMESPACE namespace Ui { class…...

香港云服务器和日本云服务器哪个好?(详细对比)

​  购置海外服务器时&#xff0c;您是在乎网络速度?价格?稳定性?当这几个因素同时存在&#xff0c;我们该如何选择?本篇针对海外热门的两个地区&#xff0c;中国香港和日本&#xff0c;这两种云服务器谁优谁劣?各有什么亮点?逐一进行对比分析。 一、速度上来看 中国香…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...