0

我想要一种快速将详细信息转储到日志的方法。它会是这样的:

public static void log(String message, Class<?> sourceClass){
    dump(formattedTime+sourceClass.getName()+"line"+lineNumberfromwhichthemessagecomes 
    (if several occurences are found, show all of them if there's no other way to
    detectwhere has the method been called from).
}

我已经知道关于创建一个新的异常对象并获取其堆栈跟踪的第一行的行号的技巧,但是通过使用它,我必须将行号作为参数添加,因为如果你在log方法中执行这个技巧,您将始终获得相同的行号(您制作技巧的行之一)。

有没有办法实现这一点)?

4

1 回答 1

6

您可以使用 Exception 的 getStackTrace() 方法来获取堆栈帧的列表。然后,您可以将堆栈向上移动 1 个元素或使用某些逻辑(例如,直到您获得不在日志记录类中的方法)并使用该 StackTraceElement 中的行号进行日志记录。

于 2012-09-22T14:33:12.910 回答