Android开发 LogDog (日志狗)V2.0.0

news2024/11/23 11:27:28

目录

一、简介

二、使用推荐

1、初始化LogDog

2、运行中如何更改初始化时的配置?

三、更改

四、新功能

1、Log过滤

2、自定义打印

3、提供占位符式打印


一、简介

LogDog V1.0 版本https://blog.csdn.net/Ym_quiet/article/details/130453232?spm=1001.2014.3001.5501     LogDog V1.2版本https://blog.csdn.net/Ym_quiet/article/details/130550198?spm=1001.2014.3001.5501

二、使用推荐

添加LogDog依赖

dependencies {
	        implementation 'com.gitee.ym521:logdog:2.0.0'
	}

为了大家更好的使用LogDog,下面我推荐一个简单的使用示例

1、初始化LogDog

 Kotlin示例

class MyApplication:Application() {


    override fun onCreate() {
        super.onCreate()

       val gson =  GsonBuilder()
            .setPrettyPrinting()
            .create()
        val logdog =LogDog.Builder()
            .logShowMethodEnable(true,3)
            .logShowThreadInfoEnable(true)
            .build()
        logdog.install(this,object :IJsonEngine{
            override fun <T> toJSON(obj: T): String {
            return  gson.toJson(obj)
            }
        })

    }

  
}

Java示例

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        Gson gson = new GsonBuilder()
                .setPrettyPrinting()
                .create();
        LogDog logdog = new LogDog.Builder()
                .logShowMethodEnable(true, 3)
                .logShowThreadInfoEnable(true)
                .build();
        logdog.install(this, new IJsonEngine() {
            @NonNull
            @Override
            public <T> String toJSON(T t) {
                return gson.toJson(t);
            }
        });

    }
}

IJsonEngine 为LogDog 对外暴露的Gson接口,也是对log内的引用类型的参数提供Json化的实现,在这里我使用的是Gson

implementation 'com.google.code.gson:gson:2.9.0'

2、运行中如何更改初始化时的配置?

 LogDog.Builder()
            /**
             * 打印日志过滤日志级别,默认全部打印
             * 日志过滤是过滤掉你添加的日志级别,不想打印的级别日志需要你添加对应的日志级别
             */
            .logFilter(LogDog.WARN or LogDog.DEBUG)
            /**
             * 默认未启用
             * @param enabled 是否打印方法信息
             * @param methodCount 打印方法的个数 如果小于1 为1,大于10 为10
             */
            .logShowMethodEnable(true,2)
            /**
             * 默认未启用
             * 是否打印线程信息
             */
            .logShowThreadInfoEnable(true)
            /**
             * 默认是未启用
             * 是否将日志写入日志文件中
             * 日志文件以当天日期为单位生成
             */
            .logWriteLogFileEnable(true)
            /**
             * 默认是未启用
             * 是否启动AES 加密 
             * 如果启动加密 但未配置key下,
             * 将使用默认秘钥"0000000000000000"
             */
            .logFileAESEnable(true,"123456")
            /**
             * 默认未启用
             * 是否将日志文件输出到外部私有空间
             */
            .logFileShowEnable(true)
            /**
             * 默认值 LOGDOG
             * 缺省TAG设置,没有自行填写的TAG的统一使用缺省TAG
             */
            .defaultTAG("APP_LOG")

只需要再次对LogDog.Builder() 进行设置 就会覆盖初始化时的配置。

三、更改

新版本V2.0.0版本,去除了以前统一关闭打印输出,改为过滤式关闭Log打印输出,具体使用下面将提供java和kotlin示例

kotlin示例

 LogDog.Builder()
            /**
             * 打印日志过滤日志级别,默认全部打印
             * 日志过滤是过滤掉你添加的日志级别,不想打印的级别日志需要你添加对应的日志级别
             */
            .logFilter(LogDog.WARN or LogDog.DEBUG)

Java示例

new LogDog.Builder()
             * 打印日志过滤日志级别,默认全部打印
             * 日志过滤是过滤掉你添加的日志级别,不想打印的级别日志需要你添加对应的日志级别
             */
            .logFilter(LogDog.WARN | LogDog.DEBUG)

注意:过滤多个log级别,采用“或”运算拼接, kotlin 使用 or ,Java 使用 |  来选择要过滤(关闭)的日志级别,例如示例代码就是过滤warn和debug日志级别,非这里两个都可以打印输出。

