未在关键代码语句中实现日志记录时进行调试的更好方法

时间:2019-08-26 17:47:34

标签: java spring spring-boot

最近,我遇到一种情况,我无法理解要分配的变量是什么,或者因为线程在catch块中而导致线程是否有任何异常,并且由于堆栈跟踪较旧而没有为堆栈跟踪实现任何日志记录我显然可以找到这样的关键部分,然后实施日志记录,但是由于它是一个很大的代码库,因此也很难进行远程调试,因为代码正在生产中运行,对此是否有任何可用的解决方案!

2 个答案:

答案 0 :(得分:0)

您可以使用 Java Profile r例如 YourKit

  

YourKit分析器是Java中最成熟的领导者之一   分析器。作为成熟的多功能分析器,YourKit可以同时进行   通过跨主要Java的集成为您提供CPU和内存配置文件   应用程序服务器,JDBC和其他高级框架   性能分析,例如发现同步问题和过度   数据库访问。 YourKit可以在采样和跟踪中运行   分析模式,而混合方法则可以帮助您最大程度地利用   兼而有之:跟踪实际代码执行的精度,而   能够精确控制性能分析开销。   source

答案 1 :(得分:0)

似乎您需要应用跟踪。通常,关键任务应用程序要求应用程序代码包含跟踪语句,例如:

logger.entering(className, methodName, args);

每个方法都需要跟踪其进入/返回以及中间工作。手动实现跟踪容易出错且成本很高,它很容易占所有代码的20%。对于生产代码,应用程序应用跟踪规范来过滤记录的代码,因此对性能的影响最小: = all:com.company.MyClass。 = finer

要轻松启用Java应用程序进行跟踪并避免编写跟踪代码,请使用 enterprise-aspects AOP Java库: https://github.com/akovac35/enterprise-aspects