如何将行号打印到日志中。假设在将一些信息输出到日志时,我还想打印输出在源代码中的行号。正如我们在堆栈跟踪中看到的,它显示了发生异常的行号。堆栈跟踪在异常对象上可用。
其他替代方法可以是在打印到日志时手动包含行号。还有别的办法吗?
发布于 2008-09-22 14:05:18
从Angsuman Chakraborty (存档):
/** Get the current line number.
* @return int - Current line number.
*/
public static int getLineNumber() {
return Thread.currentThread().getStackTrace()[2].getLineNumber();
}
发布于 2010-12-02 14:03:40
我们最终在Android工作中使用了这样的自定义类:
import android.util.Log;
public class DebugLog {
public final static boolean DEBUG = true;
public static void log(String message) {
if (DEBUG) {
String fullClassName = Thread.currentThread().getStackTrace()[2].getClassName();
String className = fullClassName.substring(fullClassName.lastIndexOf(".") + 1);
String methodName = Thread.currentThread().getStackTrace()[2].getMethodName();
int lineNumber = Thread.currentThread().getStackTrace()[2].getLineNumber();
Log.d(className + "." + methodName + "():" + lineNumber, message);
}
}
}
发布于 2011-05-07 03:54:16
快速和肮脏的方式:
System.out.println("I'm in line #" +
new Exception().getStackTrace()[0].getLineNumber());
有更多的细节:
StackTraceElement l = new Exception().getStackTrace()[0];
System.out.println(
l.getClassName()+"/"+l.getMethodName()+":"+l.getLineNumber());
这将输出如下所示:
com.example.mytest.MyClass/myMethod:103
https://stackoverflow.com/questions/115008
复制相似问题