Log日志打印工具类

本文介绍了如何创建一个自定义的Log工具类,满足在Android开发中快速定位代码位置、自动控制日志开关、美化日志输出等需求。通过使用StackTraceElement,实现了点击日志跳转到源代码的功能。同时,该工具类支持打印JSON数据,自动设置TAG,并提供了线程信息。需要注意的是,在使用BuildConfig.DEBUG时,要确保导入的是当前Module的包,以避免DEBUG值始终为false。
摘要由CSDN通过智能技术生成

Log日志打印工具类

转载需注明出处http://blog.csdn.net/fight_0513/article/details/77098225

概述

  • android的日志信息打印为我们开发过程中提供了许多帮助,不过系统的log还不够完美,例如不能快速定位代码位置,每次都要考虑设置怎样的Tag,还不美观,超长字符串打印不全(log单条打印长度限制4*1024字符长度),不能一眼就找到自己打印的信息……
  • 网上已经有许多优秀的LOG框架 但是个人觉得有些臃肿,所以想自己动手写个方便的Log工具

个人需求

  • 能定位(点击日志跳转到具体代码位置)
  • 自动的日志打印开关(发布release版本时自动关闭日志打印)
  • 美观(带边宽,可控制)
  • 可以打印JSon数据,保证信息完整
  • 不需要手动设置TAG
  • 支持传入Objec
  • 在手动设置TAG的情况下支持输入多个参数
  • 提供线程信息

不支持打印到文件,不支持打印XML


执行效果

这里写图片描述

功能提要 >>代码定位

日志工具类的技术含量还是比较低的值得一提的只有快速定位代码位置的功能,这里涉及一个 StackTraceElement 类 就是堆栈信息;通过这个类可以获取当前堆栈信息,例如当前运行的线程,文件名,方法名,类名和代码所在行数……

        //获取堆栈信息
        // 这里的数组的index=5是根据你工具类的层级做不同的定义,遍历之后就知道啦
        StackTraceElement[] targetElement = Thread.currentThread().getStackTrace();
        String fileName = targetElement[5].getFileName();
        String className = targetElement[5].getClassName();
        int lineNum = targetElement[5].getLineNumber();
        String methName = targetElement[5].getMethodName();

        Log.e("TAG", "processContents: >>>" + fileName);
        Log.e("TAG", "processContents: >>>" + className);
        Log.e("TAG", "processContents: >>>" + methName);
        Log.e("TAG", "processContents: >>>" + lineNum);

        //严格按(FileName:LineNuber)的格式来写 才可以定位
        Log.e("TAG", "processContents: >>>" + "(" + fileName + ":" + lineNum + ")");

打印结果
这里写图片描述

注意

调用 BuildConfig 导包时一定要导入 当前 Module 的包,导入其他包 BuildConfig.DEBUG的值将会一直为false

原因:BuildConfig.java 是编译时自动生成的,并且每个 Module 都会生成一份,以该 Module 的 packageName 为 BuildConfig.java 的 packageName。所以如果你的应用有多个 Module或者有其他三方依赖 就会有多个 BuildConfig.java 生成,而上面的 Lib Module import 的是自己的 BuildConfig.java,编译时被依赖的 Module 默认会提供 Release 版给其他 Module 或工程使用,这就导致该 BuildConfig.DEBUG 会始终为 false。

完整代码 >>代码下载

代码注释比较详细 如有疑问欢迎留言

public final class mLogUtils {
   

    private mLogUtils
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值