SpringBoot项目 配置日志生成文件

本文介绍了在Spring Boot项目中使用Logback进行日志配置的详细步骤,包括版本选择、配置文件详解、遇到的常见问题如标签位置和不支持的标签,以及如何通过调整日志滚动策略实现分钟级文件生成。还推荐了相关学习资源。

目录

版本

遇到的坑

效果

 日志学习


版本

ch.qos.logback:logback-classic:1.2.3

ch.qos.logback:logback-core:1.2.3

配置:

yml 里面的配置:

#日志输出配置
logging:
  config: classpath:log4j2-spring.xml
  file:
    path: .

在rsources目录下生成一个xml文件:log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">

    <contextName>lxw</contextName>

    <!--输出到控制台-->
    <appender name="console1" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,
        所以我们使用下面的策略,可以避免输出 Error 的日志-->
        <!--       <filter class="ch.qos.logback.classic.filter.LevelFilter">
                   &lt;!&ndash;过滤 Error&ndash;&gt;
                   <level>ERROR</level>
                   &lt;!&ndash;匹配到就禁止&ndash;&gt;
                   <onMatch>DENY</onMatch>
                   &lt;!&ndash;没有匹配到就允许&ndash;&gt;
                   <onMismatch>ACCEPT</onMismatch>
               </filter>-->

        <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
        如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
        的日志改名为今天的日期。即,<File> 的日志都是当天的。
        -->
        <File>logs/name_tmp.log</File>
        <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
            <FileNamePattern>logs/name.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!-- 按分钟生成日志 【手动狗头】 -->
             <!--<FileNamePattern>logs/name.%d{yyyy-MM-dd_HH_mm}.log</FileNamePattern>-->
           
            <!--只保留最近90天的日志-->
            <maxHistory>60</maxHistory>
            <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
            <!--<totalSizeCap>1GB</totalSizeCap>-->
        </rollingPolicy>
        <!--日志输出编码格式化-->
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console1"/>
        <appender-ref ref="logFile"/>
    </root>
</configuration>

遇到的坑

1. <root>标签需要放到最后面,否则会提示异常,提示

Did you define it below instead of above in the configuration file?

[您是否在配置文件中在下面而不是上面定义了它?]

2.我目前的项目版本发现不支持<Properties>这个标签,

一开始显示错误:

