SoFunction
Updated on 2025-03-02

How to print logs for interface request parameters in Spring Boot project

In Spring Boot projects, printing logs for interface request parameters is a common practice, which helps debug and monitor API behavior. Here are some ways to implement this function:

Using AOP (Phase-oriented Programming):

Through Spring AOP, you can define a section, intercept all methods entering the Controller, and print the log before and after the method is executed. For example:

@Aspect
@Component
public class LogAspect {
    @Before("execution(* .*.controller.*.*(..))") // Adjust to suit your package path and needs    public void logBefore(JoinPoint joinPoint) {
        // Get request parameters        Object[] args = ();
        // Print log        ("Request: " + (args));
    }
}

Using @ControllerAdvice:

You can create a global exception handler to capture all requests and print logs.

@ControllerAdvice
public class GlobalExceptionHandler {
    @AfterEach
    public void logAfterEach(WebRequest request) {
        // Get request parameters        String params = ("params");
        // Print log        ("Request Params: " + params);
    }
}

Use Interceptor (HandlerInterceptor):

Create an interceptor that logs before and after request processing.

@Component
public class LoggingInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // Print request parameters        ("Request Params: " + ());
        return true;
    }
}

@ModelAttribute using Spring:

Use in Controller method@ModelAttributeto get the request parameters and print them in the method.

@GetMapping("/example")
public String exampleMethod(@ModelAttribute("paramName") String paramValue) {
    ("Received param: " + paramValue);
    // Handle business logic    return "response";
}

Using Spring Boot Actuator:

If you are using Spring Boot Actuator, it can provide monitoring and management of applications, including request logs.

MDC using log framework (Mapped Diagnostic Context):

MDC allows you to create an independent log context for each request, so that you can include request-specific information in the log.

Custom filters:

Create a custom filter that prints parameters before requesting to enter Controller.

public class CustomFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        // Print request parameters        ("Request Params: " + ());
        (request, response);
    }
}

Using Spring Webflux:

If your application is responsively programmed, you can use Webflux's middleware to log.

Each method has its applicable scenarios and advantages and disadvantages. Which method to choose depends on your specific requirements and project structure. Remember to be extremely careful when recording sensitive information in a production environment to avoid recording sensitive data such as passwords and personal information.

This is the article about how to print logs for interface request parameters in Spring Boot project. For more related Spring Boot interface request parameters printing log content, please search for my previous article or continue browsing the related articles below. I hope everyone will support me in the future!