Android开源 日志框架 LogDog V2.3.1

目录

一、简介

二、下载使用

 添加jitpack 仓库

添加依赖:

三、更改

1、 LogDogV2.3.1初始化:

2、通过上面的初始化 ,已经知道IJsonEngine 优化了泛型参数,采用 Object/Any 

3、优化空异常的判断,哪怕打印变量是NULL LogDog会打印“null” 提示开发人员

四、新增

1、新增 log 格式换行开关

2、新增log 方法栈打印深度校准

3、新增日志文件分享

五、结语


一、简介

   以前版本:

Android开源 日志框架 LogDog V2.0.0icon-default.png?t=N7T8https://blog.csdn.net/Ym_quiet/article/details/130838654

      Android开源 日志框架 LogDog V1.2icon-default.png?t=N7T8https://blog.csdn.net/Ym_quiet/article/details/130550198

      Android开源 日志框架 LogDog V1.0icon-default.png?t=N7T8https://blog.csdn.net/Ym_quiet/article/details/130453232

LogDog 2.3.1版本,比较之前版本,变化有点大,如果已经引用之前的版本,需要修改初始化和初始化配置,但是在log 打印调用方法,不需要更改,LogDog框架始终以兼容的角度去优化框架,不会出现更新版本后,需要大量更改以前的代码调用,而是尽可能采取扩展式优化,减少重构式或者重写式优化,不管怎么样,在使用LogDog时哪怕要重写也是采用内部重写,外部调用方法不变。

二、下载使用

 添加jitpack 仓库

Android Gradle Plugin 为 v7.1.0 以下版本:进入项目根目录,打开 “build.gradle” 文件,在 “allprojects” 中加入如下代码:

...

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
        mavenCentral()
        google()
    }
}

当您的 Android Gradle Plugin 为 v7.1.0 或以上版本:进入项目根目录,打开 “settings.gradle” 文件,在 “dependencyResolutionManagement” 中加入如下代码:

...

dependencyResolutionManagement {         repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)

        repositories {   

                   maven { url 'https://jitpack.io' }

                  mavenCentral()

                  google()

         }

}

添加依赖:

进入 “app” 目录,打开 “build.gradle” 文件,在 “dependencies” 中添加 :

...

dependencies {

...

implementation "com.gitee.ym521:logdog:2.3.1"

}

三、更改

1、 LogDogV2.3.1初始化:

Kotlin

logDog.install(this, object : IJsonEngine {override fun toJSON(obj: Any): String {return gson.toJson(obj)}})LogDog.builder.logWriteLogFileEnable(true) //是否开启写入日志文件.logShowMethodEnable(true) //是否开启显示方法栈信息 默认打印两个方法信息.logShowThreadInfoEnable(true) //是否打印当前线程信息

Java

 //这里使用的是 Google开源 Gson 也可以使用其他Json 框架 如:阿里的FastJsonGson gson = new Gson();logDog.install(this, new IJsonEngine() {@NonNull@Overridepublic String toJSON(@NonNull Object obj) {return gson.toJson(obj);}});LogDog.getBuilder().logWriteLogFileEnable(true) //是否开启写入日志文件.logShowMethodEnable(true) //是否开启显示方法栈信息 默认打印两个方法信息.logShowThreadInfoEnable(true); //是否打印当前线程信息

其他更多配置可以参考LogDog V2.0.0 ,配置方法级别不会发生改变,一般只会新增。

2、通过上面的初始化 ,已经知道IJsonEngine 优化了泛型参数,采用 Object/Any 

3、优化空异常的判断,哪怕打印变量是NULL LogDog会打印“null” 提示开发人员

四、新增

1、新增 log 格式换行开关

  Koltin

 LogDog.builder.wrapFormat()

默认是没有开启的,也就是默认不会换行的就是Log 有多长会打印多长,但是会在系统日志安全长度内,如果超出会被强制切断打印输出到下一条Log。这个开关建议在开发调试可以开启,在测试阶段如果需要Log文件输出建议关闭,因为会对日志文件产生误解。

2、新增log 方法栈打印深度校准

