android log 优化,Android 项目Log日志输出优化

概述

Android开发过程中经常需要向控制台输出日志信息,有些人还在用Log.i(tag,msg)的形式或者system.out.println(msg)方式吗?本篇文章对日志信息输出进行优化,以达到快速定位输出日志位置及输出规范日志的效果。日志输出行展示调用输出日志信息在哪个文件的第几行,并且可以和点击跳转到对应位置的作用。

输出日志的一般形式

1、在项目中直接调用Log.i(tag,msg)或者println函数,这是初级开发者的做法,不便于后期维护与统一控制。

2、在项目中对输出操作进行封装,在封装类中统一调用,这是成熟开发人员的做法,便于统一控制日志输出,并在发版时取消日志输出操作。

3、对第二种方法进一步优化,让日志全面展示调用信息及方便开发过程中通过IDE直接跳转到调用位置。本文即对第三种优化进行记录。

封装日志操作

将常见日志输出操作统一放到一个类中,项目需要输出日志时通过这个类进行调用,相信大家都有封装,此步不做详细说明。

日志信息输出优化

我们在封装Log操作时经常遇到一个难题,那就是TAG如何制定,让调用者作为参数传入还是固定使用一个常亮?我的操作时自动调出调用位置信息,将这些信息进行处理后作为TAG,查看日志时看一看到是哪个文件的第几行在输出日志。

以下为获取TAG信息的方法,可以直接复制到代码中调用,将其作为文本内容通过println函数输出也可实现此效果。

/**

* 运行栈类名

*/

static String stackClassName = "";

/**

* 运行栈

*/

static StackTraceElement[] stackTraceElements;

/**

* 获取默认TAG

*/

private static String getDefaultTag(){

try {

//获取当前运行任务栈信息

stackTraceElements = Thread.currentThread().getStackTrace();

//遍历任务栈信息,获取调用者信息并返回

for (StackTraceElement stackTraceElement : stackTraceElements) {

stackClassName = stackTraceElement.getClassName() + "";

//仅获取本项目下的非此类调用信息

if (!stackClassName.contains(LogUtil.class.getSimpleName()) && stackClassName.contains("com.")) {

return "(" + stackTraceElement.getFileName() + ":" + stackTraceElement.getLineNumber() + ")";

}

}

} catch (Exception e) {

e.printStackTrace();

}

return LogUtil.class.getSimpleName();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值