javaStackTrace
StackTrace线程运行栈
package com.jiek;
import android.util.Log;
/**
* Created by jiek on 10/12/2015.
* contact me: gaopinjie@gmail.com
*/
public class StackTrace {
private static boolean isDebug = true;
public static boolean isDebug() {
return isDebug;
}
private static void l(String... msgs) {
for (String msg : msgs) {
Log.println(Log.DEBUG, "jiekTrace", msg);
}
}
private static void l(StackTraceElement... stackTraceElements) {
for (StackTraceElement stackTraceElement : stackTraceElements) {
// way 1
l(stackTraceElement.toString());
// way 2
// l(stackTraceElement.getClassName() + "." + stackTraceElement.getFileName() + "." + stackTraceElement.getMethodName() + ">line:" + stackTraceElement.getLineNumber());
}
}
public static void trace(String msg) {
l(msg);
trace();
}
public static void traceAll(String msg) {
l(msg);
traceAll();
}
public static void trace() {
if (isDebug()) {
try {
// way 1
StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
l(stackTraceElements[1], stackTraceElements[2]);
// way 2
// StackTraceElement[] stackTraceElements = new Exception().getStackTrace();
// l(stackTraceElements[1], stackTraceElements[2]);
} catch (Exception e) {
e.printStackTrace();
}
l("-------");
}
}
public static void traceAll() {
if (isDebug()) {
try {
// way 1
l(new Throwable().getStackTrace());
// way 2
// l(new Exception().getStackTrace());
// way 3
// new Exception("StackTrace: ").printStackTrace();
// way 4
// new Throwable("StackTrace: ").printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
在需要监控的地方,导入 import static com.jiek.originalapk.StackTrace.trace;
就可以使用短方法去执行此静态方法。
SelfLog
线程栈加日志综合工具
package com.jiek;
import android.util.Log;
/**
* Created by jiek on 10/12/2015.
* contact me: gaopinjie@gmail.com
*/
public class StackTrace {
private static boolean isDebug = true;
public static boolean isDebug() {
return isDebug;
}
private static void l(String... msgs) {
for (String msg : msgs) {
Log.println(Log.DEBUG, "jiekTrace", msg);
}
}
private static void l(StackTraceElement... stackTraceElements) {
for (StackTraceElement stackTraceElement : stackTraceElements) {
// way 1
l(stackTraceElement.toString());
// way 2
// l(stackTraceElement.getClassName() + "." + stackTraceElement.getFileName() + "." + stackTraceElement.getMethodName() + ">line:" + stackTraceElement.getLineNumber());
}
}
public static void trace(String msg) {
l(msg);
trace();
}
public static void traceAll(String msg) {
l(msg);
traceAll();
}
public static void trace() {
if (isDebug()) {
try {
// way 1
StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
l(stackTraceElements[1], stackTraceElements[2]);
// way 2
// StackTraceElement[] stackTraceElements = new Exception().getStackTrace();
// l(stackTraceElements[1], stackTraceElements[2]);
} catch (Exception e) {
e.printStackTrace();
}
l("-------");
}
}
public static void traceAll() {
if (isDebug()) {
try {
// way 1
l(new Throwable().getStackTrace());
// way 2
// l(new Exception().getStackTrace());
// way 3
// new Exception("StackTrace: ").printStackTrace();
// way 4
// new Throwable("StackTrace: ").printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void v(String msg) {
v("", msg);
}
public static void v(String tag, Throwable tr) {
println(Log.VERBOSE, tag, tr);
}
public static void v(String tag, String msg) {
println(Log.VERBOSE, tag, msg);
}
public static void d(String msg) {
d("", msg);
}
public static void d(String tag, Throwable tr) {
println(Log.DEBUG, tag, tr);
}
public static void d(String tag, String msg) {
println(Log.DEBUG, tag, msg);
}
public static void i(String msg) {
i("", msg);
}
public static void i(String tag, Throwable tr) {
println(Log.INFO, tag, tr);
}
public static void i(String tag, String msg) {
println(Log.INFO, tag, msg);
}
public static void w(String msg) {
w("", msg);
}
public static void w(String tag, Throwable tr) {
println(Log.WARN, tag, tr);
}
public static void w(String tag, String msg) {
println(Log.WARN, tag, msg);
}
public static void e(String msg) {
e("", msg);
}
public static void e(String tag, Throwable tr) {
println(Log.ERROR, tag, tr);
}
public static void e(String tag, String msg) {
println(Log.ERROR, tag, msg);
}
private static void println(int priority, String tag, @NonNull String msg) {
try {
if (isDebug()) {
Log.println(priority, tag, msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void println(int priority, String tag, @NonNull Throwable tr) {
println(priority, tag, "", tr);
}
private static void println(int priority, String tag, String msg, @NonNull Throwable tr) {
try {
if(isDebug()) {
e("logStackTrace throwable", tag);
Log.println(priority, tag, msg + '\n' + Log.getStackTraceString(tr));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用方法也可同理使用
Last updated
Was this helpful?