logback在SpringBoot下出现no applicable action for [appender], current ElementPath is [[configuration]

后来xm的子标签,一个个去掉尝试才发现,,,

,没找到原因,估计是版本不支持,所以变量提取这块,也就不设置了,也不是很麻烦。

3.设置成每分钟生成一个配置文件,如下:<FileNamePattern>logs/cityInsuredMonitorReport.%d{yyyy-MM-dd_HH_mm}.log</FileNamePattern>

其实就是配置文件里面的日期格式往后继续写,即可,类推,一个小时一个文件,也是这样。

效果

因为一天一个文件,没法测试,可以修改成一分钟一个文件,测试生成效果,如下图,如果某个分钟内没有日志,那么就不会有日志文件。

 日志学习

如果想具体学习这块知识可以参考这个大佬的博客:

https://www.cnblogs.com/bigben0123/p/7895696.html

 参考博客:

https://www.cnblogs.com/bigben0123/p/7895696.html

https://blog.youkuaiyun.com/wu_qing_song/article/details/112539178

<think>根据用户的问题,他想要在Java Spring Boot项目生成更新日志文件CHANGELOG。 参考引用[1]和[2]提到了Liquibase和Spring Boot Plus项目中的更新日志(CHANGELOG)相关配置。 引用[1]展示了在application.properties中配置Liquibase的change-log路径:`spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.yaml` 引用[2]提到Spring Boot Plus的更新日志(CHANGELOG)以及一些版本更新信息。 因此,可以推断用户所说的“更新日志文件CHANGELOG”可能指的是数据库变更日志(database changelog),通常使用Liquibase或Flyway这样的数据库版本管理工具来生成和管理。 另外,引用[2]的标题为“spring-boot-plus更新日志CHANGELOG(九)”,这里的CHANGELOG可能是指项目的版本更新日志(类似于release notes),而不是数据库变更日志。 因此,用户的问题可能有两种含义: 1. 如何生成数据库变更日志(用于数据库版本控制)。 2. 如何生成项目版本更新日志(记录每个版本的变更内容)。 由于用户没有明确,我们需要考虑两种情况。 针对第一种情况(数据库变更日志): 在Spring Boot中,可以使用Liquibase或Flyway来管理数据库变更,并生成变更日志文件。具体步骤: 1. 添加依赖:在pom.xml中添加Liquibase或Flyway的starter依赖。 2. 配置:在application.properties中配置变更日志文件的路径(如引用[1]所示)。 3. 编写变更日志:按照Liquibase或Flyway的格式编写变更日志文件(通常为XML、YAML、SQL或JSON格式)。 4. 启动应用:启动时,Liquibase/Flyway会自动执行变更。 针对第二种情况(项目版本更新日志): 这通常是通过版本控制系统的提交信息来生成的,或者手动编写。可以使用工具如git-changelog、conventional-changelog等来生成CHANGELOG.md文件。 结合引用[2]中提到的“spring-boot-plus更新日志CHANGELOG”,它更像是一个手动维护的文件,记录每个版本的更新内容。 因此,回答需要涵盖这两种可能性,并询问用户具体指哪一种。 由于用户的问题中同时出现了引用[1](数据库变更日志)和引用[2](项目更新日志),我们需要明确。 但是,用户的问题明确是“生成更新日志文件CHANGELOG”,并且引用[1]中提到了Liquibase的change-log配置,引用[2]中提到了项目更新日志,所以我们可以分别说明。 为了确保清晰,我们将分别介绍: 1. 数据库变更日志(使用Liquibase) 2. 项目版本更新日志(使用工具生成或手动维护) 同时,引用[3]和[4]是关于日志框架的,与当前问题无关,可以忽略。 回答结构: 1. 解释两种不同的CHANGELOG 2. 分别给出方法 3. 建议用户明确需求或根据情况选择 最后,生成相关问题。 </think>在 Java Spring Boot 项目生成更新日志文件(CHANGELOG)主要有两种场景的实现方式,以下是具体方法: --- ### 一、数据库变更日志(Schema Changelog) **用于管理数据库结构变更**,常用工具是 **Liquibase** 或 Flyway。 1. **添加依赖**(Maven): ```xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> </dependency> ``` 2. **配置变更日志路径**(`application.properties`): ```properties spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.yaml ``` 此配置指向 YAML/XML/SQL 格式的变更日志文件 [^1]。 3. **编写变更日志文件**(示例:`db.changelog-master.yaml`): ```yaml databaseChangeLog: - include: file: db/changelog/v1.0-initial-schema.yaml ``` 4. **启动应用**: Spring Boot 会自动执行变更日志中的脚本,并在数据库中生成 `databasechangelog` 表记录变更历史。 --- ### 二、项目版本更新日志(Release Changelog) **用于记录功能迭代和版本变更**,常见实现: 1. **手动维护**: 直接在项目创建 `CHANGELOG.md` 文件,按版本记录更新内容(如引用[2]中的格式): ```markdown ## [V1.1.0] - 2023-01-01 ### ⭐️ New Features - 新增订单管理模块 ### ⚡️ Optimization - 优化分页查询性能 ``` 2. **自动化生成**(推荐): - 使用 **Git Changelog 工具**(如 [git-changelog-maven-plugin](https://github.com/tomasbjerre/git-changelog-maven-plugin)): ```xml <plugin> <groupId>se.bjurr.gitchangelog</groupId> <artifactId>git-changelog-maven-plugin</artifactId> <version>1.75</version> <executions> <execution> <id>generate-changelog</id> <phase>compile</phase> <goals> <goal>git-changelog</goal> </goals> </execution> </executions> </plugin> ``` - 执行命令生成日志: ```bash mvn git-changelog:git-changelog ``` 将基于 Git 提交记录自动生成 `CHANGELOG.md`。 --- ### 选择建议 - **数据库结构变更** → 用 Liquibase - **版本功能记录** → 用 Git Changelog 工具 + `CHANGELOG.md` 两者适用场景不同,大型项目通常需要同时实现 [^2]。 --- **相关问题** 1. Liquibase 如何实现回滚(Rollback)操作? 2. 如何将 Git 提交信息自动关联到 CHANGELOG.md 中的版本分类? 3. Spring Boot 多环境配置下如何管理不同数据库的变更日志
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值