오류났을 때 logcat에 해당 클래스로 바로 넘어가는 링크를 어떻게 만드는지 궁금해서 찾다가 얻은 팁입니다.
일단 로그캣에
(MainActivity.java:123)
이라고 찍으면 바로가기 링크가 만들어집니다.
여기에 클래스 이름이랑 메소드 이름도 같이 표시할 수는 없나 싶어서 찾다보니 그 방법도 있더라고요.
아래 클래스를 이용하면 됩니다.
public class Logg {
public static void v(String msg) {
Log.v(tag(), msg);
}
public static void d(String msg) {
Log.d(tag(), msg);
}
public static void i(String msg) {
Log.i(tag(), msg);
}
public static void w(String msg) {
Log.w(tag(), msg);
}
public static void e(String msg) {
Log.e(tag(), msg);
}
private static String tag() {
int level = 4;
StackTraceElement trace = Thread.currentThread().getStackTrace()[level];
String fileName = trace.getFileName();
String classPath = trace.getClassName();
String className = classPath.substring(classPath.lastIndexOf(".") + 1);
String methodName = trace.getMethodName();
int lineNumber = trace.getLineNumber();
return "APP# " + className + "." + methodName + "(" + fileName + ":" + lineNumber + ")";
}
}
사용법은
Logg.i("====== test =====");
라고 입력하면
I/APP# MainActivity.onCreate(MainActivity.java:51): ====== test =====
이런 식으로 링크도 만들어지고, 클릭하면 저 곳으로 이동도 합니다.
이걸 사용하면 로그의 위치가 바뀌어도 자동으로 실제 위치를 표시하기 때문에 디버깅하기 편합니다.