首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在java中如何将行号打印到日志中?

在java中如何将行号打印到日志中?
EN

Stack Overflow用户
提问于 2008-09-22 22:02:08
回答 16查看 158.8K关注 0票数 143

如何将行号打印到日志中。假设在将一些信息输出到日志时,我还想打印输出在源代码中的行号。正如我们在堆栈跟踪中看到的,它显示了发生异常的行号。堆栈跟踪在异常对象上可用。

其他替代方法可以是在打印到日志时手动包含行号。还有别的办法吗?

EN

回答 16

Stack Overflow用户

发布于 2008-09-22 14:05:18

Angsuman Chakraborty (存档):

代码语言:javascript
复制
/** Get the current line number.
 * @return int - Current line number.
 */
public static int getLineNumber() {
    return Thread.currentThread().getStackTrace()[2].getLineNumber();
}
票数 110
EN

Stack Overflow用户

发布于 2010-12-02 14:03:40

我们最终在Android工作中使用了这样的自定义类:

代码语言:javascript
复制
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);
  }
 }
}
票数 77
EN

Stack Overflow用户

发布于 2011-05-07 03:54:16

快速和肮脏的方式:

代码语言:javascript
复制
System.out.println("I'm in line #" + 
    new Exception().getStackTrace()[0].getLineNumber());

有更多的细节:

代码语言:javascript
复制
StackTraceElement l = new Exception().getStackTrace()[0];
System.out.println(
    l.getClassName()+"/"+l.getMethodName()+":"+l.getLineNumber());

这将输出如下所示:

代码语言:javascript
复制
com.example.mytest.MyClass/myMethod:103
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/115008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档