Android开发之带行号显示的Log工具类
生活随笔
收集整理的這篇文章主要介紹了
Android开发之带行号显示的Log工具类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import android.util.Log;/*** 日志控制*/
public class LogUtils {private final static String TAG = "Log_";private final static boolean sOpenLog = true;public static void d(String logKey, String msg) {d(logKey, msg, 2);}/**** @param logKey* @param msg* @param stackIndex 1:當前位置,2:上級棧位置,0:logcat 的位置(沒有意義)*/public static void d(String logKey, String msg, int stackIndex) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[stackIndex];String log = build(msg, ste);
// Log.d(logKey, log);Log.d(TAG, "[" + logKey + "]" + log);}}public static void d(String msg) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(msg, ste);Log.d(TAG, log);}}public static void i(String logKey, String msg, int stackIndex) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[stackIndex];String log = build(msg, ste);Log.i(TAG, "[" + logKey + "]" + log);
// Log.i(logKey, log);}}public static void i(String logKey, String msg) {i(logKey, msg, 2);}public static void v(String logKey, String msg, int stackIndex) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[stackIndex];String log = build(msg, ste);Log.v(TAG, "[" + logKey + "]" + log);}}public static void v(String logKey, String msg) {v(logKey, msg, 2);}public static void w(String logKey, String msg) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(logKey, msg, ste);Log.w(TAG, "[" + logKey + "]" + log);}}/*** 打印error級別的log** @param tag tag標簽*/public static void e(String tag, Throwable tr) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(tag, "", ste, tr);Log.e(tag, log, tr);
// Log.e(tag, "[" + Thread.currentThread().getId() + "]" + tr.getMessage(), tr);}}public static void e(String logKey, String msg) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(logKey, msg, ste);Log.e(logKey, log);}}public static void e(String logKey, String msg, Throwable e) {if (sOpenLog) {StackTraceElement ste = new Throwable().getStackTrace()[1];String log = build(logKey, msg, ste);Log.e(TAG, log, e);}}/*** 打印調用棧信息** @param tag tag標簽* @param str 內容*/public static void t(String tag, String str) {if (sOpenLog) {LogUtils.i(tag, "DebugInfo: " + str);Throwable e = new Throwable(tag);e.printStackTrace();}}/*** 制作打log位置的文件名與文件行號詳細信息** @param log* @param ste* @return*/private static String build(String log, StackTraceElement ste) {StringBuilder buf = new StringBuilder();buf.append("[").append(Thread.currentThread().getId()).append("]");if (ste.isNativeMethod()) {buf.append("(Native Method)");} else {String fName = ste.getFileName();if (fName == null) {buf.append("(Unknown Source)");} else {int lineNum = ste.getLineNumber();buf.append('(');buf.append(fName);if (lineNum >= 0) {buf.append(':');buf.append(lineNum);}buf.append("):");}}buf.append(log);return buf.toString();}private static String build(String logKey, String msg, StackTraceElement ste) {StringBuilder sb = new StringBuilder();sb.append("[").append(logKey).append("]").append(build(msg, ste));return sb.toString();}private static String build(String logKey, String msg, StackTraceElement ste, Throwable e) {StringBuilder sb = new StringBuilder();sb.append("[").append(logKey).append("]").append(ste.toString()).append(":").append(msg).append("\r\n").append("e:").append(e.getMessage());return sb.toString();}
}
做個記錄獲取以后能用得到!
總結
以上是生活随笔為你收集整理的Android开发之带行号显示的Log工具类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尸兄主角系统介绍
- 下一篇: Android开发之Handler机制记