如何跟踪Java servlet的执行?

时间:2013-12-17 09:58:35

标签: java servlets trace

我遇到了其中一个似乎只出现在制作中的错误。每当我尝试在我的开发机器上重现错误时,即使使用相同的输入数据,我也会画一个空白。

所以,我希望能够跟踪通过Tomcat 7运行的这个Java servlet的整个执行流程,从它的调用到被抛出的最终异常。理想情况下,它会给我一个冗长的方法调用,参数和返回值列表。 类似于* nix strace,,除了Java类。

我确实在评论Execution trace/flow in java 6 and higher中找到了BTrace。我看过它,但是真的不知道它对我有什么帮助。此外,它看起来以运行单独的Java程序为中心。我可以添加一些代码,但实际上并不想进入每个方法来添加跟踪调用。

绝对最好的是,如果用于执行此操作的任何方法都可以通过slf4j进行日志记录(因为我已经将其用于日志记录),但任何日志记录都优于无。

如何获得这样的servlet跟踪?

2 个答案:

答案 0 :(得分:1)

我不知道有一个自动工具,但手动操作相当容易。

在实际调用它时,只需选择几个相关的位置(例如在servlet中)并执行以下操作:

logger.info("Called X with Params "+y, new Exception());

这将为您提供方法,参数和堆栈跟踪。

在相关位置分散更多日志行,您应该能够追踪问题。

答案 1 :(得分:1)

也许Mapped Diagnostic Context可以在这种情况下帮助你。由于您使用的是slf4j,因此切换到logback作为日志框架应该没有问题。

有了它,您可以提供其他信息,例如URI,会话等。+您可以扩展您的日志记录模式以包含method and class以深入了解您的堆栈。