Koltin

 LogDog.builder.extraOffset()

这个主要是对LogDog.custom()有自己封装需求的开发人员开放的,因为有自己封装的会多一层方法(封装方法层),深度校准范围[-3,5] ,闭区间 -3到5。

3、新增日志文件分享

在我们日常开发时,总是需要修复Bug,但是Android开发的bug就不好找了,尤其碰到非专业测试,他们给的现象都不是准确,但是APP 又是在他们测试手机上,每次copy Log文件也很麻烦,所以我嘛,纯属就是怕麻烦,新增在这个Log文件分享的功能,测试APP 直接把Log文件分享给办公APP 然后发给开发人员不就很方便了。

好了开始配置:

 在AndroidManifest.xml 新增如下:

<provider android:name="com.ym521.logdog.provider.LogFileShareProvider"android:authorities="${applicationId}.fileshare" android:exported="false"android:grantUriPermissions="true"><meta-data android:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/provider_logfile_paths" />
</provider>

代码上:

LogDog.logFileShare()

注意:必须开启了日志文件输出(logWriteLogFileEnable(true)),不然调用是没有效果的

期望:后面可能会把crash 日志加入进去,大概只需要开发人员,开启搜集Crash Log开关就可以将Crash 日志写入日志文件内。方便定位bug。

五、结语

希望您给博主一些鼓励(点赞、关注、收藏),如果LogDog有BUG或者您有好的建议欢迎大家提出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/80422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

05-Flask-Flask查询路由方式

Flask查询路由方式 前言命令行方式代码实现返回所有路由 前言 本篇来学习下Flask中查询路由的方式 命令行方式 # window 用set linux 用 export set FLASK_APPtest_6_flask运行发方式# 打印所有路由 flask routes代码实现返回所有路由 # -*- coding: utf-8 -*- # Time …

ElementPlus·面包屑导航实现

面包屑导航 使用vue3中的UI框架elementPlus的 <el-breadcrumb> 实现面包屑导航 <template><!-- 面包屑 --><div class"bread-container" ><el-breadcrumb separator">"><el-breadcrumb-item :to"{ path:/ }&quo…

Docker相关命令

Docker的官网下载docker&#xff0c;按照说明进行安装。 下载Nacos镜像&#xff1a;docker pull nacos/nacos-server 运行以下命令来启动Nacos容器&#xff1a;docker run --name nacos -e MODEstandalone -p 8848:8848 -d nacos/nacos-server 会创建一个名为"nacos"…

基于FPGA点阵显示屏设计-毕设

本设计是一1616点阵LED电子显示屏的设计。整机以EP2C5T144C8N为主控芯片,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个行驱动器74HC154和两个列驱动器74HC595来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,采用4块8 x 8点…

目标检测YOLO实战应用案例100讲-基于锐化注意力的快速目标检测算法及其在遥感场景下的应用研究(下)

目录 3.3.2 最优锐化滤波方法的选择实验 3.3.3 最优池化提取方法的选择实验 3

[vue问题]开发中问题集合

“TypeError: Cannot read property ‘Request’ of undefined” 这是测试文件的报错&#xff0c;最后发现是因为项目启动的时候就报错了&#xff0c;是其它错误导致的&#xff0c;所以测试文件才会提示这种错误&#xff0c;当启动报错修复后&#xff0c;该问题没有了 热加载…

java创建excel文件和解析excel文件

创建excel文件 package com.bjpowernode.crm.poi;import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.HorizontalAlignment;import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.…

网络基础-应用层协议-HTTP/HTTPS

HTTP/HTTPS HTTP基本概念协议格式请求报文请求方法请求资源地址协议版本 应答报文 常见Header常见状态码与状态描述Cookie&Sessionhttp协议特点 HTTPS基本概念对称加密与非对称加密数据摘要&数据指纹HTTPS工作过程探究只采用对称加密只采用非对称加密双方都采用非对称加…

office mac苹果办公软件安装包安装教程详解

