请问如何得知调用栈?

iCharlene 2005-04-14 11:21:39
比如说记日志,日志模块怎么知道它被谁调用了???
抛异常就别说了,效率相对来说低了一点。

有没有高明一点的办法?
...全文
334 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
gtlang78 2005-07-08
  • 打赏
  • 举报
回复
有一个sun的内部使用的类里面有一个方法可以得到调用者的类, 不过我觉得还是要小心一点儿,尽量不要使用这种内部的类

sun.reflect.Reflection 类

/** Returns the class of the method <code>realFramesToSkip</code>
frames up the stack (zero-based), ignoring frames associated
with java.lang.reflect.Method.invoke() and its implementation.
The first frame is that associated with this method, so
<code>getCallerClass(0)</code> returns the Class object for
sun.reflect.Reflection. Frames associated with
java.lang.reflect.Method.invoke() and its implementation are
completely ignored and do not count toward the number of "real"
frames skipped. */
public static native Class getCallerClass(int realFramesToSkip);
Goldrush 2005-07-07
  • 打赏
  • 举报
回复
有取类名的函数
sjjf 2005-07-07
  • 打赏
  • 举报
回复
mark
iCharlene 2005-07-07
  • 打赏
  • 举报
回复
发现自己未结帐……
iCharlene 2005-06-02
  • 打赏
  • 举报
回复
刚刚发现沉了。
iCharlene 2005-05-05
  • 打赏
  • 举报
回复
你用Class类的方法不就可以得到哪个class调到log了……
具体是哪个方法啊,我找了半天没找到……
不过eclipse里确实都可以看到那个class的信息了,只是我
找不到具体的方法而已……晕。


塞个OB在被监视方法中即可
或者你创造一个被监听方法,该方法继承或者运行你要的方法
你的意思是??我怎么不太明白?被监听的方法?
lingfengtree 2005-05-03
  • 打赏
  • 举报
回复
譬如说com.exam.Example调用了log,
希望log记录下“com.exam.Example"

////////////////////////////////////

你用Class类的方法不就可以得到哪个class调到log了?,
然后Logger.getLogger(""),放到里面不就ok了?
007remember 2005-05-03
  • 打赏
  • 举报
回复
找<java virtual machine>看看
这里有关堆和栈的相关介绍
感觉还算详细啦
jackker 2005-05-03
  • 打赏
  • 举报
回复
问题想复杂了吧
塞个OB在被监视方法中即可
或者你创造一个被监听方法,该方法继承或者运行你要的方法


这样做更OO.
iCharlene 2005-04-18
  • 打赏
  • 举报
回复
唉,顶一顶吧。
iCharlene 2005-04-18
  • 打赏
  • 举报
回复
又沉了,再顶顶。
iCharlene 2005-04-17
  • 打赏
  • 举报
回复
这个……
应该有人知道的吧?
我等了几天了。
zealVampire 2005-04-17
  • 打赏
  • 举报
回复
就好像Logger.getLogger("com.aa.bb");//当前日志类
用Exception也是一个办法。。
看看log4j或者有吧
hongyan2004 2005-04-17
  • 打赏
  • 举报
回复
study
iCharlene 2005-04-16
  • 打赏
  • 举报
回复
别沉……
我还没答案呢……
lingfengtree 2005-04-15
  • 打赏
  • 举报
回复
不会吧?!被调用?
谁去操作就必须先登录,然后有用户名之类的信息,也有操作模块的信息,
写日志的时候,定制想要的信息,把用户名和时间之类的记录下来(数据库或者文件).
不就可以了??
007remember 2005-04-15
  • 打赏
  • 举报
回复
http://www.donews.net/xzwenlan/archive/2005/02/20/282565.aspx
楼主您有空到这里看看
对您可能有帮助
007remember 2005-04-15
  • 打赏
  • 举报
回复
那上面有关于堆栈的简介,可能不是楼主要问的
对不起楼主啦
爱莫能助
学习ing
帮您顶
iCharlene 2005-04-15
  • 打赏
  • 举报
回复
很遗憾,没有什么帮助……
不过都还是谢谢。
iCharlene 2005-04-15
  • 打赏
  • 举报
回复
举个例看……
不甚明白你们的意思……
我不需要用户名和时间之类的。

譬如说com.exam.Example调用了log,
希望log记录下“com.exam.Example"
加载更多回复(1)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