知识的价值不在于占有,而在于使用。这篇文章主要讲述Android 项目Log日志输出优化相关的知识,希望能为你提供帮助。
概述
android开发过程中经常需要向控制台输出日志信息,有些人还在用Log.i(tag,msg)的形式或者system.out.println(msg)方式吗?本篇文章对日志信息输出进行优化,以达到快速定位输出日志位置及输出规范日志的效果。日志输出行展示调用输出日志信息在哪个文件的第几行,并且可以和点击跳转到对应位置的作用。
输出日志的一般形式
【Android 项目Log日志输出优化】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();
}
推荐阅读
- dapper 多对多查询对象和对象列表
- 斯坦福大学公开课机器学习( advice for applying machine learning | deciding what to try next(revisited)(针对高偏差高方差问)
- 斯坦福大学公开课机器学习(advice for applying machine learning | learning curves (改进学习算法:高偏差和高方差与学习曲线的关系))
- bzoj——2127: happiness
- Android查缺补漏(View篇)--事件分发机制
- 编码与模式------《Designing Data-Intensive Applications》读书笔记5
- appium自动化测试等待的三种方法
- Android中图形截取的方式介绍
- 用java和junit编写app自动化测试用例