Android开发 我的开源Android Log “日志狗”LogDog

这篇具有很好参考价值的文章主要介绍了Android开发 我的开源Android Log “日志狗”LogDog。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、简介

二、LogDog的优点

1、打印的格式

2、日志信息

3、LogDog的使用便利

4、参数优化

5、日志文件输出

6、日志文件的内容加密

三、依赖使用LogDog

1、添加仓库

2、添加依赖

四、使用说明

1、初始化

2、配置说明

3、如何使用和参数说明


一、简介

LogDog 是一个开源的 Java 日志框架,它提供了一种简单、高效的方式来管理应用程序的日志。它的特点如下:

  • 简单易用:LogDog 提供了一个简单的 API,可以使用它来记录日志,而不需要写复杂的代码。
  • 多种输出方式:LogDog 支持多种输出方式,包括控制台输出、log文件输出、logcat 输出等。
  • 日志级别控制:LogDog 提供了多种日志级别控制,包括 DEBUG、INFO、WARN、ERROR 等。
  • 可扩展性:开发人员可以通过封装进行扩展,开发者可以自定义输出方式和日志格式等。
  • 性能优化:LogDog 使用异步方式进行日志处理,可以提高日志记录的性能。

LogDog是自定义Android log框架,在方便Android开发人员更方便的日志打印和日志输出到文件;打印日志时提供了非常行吗的分割符号:

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━start━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
         //当前线程信息
    ┣┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┫
         // 当前方法栈信息
    ┣┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┫
        //需打印的信息
    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━end━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

同时在避免日志信息永久存储,提供了日志写入log文件,并保证内容的私密提供加密设置。在打印和输出上,个人认为极大的方便Android开发人员bug的定位和项目的维护、更新、优化提供日志记录。

总的来说,LogDog 是一个功能强大、易用性高、性能优秀的 Android日志框架。

二、LogDog的优点

1、打印的格式

日志格式采用同一时刻打印,如果超出打印限制则分多次打印,同一时刻打印和较少的日志分割符便用开发人员复制日志信息,而不会因为复制日志造成复制了多余的日志分割符从而不利于开发。

    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━start━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
         //当前线程信息
    ┣┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┫
         // 当前方法栈信息
    ┣┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┫
        //需打印的信息
    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━end━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

2、日志信息

除了提供基本的打印信息,还提供了打印当前线程信息,当前方法栈信息: 大概就是四行三块; 第一行是日志开始分割符 注明start; 第一块是线程信息 需要开发人员自行设置开启; 第二行、第三行都是日志的中部信息间隔符; 第二块是当前方法栈信息点击方法内的信息就可直接跳转对应的行数,按顺序打印,所以最后一个方法其实就是打印函数调用的方法; 第三块是需要打印的信息; 第四行是一条日志结束的分割符号。

    ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━start━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
        currentThread: main
    ┣┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┫
        com.ym521.simp.MainActivity.setLog(MainActivity:23)
            com.ym521.simp.MainActivity.initView(MainActivity:37)
                com.ym521.simp.MainActivity.initConfig(MainActivity:28)
    ┣┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┫
    开始测试第一例
    ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━end━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

3、LogDog的使用便利

LogDog使用koltin开发,在对外使用的方法,都采用静态函数(方法):

  LogDog.debug(tag,msg) 
 
  LogDog.info(tag,msg) 

  LogDog.warn(tag,msg) 

  LogDog.error(tag,msg)

当然必须先LogDog.install() 完成LogDog的初始化,个人强烈建议在Application内实现初始化。

4、参数优化

其他Log框架对打印参数都做了限定,LogDog不在限制开发人员打印的参数进行限制,可以是对象、基本类型、数组等都可以;总是在打印 引用类型时会使用Json引擎进行Json转换,JsonEngine LogDog只提供相同的接口,方便开发人员对其自定义实现,采用何种Json框架由开发人员自己决定;当然 这样也就产生了Json引擎是初始化时必要的参数。

5、日志文件输出

Android 原生Log未提供日志文件的写入,LogDog提供了一套以日期中的天为单位的日志文件写入引擎;因为是以天为日志文件单位,所有一天之内的日志都只会在一个文件内;为了避免 过多的权限申请,所以日志文件采用APP内部私有空间,但是为了方便日志文件的外部提取,LogDog也提供APP外部私有空间的存储,只需要在初始化LogDog 进行配置开启就可以了,因为都是私有空间所以都 不用权限申请。