软件下载 软件&#xff1a;mac office版本&#xff1a;2021语言&#xff1a;简体中文大小&#xff1a;4.27G安装环境&#xff1a;mac硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道 百度网盘 https://pan.baidu.com/s/1WGSB-icELUxweFkI8iIbzA 首先&#…

CocosCreator3.8研究笔记(十九)CocosCreator UI组件(三)

前面的文章已经介绍了Layout 组件 、ScrollView 组件 、PageView 组件 。 想了解的朋友&#xff0c;请查看 CocosCreator3.8研究笔记&#xff08;十八&#xff09;CocosCreator UI组件&#xff08;二&#xff09;。 今天我们主要介绍CocosCreator 常用组件&#xff1a;Butt…

【AIGC】Stable Diffusion Prompt 每日一练0915

一、前言 1.1 写在前面 本文是一个系列&#xff0c;有点类似随笔&#xff0c;每天一次更新&#xff0c;重点就Stable Diffusion Prompt进行专项训练&#xff0c;本文是第一篇《Stable Diffusion Prompt 每日一练0915》。 1.2 项目背景 stable diffusion提示词(prompt)是用于…

第 113 场 LeetCode 双周赛题解

A 使数组成为递增数组的最少右移次数 数据范围小直接模拟… class Solution { public:int minimumRightShifts(vector<int> &nums) {for (int op 0; op < nums.size(); op) {if (is_sorted(nums.begin(), nums.end()))//nums是否已经有序return op;rotate(nums.b…

Hive参数与性能调优-V2.0

Hive作为大数据平台举足轻重的框架&#xff0c;以其稳定性和简单易用性也成为当前构建企业级数据仓库时使用最多的框架之一。 但是如果我们只局限于会使用Hive&#xff0c;而不考虑性能问题&#xff0c;就难搭建出一个完美的数仓&#xff0c;所以Hive性能调优是我们大数据从业…

开源库源码分析:OkHttp源码分析(二)

开源库源码分析&#xff1a;OkHttp源码分析&#xff08;二&#xff09; 导言 上一篇文章中我们已经分析到了OkHttp对于网络请求采取了责任链模式&#xff0c;所谓责任链模式就是有多个对象都有机会处理请求&#xff0c;从而避免请求发送者和接收者之间的紧密耦合关系。这篇文章…

vue学习之element-ui组件集成

1. element-ui 链接 https://element.eleme.cn/#/zh-CN 2. element-ui 安装 cnpm install element-ui3. 创建项目 https://blog.csdn.net/qq_36940806/article/details/132921688?spm=1001.2014.3001.5502 4. 引入element库 /src/main.js 引入 element-uiimport Vue from…

基于SSM+Vue的汽车售票网站的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

Java————栈

一 、栈 Stack继承了Vector&#xff0c;Vector和ArrayList类似&#xff0c;都是动态的顺序表&#xff0c;不同的是Vector是线程安全的。 是一种特殊的线性表&#xff0c; 其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另…

【数据结构】ArrayList和顺序表

文章目录 1.线性表2.顺序表2.1 接口的实现 3. ArrayList简介4. ArrayList使用4.1 ArrayList的构造4.2 ArrayList常见操作4.3 ArrayList的遍历4.4 ArrayList的扩容机制 5. ArrayList的具体使用5.1 简单的洗牌算法5.2 杨辉三角 6. ArrayList的问题及思考 1.线性表 线性表&#x…

Angular变更检测机制

前段时间遇到这样一个 bug&#xff0c;通过一个 click 事件跳转到一个新页面&#xff0c;新页面迟迟不加载&#xff1b; 经过多次测试发现&#xff0c;将鼠标移入某个 tab &#xff0c;页面就加载出来了。 举个例子&#xff0c;页面内容无法加载&#xff0c;但是将鼠标移入下图…

C语言编程题(二)运算符与位运算符优先级

#include <stdio.h>int main() { unsigned char a0xa5; unsigned char b~a>>41; printf("b%d",b); return 0;} 错误思路&#xff1a; unsigned char占一个字节&#xff0c;即8bit&#xff0c;将a写入内存中的形式为&#xff1a; 1010 0101 按照常规来…