【问题标题】:Is there an easy way to insert logging into a class from dependency?有没有一种简单的方法可以将日志记录从依赖项中插入到一个类中?
【发布时间】:2014-02-17 15:12:56
【问题描述】:

我有一些依赖,它的行为看起来很可疑。我想其中存在数据竞争问题:我对类的调用之一将一些内部变量设置为 null,而其他调用仍在处理中。这会导致异常。

我想将日志记录插入到该依赖项的某些类中以确保我是对的。

问题是我无法直接修改该依赖项的来源。我通过 Maven 获得它们并且可以在我的想法中看到它们,但仅此而已。我唯一的想法是通过类路径用修改后的版本替换这些类。但可能有更好的方法吗?我可以为此进行一种“热重新部署”吗?

【问题讨论】:

  • 如果您不需要并行处理,您还可以将调度程序同步到这个非线程安全库。
  • 有AOP,操作字节码,可以拦截调用等。一点重型火炮。
  • 除了Joop,看看AspectJ。
  • 看看field watchpoints。如果不适合闯入 IDE,您可能想尝试programmatic debugger。
  • 据我了解,AOP 只能在评估某些方法之前和之后添加记录器。它无法在方法内部记录。我说的对吗?

标签: java debugging maven intellij-idea


【解决方案1】:

您可以使用 AOP,但我认为以下替代方案更适合仅调试您的问题并一次性获得更多控制权。

Maven 下载本地 .m2 目录中的依赖项 去反编译依赖 根据您的要求进行修改 重新编译依赖项并执行“maven install”,它将再次将其安装在本地 .m2 中 现在用 maven 离线模式构建你的 maven 项目,它不会被替换,你会看到你在修改过程中添加的日志等

【讨论】:

  • 好主意,Jaffar,我通过在原始类之前将修改后的类添加到类路径来做到这一点,但看起来我们的选择是最简单的方法..
  • @KutaBeach 哪个选项?
  • 修改文件,然后将其插入到项目中,像我之前那样通过类路径,或者像你建议的那样通过本地 Maven 存储库。
猜你喜欢
  • 2016-07-30
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
相关资源
最近更新 更多