springboot 日志按照年月日保存

在resouces添加文件logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--<file>d:/tmp/logs/stdout.log</file>-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover 保存历史记录到这个文件夹一日起为后缀 -->
            <fileNamePattern>d:/appdata/zhima/%d{yyyy,aux}/%d{MM,aux}/%d{dd,aux}/%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>10MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
    </appender>
    <root level="INFO">
        <appender-ref ref="CONSOLE"></appender-ref>
        <appender-ref ref="FILE"></appender-ref>
    </root>
</configuration>

fileNamePattern 就是保存路径

### 实现 Spring Boot 日期格式化为中文年月日 为了使Spring Boot应用程序能够以中文年月日的形式展示日期,可以采用多种方法来定制日期的序列化方式。 #### 方法一:通过 `@JsonFormat` 注解指定格式 如果希望特定字段按照中文风格显示,则可以在实体类中针对该字段应用 `@JsonFormat` 注解并设置相应的模式: ```java import com.fasterxml.jackson.annotation.JsonFormat; public class Event { private String name; @JsonFormat(pattern="yyyy{年}MM{月}dd{日}", timezone="GMT+8") private Date eventDate; // getters and setters... } ``` 此代码片段展示了如何利用 `pattern` 参数来自定义日期输出样式[^4]。注意这里设置了时区参数确保时间准确性。 #### 方法二:全局配置 Jackson 序列化器 另一种更通用的方式是在整个项目范围内调整Jackson的行为,从而影响所有被转换成 JSON 的 Java 对象中的日期表示形式。这可以通过修改 `application.properties` 文件完成: ```properties spring.jackson.date-format=yyyy{年}MM{月}dd{日} spring.jackson.time-zone=Asia/Shanghai ``` 上述配置使得所有的日期都将遵循所给定的模板进行渲染[^3]。需要注意的是,这种方式适用于基于Java.util.Date 或者 java.sql.Timestamp 类型的数据成员;而对于新的JSR-310 API (如 LocalDate, LocalDateTime),则需额外处理。 #### 方法三:注册自定义模块支持 JSR-310 类型 为了让新引入的时间API也遵从相同的格式规则,在启动类或其他合适位置添加如下代码可解决问题: ```java @Bean public Module dateTimeModule() { return new JavaTimeModule(); } @Bean public ObjectMapper objectMapper(){ ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(dateTimeModule()); SimpleModule module = new SimpleModule(); module.addSerializer(LocalDateTime.class, new JsonSerializer<LocalDateTime>() { @Override public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy{年}MM{月}dd{日}"); gen.writeString(value.format(formatter)); } }); return mapper; } ``` 这段程序创建了一个用于解析和生成JSON的对象映射工具,并为其指定了一个专门负责序列化 `LocalDateTime` 值的方法[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值