找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2895

积分

0

好友

413

主题
发表于 5 天前 | 查看: 19| 回复: 0

一、Java接口开发与日志记录

本文旨在探讨在基于Spring Boot的后端项目中,如何实现基础的接口开发,并深入研究如何在接口中有效地记录日志,特别是将JSON格式的数据输出到日志中。

1. 修改Spring Boot应用的默认端口

问题:Spring Boot应用启动后,默认监听8080端口。如何将其修改为其他端口,例如8081?

解决方案:修改配置文件是最直接的方法。

src/main/resources 目录下的 application.properties 文件中添加以下配置即可:

server.port=8081

Spring Boot项目结构及端口配置文件

配置完成后,启动应用,服务器将运行在8081端口。我们可以通过Postman等工具测试接口的连通性。

Spring Boot接口代码与Postman测试结果

2. 在Java接口中记录日志

如何在Java中像其他语言一样,将日志信息输出到文件,并包含不同级别的日志消息呢?Java 生态中通常使用SLF4J配合Logback或Log4j2等实现。

第一步:基础日志配置与使用

Spring Boot默认已包含日志启动器依赖。在代码中,我们可以直接使用SLF4J的API。

首先,在控制器中引入并初始化Logger:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@RestController
public class UserController {
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);

    @GetMapping("/apijson/user")
    public User getUser(@RequestParam String name, @RequestParam int age) {
        // 记录不同级别的日志
        logger.debug("This is a debug message");
        logger.info("This is an info message");
        logger.warn("This is a warning message");
        logger.error("This is an error message");
        return new User(name, age);
    }
}

使用SLF4J记录多级别日志的Java代码

启动应用并调用接口后,可以在控制台看到格式化的日志输出,其中包含了时间、线程、日志级别和类名等信息。

Spring Boot应用启动及接口调用日志输出

第二步:将JSON数据记录到日志中

在实际开发中,我们常常需要将对象以JSON格式记录下来,便于调试和分析。这需要借助JSON序列化库,如Jackson。

  1. 确保依赖:Spring Boot Web Starter默认包含了Jackson。
  2. 使用ObjectMapper:在代码中手动将对象转换为JSON字符串后记录。
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;

@GetMapping("/apison/user")
public User getuser(@RequestParam String name, @RequestParam int age) {
    // 创建业务对象
    MyJsonObject myObject = new MyJsonObject();
    myObject.setName("John");
    myObject.setAge(30);

    // 使用ObjectMapper将对象转换为JSON字符串
    ObjectMapper objectMapper = new ObjectMapper();
    try {
        String jsonString = objectMapper.writeValueAsString(myObject);
        // 将JSON字符串记录为日志
        logger.info(jsonString);
    } catch (JsonProcessingException e) {
        // 处理序列化异常
        e.printStackTrace();
    }
    return new User(name, age);
}

使用Jackson ObjectMapper将对象转为JSON并记录日志

调用接口后,日志中便会输出结构化的JSON数据,如下图所示:

日志中输出的JSON格式数据

总结与思考:通过以上步骤,我们实现了在Spring Boot接口中修改默认端口和记录日志(包括JSON数据)的基本操作。虽然手动使用ObjectMapper增加了代码量,但它提供了灵活的对象序列化控制。对于更复杂的后端日志记录需求,如日志文件滚动、异步日志、集成ELK栈等,则需要进一步配置logback-spring.xml等文件。希望这篇实践笔记能对你在日常开发中的日志处理有所帮助。更多技术讨论与资源分享,欢迎访问云栈社区




上一篇:MySQL慢查询优化实战:20秒到200毫秒的电商订单统计性能调优
下一篇:JS逆向实战:Web渗透测试中签名算法的定位与绕过
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 02:58 , Processed in 0.398793 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表