Android 开发---LOG封装
来源:互联网 发布:通过网络安装软件补丁 编辑:程序博客网 时间:2024/06/01 10:26
我们在Android开发中,经常使用添加log的方法,通过分析log来判断代码的执行情况。但是,每个人都有自己的log,不删除的话代码显得特别low,但也不能操作别人添加的log,这样代码执行过程中,就不断的有LOG的输出,这是一个很繁琐的问题。网上查看了一下,很多大神现在都已经不适用Android源生的LOG了,而是对源生的LOG进行了封装。通过设置log的开关,设置是否输出LOG,然后每个人可以创建自己的LOG类。详细,请看代码:
LogUtil.java
/** * Created by vectoria on 2017/6/27. * Log打印的封装 * 使用方法: * 可以自定义自己的log.tag */public class LogUtil{private static final boolean DEBUG = true;public static final String CONSTANTS_VECTORIA = "vectoria";public static void D(String tag,String logMsg){ if(DEBUG){ LogBase.d(tag,logMsg); }}public static void d(String tag, String desc) { if (DEBUG) LogBase.d(tag, desc);}public static void v(String tag, String desc) { if (DEBUG) LogBase.v(tag, desc);}public static void w(String tag, String desc) { if (DEBUG) LogBase.w(tag, desc);}public static void i(String tag, String desc) { if (DEBUG) LogBase.i(tag, desc);}public static void e(String tag, String desc) { if (DEBUG) LogBase.e(tag, desc); }}
LogBase.java
/**
* Created by vectoria on 2017/7/17.
*/
public class LogBase {public static final int VERBOSE = 1;public static final int DEBUG = 2;public static final int INFO = 3;public static final int WARN = 4;public static final int ERROR = 5;public static final int NOTHING = 6;public static final int LEVEL = VERBOSE;public static final String SEPARATOR = ",";public static void v(String message) { if (LEVEL <= VERBOSE) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.v(tag, getLogInfo(stackTraceElement) + message); }}public static void v(String tag, String message) { if (LEVEL <= VERBOSE) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.v(tag, getLogInfo(stackTraceElement) + message); }}public static void d(String message) { if (LEVEL <= DEBUG) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.d(tag, getLogInfo(stackTraceElement) + message); }}public static void d(String tag, String message) { if (LEVEL <= DEBUG) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.d(tag, getLogInfo(stackTraceElement) + message); }}public static void i(String message) { if (LEVEL <= INFO) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.i(tag, getLogInfo(stackTraceElement) + message); }}public static void i(String tag, String message) { if (LEVEL <= INFO) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.i(tag, getLogInfo(stackTraceElement) + message); }}public static void w(String message) { if (LEVEL <= WARN) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.w(tag, getLogInfo(stackTraceElement) + message); }}public static void w(String tag, String message) { if (LEVEL <= WARN) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.w(tag, getLogInfo(stackTraceElement) + message); }}public static void e(String tag, String message) { if (LEVEL <= ERROR) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; if (TextUtils.isEmpty(tag)) { tag = getDefaultTag(stackTraceElement); } Log.e(tag, getLogInfo(stackTraceElement) + message); }}/** * 获取默认的TAG名称. * 比如在MainActivity.java中调用了日志输出. * 则TAG为MainActivity */public static String getDefaultTag(StackTraceElement stackTraceElement) { String fileName = stackTraceElement.getFileName(); String stringArray[] = fileName.split("\\."); String tag = stringArray[0]; return tag;}/** * 输出日志所包含的信息 * 线程ID * 类名 * 方法名 * 行数 * log */public static String getLogInfo(StackTraceElement stackTraceElement) { StringBuilder logInfoStringBuilder = new StringBuilder(); // 获取线程名 String threadName = Thread.currentThread().getName(); // 获取线程ID long threadID = Thread.currentThread().getId(); // 获取文件名.即xxx.java String fileName = stackTraceElement.getFileName(); // 获取类名.即包名+类名 String className = stackTraceElement.getClassName(); // 获取方法名称 String methodName = stackTraceElement.getMethodName(); // 获取生日输出行数 int lineNumber = stackTraceElement.getLineNumber(); logInfoStringBuilder.append("[ "); logInfoStringBuilder.append("threadID=" + threadID).append(SEPARATOR); logInfoStringBuilder.append("className=" + className).append(SEPARATOR); logInfoStringBuilder.append("methodName=" + methodName).append(SEPARATOR); logInfoStringBuilder.append("lineNumber=" + lineNumber); logInfoStringBuilder.append(" ] "); return logInfoStringBuilder.toString(); }}
然后你就使用VLogUtil.d(tag,msg)方法调用就好了。
如果你觉得你的代码写的有点low,不妨试试这种装逼的方法,确实有用~
阅读全文
0 0
- Android 开发---LOG封装
- Android Log类封装
- Android Log的封装
- android 封装Log
- Android开发基础 -- Log日志 解释 和 封装
- android----Log类的封装
- Android Log的简单封装
- Android开发之封装log打印日志的工具类,实用logutils详细代码
- android 开发中的Log
- Android开发中的Log
- android开发log管理
- Android开发,Log使用
- 对Android Log进行了封装
- Android技巧之封装Log工具类
- Android中Log的简单封装
- Timber 经典的android Log封装库
- Android log 日志打印简单封装
- Android关于Log的一个简单封装
- 各区块链架构的横向比较
- 关于磁力计和加速度计的融合以及坐标系的对准
- ubuntu键盘异常
- 【Android日记】位置选择(附近地标列表)
- HTML <sup> <sub>标签
- Android 开发---LOG封装
- redis 安装
- poj-3237-鸡兔同笼-C语言-简单计算
- Android中实现热补丁动态修复
- 仓储管理系统(面试问答)
- 最经典的TCP性能问题
- 轻松理解 Android Binder,只需要读这一篇
- 用两个栈实现队列
- java父类构造函数调用子类覆盖方法