로그를 표시하다보면, 어디서 찍었는지 찾기 힘들 때가 있는데, 이 방법을 사용하면 logcat에 해당 로그를 표시한 곳으로 바로 이동할 수 있는 링크가 만들어진다.
먼저 Log대신 Logg 라는 클래스를 만든다. “App#” 부분은 logcat 필터에 사용하기 위한 문자열이다.
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() { StackTraceElement trace = Thread.currentThread().getStackTrace()[4]; String fileName = trace.getFileName(); String classPath = trace.getClassName(); String className = classPath.substring(classPath.lastIndexOf(".") + 1); String methodName = trace.getMethodName(); int lineNumber = trace.getLineNumber(); String linkString = "(" + fileName + ":" + lineNumber + ")"; String pathString = "APP# " + className + "." + methodName; if (pathString.length() + linkString.length() > 80) { return pathString.substring(0, 80 - linkString.length()) + "..." + linkString; } else { return pathString + linkString; } } }
사용법은 이렇게만 하면 된다.
Logg.i("====== test =====");
그러면
I/APP# MainActivity.onCreate(MainActivity.java:51): ====== test =====

이런 식으로 logcat에 클릭할 수 있는 로그가 표시된다.