繁体   English   中英

在Java中的logback日志或stacktrace中打印对象ID

[英]Print object ids in logback log or stacktrace in java

有什么方法可以使Java或Logback在堆栈跟踪和日志调用中为我提供对象ID(或地址等)。 换句话说,代替这个:

com.example.MyObject

在我的堆栈跟踪中,我想要这样:

com.example.MyObject@123456

对于日志记录,我想要这样:

LOG.debug("A message");

像这样:

LOG.debug(this + ": A message");

但是,我看不到任何方法,因为Logback和Java本身似乎都使用StackTraceElement ,而这些都没有记录此信息。

对于奖励积分,如何在dalvik中实现Object.toString() 通用的Java文档说它是toHex(Object.hashCode())但我对此进行了测试,但不匹配。

如您所述,堆栈跟踪本身在每个帧中都不包含this引用。 该信息用于调试器。 可能有一种骇人听闻的方式来获取您想要的信息,但它会很丑,很慢,而且可能很不稳定。 老实说,我不会打扰。

对于奖励积分,如何在dalvik中实现Object.toString()

这是(类似) Object.javahttps : Object.java

从那里:

public String toString() {
    return getClass().getName() + '@' + Integer.toHexString(hashCode());
}

请注意,这是Object类中的基础实现,但通常在子类中将其重写。 这可以解释您所看到的任何差异。

我希望这有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM