免费外链网站seo发布,施工企业介绍,wordpress加载谷歌地图,网络服务提供者知道网络用户利用其网络服务侵害他人前言 一转眼就十月中旬了#xff0c;国庆的劲真大#xff0c;到现在还未缓过来#xff0c;以至于要更新的文章迟迟未发布#xff0c;大家可以看到#xff0c;最近一段时间的文章#xff0c;都是关于HarmonyOS相关的#xff0c;两个原因吧#xff0c;一是我司有这样的任…前言 一转眼就十月中旬了国庆的劲真大到现在还未缓过来以至于要更新的文章迟迟未发布大家可以看到最近一段时间的文章都是关于HarmonyOS相关的两个原因吧一是我司有这样的任务安排要对HarmonyOS进行技术储备和鸿蒙版项目复刻二就是HarmonyOS在Api9之后推广了自身的ArkTs语言和之前兼容AOSP有很大的出入一门新的语言难免有很多未知的东西而现实的资料有的也十分匮乏基于此便想着把自己所研究所封装的给记录下来方便自己或者他人能够更及时的了解HarmonyOS当然了移动端的其他技术也会时不时的穿插分享。 还有一点需要说的是目前很多的三方比如登录、分享、地图、推送等等尚未出鸿蒙版的SDK也就是说目前的开发只能是纯原生的开发有些功能想开发但是呢条件还未达到除了三方的SDK之外很多常见的组件或者功能基于ArkTs语言的实现也是匮乏的可怜所以就需要广大的开发者不断地奉献了目前一段时间地研究已经封装了Log日志库网络库Dialog库和刷新加载库再接下来地时间里我也会一一分享出来。 上上篇文章开源了一个Log日志库其实本身没有什么难的无非就是拓展了些许功能让打印更加方便一点控制台中更加好看一些除此之外并没有其他的特点但是呢作为一个简单地封装如何进行实现的本篇也简单地给大家刨析一下。 使用方式 关于使用这里不再重复讲述了大家可以直接看上篇文章或者直接看源码也行。 初始化 初始化的作用提前设定一定的参数用于后续的代码使用或控制一定的操作流程在初始化中针对Log日志这一块我们可以统一设置输出日志的Tag日志输出的级别日志选择的打印类型是否关闭日志等等操作。 默认初始化属性 主要定义了一些默认的值防止参数未传递值为空的情况。 private static mTag: string HarmonyOSLogprivate static mDomain: number 0x0000private static mClose: boolean falseprivate static mHilog: boolean true //默认是用hilog进行打印private static mShowLogLocation: boolean true //展示点击的位置private static mLogSize 800 //打印的最大长度默认是800 init设置初始化 通过传递自定义的LogOptions对象来改变默认的属性。 static init(object: LogOptions) {const tag: string object.tag //日志输出Tagconst domain: number object.domain //日志输出级别const close: boolean object.close //是否关闭日志const isHilog: boolean object.isHilog //是否是hilog打印const showLogLocation: boolean object.showLogLocation //是否展示日志位置const logSize: number object.logSize //日志输出大小if (tag ! undefined) {this.mTag tag}if (domain ! undefined) {this.mDomain domain}if (close ! undefined) {this.mClose close}if (isHilog ! undefined) {this.mHilog isHilog}if (showLogLocation ! undefined) {this.mShowLogLocation showLogLocation}if (logSize ! undefined) {this.mLogSize logSize}} LogOptions export class LogOptions {tag?: stringdomain?: numberclose?: booleanisHilog?: booleanshowLogLocation?: booleanlogSize?: number
} LogOptions是一个对象在init初始化方法中也可以直接传递Object类型也是一种方式但是没有传递直接的对象方便因为直接的对象类型限制了传递的参数只能传递定义的如下所示 所以在以后的日常开发中对于限制级别的参数传递大家也可以采取这种指定类型的参数传递。 防止打印不全 由于系统限制hilog应该打印的长度为1024个字符那么在打印内容特别多的情况下会显示不全这样不利于日志的直观查看我们需要对超出一定字符长度的内容进行截取采取分段打印。 const len content.length / this.mLogSizefor (var i 0; i len; i) {var con content.substring(i * this.mLogSize, (i 1) * this.mLogSize)if (i ! 0) {con | con}//进行打印} mLogSize为自己定义的每次打印长度。 对象转Json 特殊的情况下为了更加直观的打印出Json串或者一个对象我们需要对此进行格式化处理如下效果 首先判断传递的打印信息是否是一个对象或者是一个Json串对象好判断直接判断是否等于object即可但是一个Json串就得另想办法了这里我判断的是起始字符是否包含大括号当然这种具有一定的局限性有可能它是一个错误的Json虽然起始有大括号但是中间是错的这种情况下就会格式化错误。
当然了还有一种方式判断也就是json串转对象方式如果转换成功那么json串就是一个正确的再进行判断即可。 var type typeof messageif (type object) {//是对象message this.getObjectToJson(message)} else if (type string) {//判断是否包含大括号const content message if (content.startsWith({) content.endsWith(})) {//对象const obj JSON.parse(message)message this.getObjectToJson(obj)} else {message content}} 打印格式化操作 /**对象转Json* */private static getObjectToJson(message: object): String {const json JSON.stringify(message, null, 2)const endMessage json.replace(/\n/g, \n| )return endMessage} 总结 日志的打印没什么好说的要说有些许难点也就是对象转Json格式化的时候遇到了一定阻碍其他的都很简单下一篇我们将带来基于http封装一个便捷的网络请求敬请期待 源码地址
Githubhttps://github.com/AbnerMing888/HarmonyOsLog