我试图使用打印到控制台的日志来查看 Spring 框架内的执行流程。目的是稍微了解 Spring 框架的内部工作原理。我在我的应用程序中将日志记录级别设置为 ALL。以下行打印在日志中:
2013-07-04 14:46:34 TRACE DispatcherServlet:1018 - Bound request context to thread: org.apache.catalina.connector.RequestFacade@13dd208
2013-07-04 14:46:34 DEBUG DispatcherServlet:823 - DispatcherServlet with name 'web' processing GET request for [/webtemplate/]
2013-07-04 14:46:34 TRACE DispatcherServlet:1088 - Testing handler map [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@fedfb6] in DispatcherServlet with name 'web'
2013-07-04 14:46:34 DEBUG RequestMappingHandlerMapping:220 - Looking up handler method for path /
2013-07-04 14:46:34 TRACE RequestMappingHandlerMapping:264 - Found 1 matching mapping(s) for [/] : [{[/],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}]
2013-07-04 14:46:34 DEBUG RequestMappingHandlerMapping:227 - Returning handler method [public java.lang.String com.lister.custom.webtemplate.controller.MainController.index(org.springframework.ui.ModelMap)]
2013-07-04 14:46:34 DEBUG DefaultListableBeanFactory:246 - Returning cached instance of singleton bean 'mainController'
2013-07-04 14:46:34 TRACE DispatcherServlet:1122 - Testing handler adapter [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter@771eb1]
我检查了源文件(?)和所有行中打印的行号:
- DispatcherServlet:823
- DispatcherServlet:1018
- 请求映射处理程序映射:220
- ETC...
试图看看里面发生了什么。
但是,在大多数情况下,我无法在相应的行号中找到任何相关代码。许多人只是对这些行号发表了评论。
在上述日志行中,只有DispatcherServlet:823
打印日志的实际代码。
如何使用日志(DEBUG 和 TRACE)来跟踪 Spring 内部的执行流程?
笔记:
我的应用程序使用的二进制文件和我正在检查的源的版本是相同的 - 3.2.3.RELEASE
以下是我的记录器模式:
log4j.appender.console.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
如果有帮助。