首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring应用程序中的容器启动时记录restful端点

在Spring应用程序中的容器启动时记录restful端点
EN

Stack Overflow用户
提问于 2016-11-16 06:43:35
回答 4查看 12.4K关注 0票数 10

我有一个Spring应用程序,它通过控制器类中的@RequestMapping注释公开restful端点。

我希望在服务器启动时登录到控制台,所有应用程序控制器的所有端点。

我使用tomcat服务器和log4j进行日志记录。

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2018-12-12 17:26:48

适用于那些使用spring-boot的用户的

在最新的spring-boot发行版(从v2.1开始)中,他们更改了映射默认日志级别(在发行说明here中指定)。

将以下属性之一添加到application.properties文件:

  • logging.level.web=TRACE
  • logging.level.org.springframework.web=TRACE

示例控制台输出:

代码语言:javascript
运行
复制
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)
票数 17
EN

Stack Overflow用户

发布于 2016-11-16 06:53:00

在log4J中,为org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping类添加info日志级别。

使用级别INFO

代码语言:javascript
运行
复制
log4j.category.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=INFO

您应该有这样的信息(行被截断):

代码语言:javascript
运行
复制
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

更新

从Spring MVC 5.1/Spring Boot 2开始,日志记录策略发生了变化。

现在用INFO级别记录的信息很少,DEBUG级别提供了更多信息,但并不详细。

只有TRACE级别会提供详细信息。

下面是changelog (重点是我的):

日志版本:

Spring的JCL桥可以通过标准的Commons日志记录来检测。

在信息上的噪音更小,可读的调试日志,跟踪级别的详细信息。

因此,以这种方式更改日志记录配置,以列出所有映射:

Log4J属性方式:

代码语言:javascript
运行
复制
log4j.category.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=TRACE

登录方式:

代码语言:javascript
运行
复制
<logger level="TRACE" name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
票数 8
EN

Stack Overflow用户

发布于 2016-11-16 07:31:55

除了前面在Spring Boot中的回答之外,还有一个Actuator,它公开了一个名为mappings的专用Endpoint,可在/mappings下访问。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40621044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档