四、新功能

新版本V2.0.0版本,新功能:打印过滤、自定义打印、提供占位符式打印。

1、Log过滤

在标题三中已阐述,在这里不在重复。

2、自定义打印

 /**
* @param printer 打印开关
* @param write 写文件开关
*/
fun custom( printer, write, priority, tag, msg) 
    

注意:printer 和write ,这两个开关将不会被LogDog.Builder 覆盖,也不会覆盖LogDog.Builder中的配置。

3、提供占位符式打印

示例代码:

 LogDog.errorf("DEBUG","我是%log,我的主人是%log","LogDog","Ym")

当然还有其他相关的方法函数提供例如 LogDog.debugf(),LogDog.customf()等,当然填充占位符的变量也不限制类型,还是一样引用类型将会被Json化后填充占位符。

注意:这里的占位符是%log(属于自定义的不能是%Log 、% log、%LOG、%s等;还有就是占位符个数必须大于等于对应的变量个数,反之会发生异常!

如果对您有一些意义,希望您给博主一些鼓励(点赞、关注、收藏),如果这个LogDog有BUG欢迎大家提出。

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

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

相关文章

javascript基础二十六:JavaScript中如何实现函数缓存?有哪些应用场景?

一、是什么 函数缓存&#xff0c;就是将函数运算过的结果进行缓存 本质上就是用空间&#xff08;缓存存储&#xff09;换时间&#xff08;计算过程&#xff09; 常用于缓存数据计算结果和缓存对象 const add (a,b) > ab; const calc memoize(add); // 函数缓存 calc(1…

Linux邮件发送教程:深入了解mail命令

前言 大家好&#xff0c;又见面了&#xff0c;我是沐风晓月&#xff0c;本文是专栏【linux基本功-基础命令实战】的第59篇文章。 专栏地址&#xff1a;[linux基本功-基础命令专栏] &#xff0c; 此专栏是沐风晓月对Linux常用命令的汇总&#xff0c;希望能够加深自己的印象&am…

Java进行公众号开发的常见使用场景及解决方案

Java进行公众号开发的常见使用场景解决方案 文章简介 本文总结了本人在开发过程中遇到的有关于微信开发的诸多常见功能&#xff0c;这些问题在网上找都是零散的回答&#xff0c;所以再此总结一下&#xff0c;方便后续开发。如果有错误之处&#xff0c;还望批评指出&#xff0…

使用Kaggle GPU资源免费体验Stable Diffusion开源项目

使用Kaggle GPU资源免费体验Stable Diffusion开源项目 前言相关介绍Stable Diffusion Kaggle开源项目编辑并复制项目运行项目打开网址&#xff0c;即可体验 参考 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Y…

javascript基础二十五:说说你对函数式编程的理解?优缺点?

一、是什么 函数式编程是一种"编程范式"&#xff08;programming paradigm&#xff09;&#xff0c;一种编写程序的方法论 主要的编程范式有三种&#xff1a;命令式编程&#xff0c;声明式编程和函数式编程 相比命令式编程&#xff0c;函数式编程更加强调程序执行…

C SS复习笔记

1.img标签 img的src属性是图片显示不出来时显示的文字 ing的title属性是光标放到图片上&#xff0c;提示的文字 2.a标签 a标签的target属性表示打开窗口的方式&#xff0c;默认的值是_self表示当前窗口的打开页面&#xff0c;_blank表示新窗口打开页面。 a标签的href链接分…

2023.06.04 学习周报

文章目录 摘要文献阅读1.题目2.背景3.方案4.本文贡献5.模型5.1 图注意力形式5.2 superGAT 6.实验7.结论 有限元数学建模深度学习1.高斯扩散2.原理 总结 摘要 This week, I read a computer science about GNN. At present, the attention mechanism of graph neural network i…

Go Web下GORM框架使用(二)

〇、前言 本文将会写一个前后端分离的的小项目&#xff0c;本文将会只实现后端。 一、定义全局变量与模型 本文需要一个数据库&#xff0c;因此将这个数据库定义为全局变量将会非常轻松。 var (DB *gorm.DB )type Todo struct {ID int json:"id"Title s…

【C#图解教程】第六章 方法(下)

输出参数 函数的输出只有返回值有时不太够&#xff0c;此时需要用到输出参数&#xff0c;用修饰词out声明 输出参数的要求与引用参数类似&#xff0c;需要是变量&#xff0c;此外&#xff0c;输出参数也是实参的别名&#xff0c;指向堆中同一对象。 输出参数与引用参数的不同在…

【实用篇】Elasticsearch03

文章目录 分布式搜索引擎031.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小结 1.3.RestAPI实现聚合1.3.1.API语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.…

【人工智能】— Support Vector Machines 支持向量机

【人工智能】— Support Vector Machines 支持向量机 支持向量机概述支持向量机支持向量机原理介绍分类间距&#xff08;Classification Margin&#xff09; 支持向量机概述 找到使间隔最大化的超平面>B1比B2更好 支持向量机 研究起因&#xff1a;如何找到最优的切分面 分…

制作酷炫可视化大屏利器--分享10种比较流行的开源免费的图表库

在开发可视化项目的过程中往往涉及到可视化图表, 多酷炫的报表, 大屏, 都用了非常多的图表, 接下来我和大家分享一些比较流行的开源免费的图表库. 分享10种比较流行的开源免费的图表库 1&#xff0c;Frappe Charts2&#xff0c;Recharts3&#xff0c;Protovis4&#xff0c;dygr…

Docker快速入门(分分钟钟就能上手)

Docker的思想 集装箱&#xff1a;会将所有需要的内容放到不同的集装箱中&#xff0c;谁需要这些环境就直接拿到这个集装箱就可以了。标准化&#xff1a; 运输的标准化&#xff1a;Docker有一个码头&#xff0c;所有上传的集装箱都放在了这个码头上&#xff0c;当谁需要某一个环…

设计模式-01.设计思想

设计思想 此系列文章非本人原创&#xff0c;是学习笔记。 下面讲一些常见的设计思想 基于接口而非实现编程 这个原则非常重要&#xff0c;是一种非常有效的提高代码质量的手段&#xff0c;在平时的开发中特别经常被用到。 如何解读原则中的“接口”二字&#xff1f; “基于…

python面向对象操作1(速通版)

目录 一、高阶函数 1.lambda函数 2.lambda函数注意事项 3.map用法 4.map和lambda函数配合 二、reduce函数 1.reduce基本应用 2.reduce和匿名函数配合 三、filter()函数 1.简单用法 2.高阶应用 四、列表排列方法&#xff08;key和lambda问题&#xff09; 1.正常排序…

Node服务器和常见模块

1 Node服务器开发 2 fs模块-文件系统 3 event模块-事件处理 4 认识二进制和buffer 5 Buffer的创建方式 6 Buffer的源码解析 node 的fs模块操作&#xff1a; 这里主要讲node如何进行读取文件&#xff0c;操作文件。服务器该有的操作node都有。 node的fs读取文本文件内容的d…

自定义starter

第一步、创建 xxx-spring-boot-starter 的spring Initializr模块 第二步、删除不需要的内容&#xff08;启动类、除下面spring-boot-starter的其它依赖&#xff0c;maven编译插件&#xff09; <dependency><groupId>org.springframework.boot</groupId><…

linux理解软硬链接

软硬连接 在linux下面链接文件有两种&#xff0c;一种是类似window的快捷方式功能的文件&#xff0c;可以让你快速链接到目标文件&#xff08;或目录&#xff09;&#xff0c;叫做软链接&#xff0c;另一种则是通过文件系统的inode链接来产生新的文件名&#xff0c;而不是产生…

Linux 常用开发工具(yum、vim)

绪论 耐心是一切聪明才智的基础。—— 柏拉图。本章进入到Linux下的一些常用的工具&#xff0c;这些工具能帮助我们去更好的使用Linux操作系统。 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看&#xff09;。 附&#xff1a;红色&#xff0c;部分为重点部分&a…

[MAUI程序设计] 用Handler实现自定义跨平台控件

文章目录 Handler与Xamarin.Forms实现的区别为什么要用Handler代替Renderer解耦生命周期管理更细粒度的控制 用Effect来实现呢&#xff1f;自定义手势监听控件在各平台上实现TouchRecognizeriOS中的实现Android中的实现Windows中的实现 创建控件使用控件最终效果项目地址 今天来…