java - Spring @RequestMapping 日志消息?

标签 java spring jax-rs spring-rest

我试图反序列化来自 Javascript UI 的 JSON 对象,但我不断收到 400 -“客户端发送的请求在语法上不正确”错误。请注意,我知道 REST 服务可以正常工作,因为如果我对 JSON 进行硬编码,我就可以成功访问该服务,但现在我尝试从实际的 JS 对象生成 JSON。

Spring 是否会生成有助于解决此问题的日志消息?如果是这样,那么我该如何设置呢?

最佳答案

您可以将自己的日志记录过滤器添加到处理链中。使用 Spring Boot 只需提供以下示例:

import javax.servlet.Filter;
...

@Configuration / @SpringBootApplication
class Something {

    @Bean
    public Filter loggingFilter(){
        return new AbstractRequestLoggingFilter() {
            private final Logger log = LoggerFactory
                    .getLogger(Something.class);

            {
                setIncludeClientInfo(true);
                setIncludeQueryString(true);
                setIncludePayload(true);
            }

            @Override
            protected void beforeRequest(HttpServletRequest request, String message) {
                // not needed
            }

            @Override
            protected void afterRequest(HttpServletRequest request, String message) {
                log.info(message);
            }
        };
    }

结果类似于

{timestamp and such} : After request [uri=/v1/thing/1007?null;client=127.0.0.1;payload=  {
    "name": "test7"
  ]

   {
        "name": "test7"

是一个畸形的 body 。这不是最好的过滤器,因为它忽略了有用的信息,例如 http 方法(POST、GET、..)、请求所花费的时间、响应……但是如果您查看它的源代码,您可以轻松地了解写一个更好的适合您的需要的。特别是因为 ContentCachingRequestWrapperContentCachingResponseWrapper 允许您非常轻松地获取请求和响应的副本。

除了servlet过滤器之外,您还可以添加一个HandlerInterceptor,例如https://stackoverflow.com/a/28022330 - 在那里,您可以访问 SpringMVC 的特定详细信息,但您无法在不使用它们的情况下访问请求和响应内容(比较 https://stackoverflow.com/a/2171633 )

关于java - Spring @RequestMapping 日志消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765171/

相关文章:

java - 返回 javax.ws.rs.core.Response 的列表,结果为 500

jakarta-ee - EJB 注入(inject) JAX-RS 不起作用

java - Eclipse DDMS 无法识别我的 Android 手机

java - 用 Java 构建 GPS 跟踪应用程序

spring - RuntimeException 无法映射到响应,重新抛出到 HTTP 容器 java.lang.NullPointerException

java - 使用 spring 框架 twitter API 发布推文时图像损坏

java - 无法在 Apache CXF + JAX-RS 中同时将字符串和文件作为参数发送到 Web 服务

java - swing创建自定义Jbutton问题

java - 如何修复 : Error creating bean with name : Unsatisfied dependency expressed through field

java - Spring MVC 应用程序中的长 URL