Log restful endpoints on container startup in a Spring application

后端 未结 3 1592
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-10 16:11

I\'ve a Spring application that expose restful endpoints through @RequestMapping annotation in Controller classes.

I wish that were logged into the console, at serve

3条回答
  •  余生分开走
    2020-12-10 16:55

    In log4J, add the info log level for org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping class.

    With the level INFO :

    log4j.category.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=INFO
    

    You should have this kind of information (lines are truncated):

    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
    

    UPDATE

    Since Spring MVC 5.1/Spring Boot 2, the logging strategy has changed.
    Now very few information are logged with the INFO level, the DEBUG level provides more information but it is not detailed.
    Only the TRACE level will provide detail information.

    Here is the changelog (emphasis is mine) :

    Logging revision:

    Spring's JCL bridge can be detected by standard Commons Logging.

    Less noise on info, readable debug logs, details at trace level.

    So change the logging configuration in this way to list all mappings :

    Log4J properties way :

    log4j.category.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=TRACE
    

    Logback way :

    
    

提交回复
热议问题