继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring Boot 2.x基础教程:找回启动日志中的请求路径列表

程序猿DD
关注TA
已关注
手记 27
粉丝 13
获赞 39

如果您看过之前的Spring Boot 1.x教程,或者自己本本就对Spring Boot有一些经验,或者对Spring MVC很熟悉。那么对于Spring构建的Web应用在启动的时候,都会产生当前应用创建的HTTP连接列表。

如下:

2020-02-11 15:32:39.293 INFO 48395 --- [main] oswshandler.SimpleUrlHandlerMapping:将URL路径[/**/favicon.ico]映射到[class org.springframework.web]类型的servlet.resource.ResourceHttpRequestHandler]处理程序上。] 
2020-02-11 15:32:39.482 INFO 48395 --- [main] swsmmaRequestMappingHandlerAdapter:寻找@ControllerAdvice:org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7ff95560:启动日期[星期二2月11日15:32:37 CST 2020];层次结构的根
2020-02-11 15:32:39.568 INFO 48395 --- [main] swsmmaRequestMappingHandlerMapping:将“ {[/用户/ { id}],方法= [GET]}”映射到公共com.didispace.chapter26。用户com.didispace.chapter26.UserController.getUser(java.lang.Long)
2020-02-11 15:32:39.569信息48395 --- [main] swsmmaRequestMappingHandlerMapping:将“ {[/ users / {id}],methods = [PUT]}”映射到公共java.lang.String com.didispace 。Chapter26.UserController.putUser(java.lang.Long,com.didispace.chapter26.User)
2020-02-11 15:32:39.570 INFO 48395 --- [main] swsmmaRequestMappingHandlerMapping:映射“ {[/ users /],方法= [GET]}“到公共java.util.List <com.didispace.chapter26.User> com.didispace.chapter26.UserController.getUserList()
2020-02-11 15:32:39.570 INFO 48395 --- [ main] swsmmaRequestMappingHandlerMapping:将“ {[/ users /],methods = [POST]}”映射到公共java.lang.String com.didispace.chapter26.UserController.postUser(com.didispace.chapter26.User)
2020-02-11 15:32:39.570信息48395 --- [main] swsmmaRequestMappingHandlerMapping:将“ {[/ users / {id}],methods = [DELETE]}”映射到公共java.lang.String com.didispace 
。Chapter26.UserController.deleteUser (java.lang.Long)2020-02-11 15:32:39.573 INFO 48395 --- [main] swsmmaRequestMappingHandlerMapping:将“ {[/ error]}”映射到公共org.springframework.http。 .ResponseEntity <java.util.Map <java.lang.String,java.lang.Object >> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2020-02-11 15:32:39.573信息48395 --- [main] swsmmaRequestMappingHandlerMapping:将“ {[/ error],produces = [text / html]}”映射到公共org.springframework.web.servlet.ModelAndView org springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2020-02-11 15:32:39.590信息48395-[[主要] oswshandler .SimpleUrlHandlerMapping:将URL路径[/ webjars / **]映射到类型为[类org.springframework.web.servlet.resource.ResourceHttpRequestHandler]的处理程序上
2020-02-11 15:32:39.590 INFO 48395- [[ main] oswshandler.SimpleUrlHandlerMapping:将URL路径[/ **]映射到类型为[类org.springframework.web.servlet.resource.ResourceHttpRequestHandler]的处理程序上`


这些org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping类在启动的时候,通过扫描Spring MVC中的@ Controller`,@ RequestMapping等注解去发现应用提供的所有接口信息。然后在日志中打印,以方便开发者排查关于接口相关的启动是否正确。但是,足够仔细的开发者可能已经发现,从Spring Boot 2.1.0版本开始,就不再打印这些信息了,完整的启动日志变的非常少,以[Spring Boot 2.x基础教程:内置RESTful API与单元测试](http://blog.didispace.com/spring-boot-learning-21-2-1 /)一文的示例为例,可以看到输入内容如下:``` log 2020-02-11 15:34:15.280 INFO 48784 --- [main] cdchapter26.Chapter26Application:使用PID 48784在zhaiyongchaodeMacBook-Pro.local上启动Chapter26Application(/用户/ zhaiyongchao /文档/ git / github / SpringBoot-学习/ 2.1.x /第2-6章/目标/类由zhaiyongcha o //用户/zhaiyongchao/Documents/git/github/SpringBoot-Learning/2.1.x)中





启动2020-02-11 15:34:15.283 INFO 48784--[main] cdchapter26.Chapter26Application:未设置活动配置文件,恢复为
替换配置文件:默认2020-02-11 15:34:16.556 INFO 48784 --- [main] osbwembedded.tomcat.TomcatWebServer:使用端口初始化的Tomcat(s):8080(http)
2020-02-11 15:34:16.587 INFO 48784 --- [main] o.apache.catalina.core.StandardService:启动服务[Tomcat] 
2020-02-11 15:34:16.588信息48784 --- [main] org.apache.catalina.core.StandardEngine:启动Servlet引擎:[Apache Tomcat / 9.0.16] 
2020-02-11 15:34:16.596 INFO 48784 --- [main] oacatalina.core.AprLifecycleListener:在java.library.path中找到基于APR的Apache Tomcat本机库,该库可以在生产环境中实现最佳性能: [/用户/ zhaiyongchao /库/ Java /扩展:/库/ Java /扩展:/网络/图书馆/ Java /扩展:/系统/库/ Java /扩展:/ usr / lib / java:。]
2020-02-11 15:34:16.702 INFO 48784 --- [main] oaccC [Tomcat]。[localhost]。[/]:初始化Spring嵌入式WebApplicationContext 
2020-02-11 15:34:16.702 INFO 48784- -[main] osweb.context.ContextLoader:根WebApplicationContext:初始化在1377 ms中完成
2020-02-11 15:34:16.954 INFO 48784 --- [main] ossconcurrent.ThreadPoolTask​​ Executor:初始化ExecutorService'applicationTaskExecutor'2020 -02-11 
15:34:17.187 INFO 48784 --- [main] osbwembedded.tomcat.TomcatWebServer:Tomcat在具有路径的端口8080(http)上启动
2020年2月11日15:34:17.192 INFO 48784- - [主要] cdchapter26.Chapter26Application:在2.238秒(JVM运行2.764)开始Chapter26Application ``` ##日志找回请求中路径列表为什么在春天启动的2.1.x版本中不再打印请求路径列表呢?






主要是由于从该版本开始,将这些日志的打印级别调整为:从原来的`INFO`调整为`TRACE`。所以,当我们希望在应用启动的时候打印这些信息的话,只需要在配置文件增值对`RequestMappingHandlerMapping`类的打印级别设置即可,在应用程序.properties`中增加以下这行配置:```properties logging.level.org.springframework.web.servlet.mvc.method.annotation。 RequestMappingHandlerMapping = 跟踪```






在增加了上面的配置之后重启应用,便可以看到如下的日志打印:

``` log 
2020-02-11 15:36:09.787跟踪49215 --- [main] swsmmaRequestMappingHandlerMapping:
	cdcUserController:
	{PUT / users / {id}}:putUser(Long,User)
	{GET / users / {id} }:getUser(Long)
	{POST / users /}:postUser(User)
	{GET / users /}:getUserList()
	{DELETE / users / {id}}:deleteUser(Long)
2020-02-11 15:36: 09.791跟踪49215 --- [main] swsmmaRequestMappingHandlerMapping:
	osbawseBasicErrorController:
	{/ error}:error(HttpServletRequest)
	{/ error,产生[text / html]}:errorHtml(HttpServletRequest,HttpServletResponse)
2020-02-11 15:36:09.793 DEBUG 49215 --- [main] swsmmaRequestMappingHandlerMapping:'requestMappingHandlerMapping'中的7个映射

可以看到在2.1.x版本之后,除了调整了日志级别之外,对于打印内容也要进行调整。现在的打印内容根据接口创建的控制器类进行分类打印,这样更方便开发者根据自己编写的控制器来查找初始化了那些HTTP接口。

代码示例

本文的完整工程可以查看下面仓库中的`第2-6章“目录:

如果您觉得这里不错,欢迎星级支持,您的关注是我坚持的动力!

更多本系列免费教程连载[点击进入汇总目录](http://blog.didispace.com/spring-boot-learning-2x/

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP