Android 定义全局LOG打印日志,并显示调用者相关信息
2016-05-10 10:05
591 查看
public class LogUtils { private static final boolean VERBOSE = true; private static final boolean DEBUG = true; private static final boolean INFO = true; private static final boolean WARN = true; private static final boolean ERROR = true; private static final String SEPARATOR = ","; public static void v(String message) { if (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 (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 (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 (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 (INFO) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.i(tag, message); } } public static void i(String tag, String message) { if (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 (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 (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 message) { if (ERROR) { StackTraceElement stackTraceElement = Thread.currentThread().getStackTrace()[3]; String tag = getDefaultTag(stackTraceElement); Log.e(tag, message); } } public static void e(String tag, String message) { if (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; } /** * 输出日志所包含的信息 */ 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("threadName=" + threadName).append(SEPARATOR); logInfoStringBuilder.append("fileName=" + fileName).append(SEPARATOR); logInfoStringBuilder.append("className=" + className).append(SEPARATOR); logInfoStringBuilder.append("methodName=" + methodName).append(SEPARATOR); logInfoStringBuilder.append("lineNumber=" + lineNumber); logInfoStringBuilder.append(" ] "); return logInfoStringBuilder.toString(); } }
相关文章推荐
- GSON 解析数据
- Android事件学习总结
- Android--百度地图开发(二)
- Android 自封装的各种类
- android-----Fragment之间的通信
- Ubuntu下创建启动Android studio的快捷方式
- 兔子-java.lang.UnsupportedClassVersionError: com/android/dx/command/Main : Unsupported major.minor ver
- Android--百度地图密钥申请+环境配置(一)
- 在学习Android的过程中,ContentProvider不能被其他程序调用或交互
- SDK23 Android6.0 Permission新特性 Everything every Android Developer must know about new Android's Runt
- Android——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
- Android 5.1中FOTA升级APN的方法
- android 按返回键最小化(后台运行)
- Android studio MAC和window 个人常用快捷键
- Android很nice的Spinner(NiceSpinner)
- android应用开发(十):widget的使用
- No enclosing instance of type * is accessible.
- Android Material Design之Toolbar与Palette实践
- Android 优质开源项目剖析与技术进阶
- Android自动检测版本及自动升级