【发布时间】:2012-09-22 14:26:23
【问题描述】:
我想有一种方法可以快速将详细信息转储到日志中。它会是这样的:
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 方法,您将始终获得相同的行号(您使用的那一行)。
有什么办法可以做到)?
【问题讨论】:
-
你不能用第二行代替第一行,然后取那个行号吗?比您可以将逻辑保留在记录器本身中。
-
您根本不应该使用异常。 Thread.currentThread().getStackTrace() 避免了代价高昂的异常并为您提供相同的堆栈信息。
标签: java logging metaprogramming meta line-numbers