提示:内部私有空间:日志文件地址 data/你的包名/app_logdog/;

           外部私有空间:Android/data/你的包名/files/logdog/。

6、日志文件的内容加密

有时日志内容涉及用户和系统、APP的涉密信息,所以需要对日志文件内的内容进行加密,避免在用户提取日志文件时造成信息泄密威胁运行的系统安全,所以日志文件加密很重要,当然LogDog也提供了日志文件加密 只需要在初始化LogDog 进行开启AES和配置Key就可以了,并且加密只加密 打印数据部分对于TAG、时间戳 log等级不进行加密,由于加密是采用逐条Log加密的所以解密也需要逐条Log解密; 这个问题后期版本会采用整体加密或者其他加密形式优化这个问题。

三、依赖使用LogDog

1、添加仓库


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

2、添加依赖


dependencies {

	        implementation 'com.gitee.ym521:logdog:1.0.2'

	}

四、使用说明

1、初始化

个人建议最好在Application的onCreate()中先调用;记得在AndroidManifest.xml 设置自定义的Application!!!

kotlin:

class MyApplication : Application() {

    override fun onCreate() {
        super.onCreate()
        //这里使用的是 Google开源 Gson 也可以使用其他Json 框架 如:阿里的FastJson
        val gson = Gson()

        val logDog = LogDog.Builder()
            .logWriteLogFileEnable(true) //是否开启写入日志文件
            .logShowMethodEnable(true) //是否开启显示方法栈信息 默认打印两个方法信息
            .logShowThreadInfoEnable(true) //是否打印当前线程信息
            .build()
        //开发人员自行实现对象转json字符串
        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();
        //这里使用的是 Google开源 Gson 也可以使用其他Json 框架 如:阿里的FastJson
        Gson gson = new Gson();
        LogDog logDog = new LogDog.Builder()  //配置说明同上 kotlin
                .logWriteLogFileEnable(false)
                .logShowMethodEnable(true, 2)
                .logShowThreadInfoEnable(true)
                .build();

        logDog.install(this, new IJsonEngine() {
            @NonNull
            @Override
            public <T> String toJSON(T obj) {
                return gson.toJson(obj);
            }
        });
    }
}

2、配置说明

val logDogBuilder = LogDog.Builder()
            .logShowEnable(true) //是否打印日志

            .logShowMethodEnable(false) //是否打印方法信息和打印多少个方法信息 默认2个

            .logShowThreadInfoEnable(false) //是否打印线程信息

            .logWriteLogFileEnable(false) //是否将日志写入日志文件中

            .logFileAESEnable(false,"0000000000000000") //是否启动AES 加密 可以不配秘钥 默认秘钥: 0000000000000000 注意秘钥字符串转byte数组必须是16个否则开启加密失败

            .logFileShowEnable(false) //是否将日志文件输出到外部私有空间 用于日志文件的提取

            .setDefaultTAG("LOGDOG") //自定义 设置,没有自行填写的TAG的统一缺省TAG 默认:LOGDOG

            .build()    

3、如何使用和参数说明

  LogDog.debug(tag,msg) //对应 Log.d 

 
  LogDog.info(tag,msg) //对应 Log.i


  LogDog.warn(tag,msg) //对应 Log.w


  LogDog.error(tag,msg)//对应 Log.e

提示:TAG属于可选参数,可以不填写,如果不填写LogDog使用setDefaultTAG的TAG,如果也没有设置将使用默认值‘LOGDOG’,msg 对类型没有要求。

如果对您有一些意义,希望您给博主一些鼓励(点赞、关注、收藏),如果这个LogDog有BUG欢迎大家提出。文章来源地址https://www.toymoban.com/news/detail-443830.html

