Android 定义全局LOG打印日志,并显示调用者相关信息
来源:互联网 发布:淘宝联盟 退运费 福袋 编辑:程序博客网 时间:2024/05/05 15:15
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(); }}
0 0
- Android 定义全局LOG打印日志,并显示调用者相关信息
- android中Log打印日志相关信息
- 【Android Util】全局控制Log打印日志
- android 调用jni 并打印log
- android打印log日志
- android log 信息打印
- Android之Log的日志打印信息的封装
- 在Android应用中使用Log打印日志信息
- android 签名打包时去掉log日志打印(仅在debug包中打印log信息)
- Android 捕获全局异常信息并进行相关处理
- c 宏定义log日志简单打印
- iOS 宏定义~log(打印日志)
- Android Log日志规则打印
- android ndk打印log信息
- Android NDK Log信息打印
- android jni打印log信息
- Android Log 日志调试(打印日志)
- 定义全局的Context和定义自己的打印日志
- CSS基本语法和选择器
- hive
- 内部类访问外部类的属性的原理
- 获得当前选择的控制器
- 求mat的连通域,并只显示最大轮廓的连通域
- Android 定义全局LOG打印日志,并显示调用者相关信息
- uva191 Intersection(线段之间相交)
- 直接量
- 监听通知,在程序退出前要移除
- 字符串排序 nyoj 1149
- BZOJ4386: [POI2015]Wycieczki
- SDWebImage的细节问题
- 讲一个数组内的对象属性保存到另一个数组
- myeclipse中Could not find the main class: org.apache.catalina.startup.Boostrap. Program will exit