Alb*_*tin 4 java rest spring spring-mvc restful-url
我有一个Spring应用程序,它通过Controller类中的@RequestMapping注释公开了宁静的端点。
我希望在服务器启动时,将所有应用程序控制器的所有端点都登录到控制台。
我使用tomcat服务器和log4j进行日志记录。
谢谢。
For those who use spring-boot:
In the latest spring-boot release (since v2.1), they changed the mapping default log level (as specified in the Release Notes here).
Add one of the following properties to application.properties file:
logging.level.web=TRACElogging.level.org.springframework.web=TRACESample Console Output:
2018-12-12 11:16:51.793 TRACE 11868 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping
c.n.c.MyController:
{POST /users}: addUser(User)
{DELETE /users}: deleteUser(User)
{PUT /users}: updateUser(User)
{GET /users/{id}}: getUserById(String)
{GET /users}: getUsers()
{GET /users_static}: getUsersStaticList()
2018-12-12 11:16:51.795 TRACE 11868 --- [ restartedMain] s.w.s.m.m.a.RequestMappingHandlerMapping
o.s.b.a.w.s.e.BasicErrorController:
{ /error}: error(HttpServletRequest)
{ /error, produces [text/html]}: errorHtml(HttpServletRequest,HttpServletResponse)
Run Code Online (Sandbox Code Playgroud)
从 Spring 5.3.5 开始,可以使用特殊的专用隐藏记录器来记录端点映射,而无需记录所有请求处理的开销。
<Logger name="_org.springframework.web.servlet.HandlerMapping.Mappings" level="debug" additivity = "false">
Run Code Online (Sandbox Code Playgroud)
此功能在https://github.com/spring-projects/spring-framework/issues/26539中引入
在log4J中,添加类的信息日志级别
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping。
随着级别INFO:
log4j.category.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=INFO
Run Code Online (Sandbox Code Playgroud)
您应该具有此类信息(行被截断了):
2016-11-15 23:34:30.040 INFO 10156 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/contacts/{id}],methods=[GET],produces=[application/json]}" o
2016-11-15 23:34:30.040 INFO 10156 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/contacts/{id}],methods=[DELETE],produces=[application/json]}
2016-11-15 23:34:30.040 INFO 10156 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/contacts],methods=[POST],consumes=[application/json],produce
2016-11-15 23:34:30.040 INFO 10156 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/contacts/{id}],methods=[PUT],consumes=[application/json],pro
2016-11-15 23:34:30.040 INFO 10156 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/contacts],methods=[GET],produces=[application/json]}" onto p
2016-11-15 23:34:30.040 INFO 10156 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/contacts/search],methods=[GET],params=[group-id],produces=[a
Run Code Online (Sandbox Code Playgroud)
更新
从Spring MVC 5.1 / Spring Boot 2开始,日志记录策略已更改。
现在INFO,该DEBUG级别记录的信息很少,该级别提供了更多信息,但没有详细说明。
只有TRACE关卡会提供详细信息。
这是变更日志(重点是我的):
记录版本:
通过标准的Commons Logging可以检测到Spring的JCL桥。
信息,可读的调试日志,跟踪级别的详细信息上的噪音更少。
因此,以这种方式更改日志记录配置以列出所有映射:
Log4J属性方式:
log4j.category.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=TRACE
Run Code Online (Sandbox Code Playgroud)
登陆方式:
<logger level="TRACE" name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4018 次 |
| 最近记录: |