到了这里,关于Android开发 我的开源Android Log “日志狗”LogDog的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 036-安全开发-JavaEE应用&第三方组件&Log4j日志&FastJson序列化&JNDI注入

    1、JavaEE-组件安全-Log4j 2、JavaEE-组件安全-Fastjson 3、JavaEE-基本了解-JNDI-API 演示案例: ➢Java-三方组件-Log4JJNDI ➢Java-三方组件-FastJson反射 Jar仓库: https://mvnrepository.com/ Maven配置: https://www.jb51.net/article/259780.htm JNDI相关概念: 1、JNDI是一个接口,在这个接口下会有多种目录系统

    2024年02月21日
    浏览(46)
  • 从斗鱼Android开发二面被刷,到VR微创公司收留,我的NDK开发梦究竟缺了什么

    除了Retrofit,你还知道哪些网络框架?用过吗? 安卓的最新版本知道是几吗?有哪些最新特性? 有自己适配过Dark Mode吗? Android的权限了解吗?如何申请一个权限? Android的通知了解吗?现在APP如何发出一个通知? Java中==和equals的区别? equals和hashcode有什么关系? 默认情况下

    2024年04月16日
    浏览(39)
  • 抖音seo源码-源代码开发搭建-开源部署操作日志

      抖音seo源码开发是一项非常重要的技术,在抖音上,有很多视频,如果你想让自己的视频脱颖而出,那么就需要优化自己的seo源码。不过,为了保护用户的隐私,抖音并不公开其seo算法的细节,因此需要开发者自己探索。抖音SEO矩阵系统源码开发功能模型是指在抖音平台上

    2024年02月13日
    浏览(49)
  • MySQL 三大日志(bin log、redo log、undo log)

    redo log (重做日志) 是 InnoDB 存储引擎独有的,它让 MySQL有了崩溃恢复的能力,是事务中实现 持久化的重要操作 比如 MySQL 实例宕机了,重启时, InnoDB 存储引擎会使用 redo log 恢复数据,保 证数据的持久性与完整性 。 MySQL 中数据时以页为单位,查询一条记录,会从硬盘中把该

    2024年02月07日
    浏览(57)
  • linux log 日志

    /* author: hjjdebug  * date: 2023年 08月 08日 星期二 13:18:08 CST  * descriptor: linux log 日志  * destinator: 搞清linux 下log 日志  * 下面代码编译通过即可运行  */ #include stdio.h #include syslog.h int main(void) {     // 打开系统日志, 可选     //    openlog(\\\"demo\\\", LOG_CONS | LOG_PID, LOG_USER);     // 将一

    2024年02月13日
    浏览(40)
  • 一文详细介绍查看和启用nginx日志(access.log和error.log),nginx错误日志的安全级别,自定义访问日志中的格式

    我们在实际工作中,经常使用到日志。 日志在一个系统中是非常重要的,它可以监控一个应用程序的活动,因为它们为你提供有用的调试信息,并使你能够分析一个 Web服务器 的所有方面。 像其他软件应用程序一样, Nginx 也会将诸如网站访问者、遇到的问题等事件保

    2024年02月09日
    浏览(71)
  • PostgreSQL Log 日志模块详解

    本文讲的是操作日志,非 WAL 日志。 PG 的日志模块是一个相对独立的模块,主要功能就是打印用户的操作日志以及一些异常报错信息。本文仅讲述 logging_collector 参数开启的情况。 PG 有各种各样的进程,其中 syslogger 进程专门用于打印日志信息。 而其余进程打印日志的方法如

    2024年02月11日
    浏览(41)
  • Mybatis 日志(JDK Log)

    上一篇我们介绍了Mybatis中的参数,本篇我们使用JDK Log打印一下Mybatis运行时的日志,看一下Mybatis执行的过程。 这里我选取上一篇的示例进行JDK Log的集成,这里如果您想对上一篇进行详细了解,可以参考: Mybatis参数(parameterType) https://blog.csdn.net/m1729339749/article/details/132548838 在

    2024年02月10日
    浏览(37)
  • MongoDB:切换log日志文件

    可以不重启MongoDB,切换日志文件 参考 MongoDB 日志切割三种方式

    2024年02月13日
    浏览(45)
  • Android开发者必须收藏的8个开源库,Android开发面试技能介绍

    听过很多人说Android学习很简单,做个App就上手了,工作机会多,毕业后也比较容易找工作。这种观点可能是很多Android开发者最开始入行的原因之一。 在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。 在实现的过程中,总是会被

    2024年03月19日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包