温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java API接口怎么日志

发布时间:2026-10-02 10:41:02 来源:亿速云 阅读:100 作者:小樊 栏目:编程语言

在 Java 里,“API 接口怎么打日志”通常有几层做法,从最基础到生产级方案都给你讲清楚。


一、最基础:使用日志框架(不要 System.out)

❌ 不推荐

System.out.println("请求来了");

✅ 推荐(SLF4J + Logback / Log4j2)

1. 引入依赖(Spring Boot 自带)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. Controller 中打日志

@RestController
@Slf4j
public class UserController {

    @GetMapping("/user/{id}")
    public User getUser(@PathVariable Long id) {
        log.info("查询用户,id={}", id);
        return userService.getById(id);
    }
}

二、API 接口统一日志(推荐):使用过滤器 / 拦截器

方式一:Spring 拦截器(简单清晰)

@Component
public class LogInterceptor implements HandlerInterceptor {

    private static final Logger log =
        LoggerFactory.getLogger(LogInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request,
                             HttpServletResponse response,
                             Object handler) {
        log.info("API请求: {} {}",
                request.getMethod(),
                request.getRequestURI());
        return true;
    }
}

注册拦截器:

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Autowired
    private LogInterceptor logInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(logInterceptor)
                .addPathPatterns("/**");
    }
}

三、更专业:统一记录请求 & 响应(AOP)

使用 AOP 记录 Controller 日志

@Aspect
@Component
@Slf4j
public class ApiLogAspect {

    @Around("execution(* com.xxx.controller..*(..))")
    public Object logApi(ProceedingJoinPoint pjp) throws Throwable {
        long start = System.currentTimeMillis();
        String method = pjp.getSignature().getName();

        log.info("接口开始: {}", method);
        Object result = pjp.proceed();
        log.info("接口结束: {}, 耗时={}ms",
                method, System.currentTimeMillis() - start);
        return result;
    }
}

四、最强方案:Spring Boot 自带请求日志(HttpLogging)

logging:
  level:
    org.springframework.web: DEBUG

或更细:

logging:
  level:
    org.springframework.web.servlet: DEBUG

五、生产级建议(重点)

✅ 日志内容建议包含:

  • 请求 URL
  • HTTP 方法
  • 请求参数
  • 响应状态
  • 耗时
  • 用户 ID(如有)

✅ 不要打印:

  • 密码
  • token
  • 身份证号

✅ 使用:

log.info("userId={}, api={}", userId, api);

而不是字符串拼接


六、常见组合总结

场景 方案
学习 / 小项目 @Slf4j
统一接口日志 拦截器
精细控制 AOP
全链路追踪 SkyWalking / Sleuth

如果你用的是 Spring Boot / Spring Cloud / 纯 Servlet / 特定框架,可以告诉我,我可以给你更贴合的示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手