java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot日志配置

springboot项目日志配置的详细指南

作者:勇往直前plus

本文介绍Spring Boot日志配置,重点讲解Logback与SLF4J的结合、日志级别设置及YAML/XML配置方式,涵盖控制台、文件输出、滚动策略等,提升开发与维护效率,感兴趣的朋友一起看看吧

前言

最近公司新开一个项目,需要从零搭建、开发,之前的工作都是在已完成的项目上进行维护 ,没有重点关注这些项目的日志是如何配置的,借此机会总结一下boot项目如何合理配置日志,日志是项目遇到问题时首先要排查的内容,因此一个合理的日志配置必定会减少项目的维护难度,提升开发效率。

Logback+SLF4J简介

日志级别应用场景通俗理解
TRACE记录程序执行的每一步细节,用于极端细致的调试流水账
DEBUG开发阶段排查问题,记录变量值、方法执行等调试笔记
INFO潜在的问题或不影响系统的异常(如配置未设置使用默认值)情况简报
WARN记录程序执行的每一步细节,用于极端细致的调试注意一下
ERROR错误事件,影响部分功能但系统仍可运行(如数据库连接失败)出问题了

如何配置日志

SpringBoot 支持两种主要的 Logback 配置方式,这两种配置方式可以组合使用;一种是在yaml配置文件中配置,这种配置方式比较简单,快捷,适用于简单的日志配置需求,优先级较低,另一种是通过Logback专用logback-spring.xml配置文件,功能全面,支持高级功能如多环境、异步日志、复杂滚动策略等,优先级高

配置文件配置

这种方式适合快速设置和覆盖默认值。

# application.yml 示例
logging:
  level:
    root: INFO # 全局默认日志级别
    com.example.demo: DEBUG # 设置特定包的日志级别
    org.springframework: WARN
  file:
    name: ./logs/myapp.log # 指定具体的日志文件路径和名称(通常设置一个即可)
    # path: ./logs # 或者指定日志目录,Spring Boot 会使用默认文件名 spring.log
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" # 控制台输出格式
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" # 文件输出格式

使用Logback的XML配置文件

对于生产环境或需要精细控制的场景,logback-spring.xml是不二之选。将logback-spring.xml配置文件放在resources类路径下

核心组件

一个完整的配置通常包含以下部分:

配置案例

下面是一个比较标准的 Logback 配置文件,它很好地设置了日志输出到控制台和文件,并配置了日志滚动策略。一般情况下如下配置就足够满足日志需求了

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 定义变量 -->
    <property name="LOG_PATH" value="logs" />
    <property name="CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_PATTERN}</pattern>
        </encoder>
    </appender>
    <!-- 文件输出与滚动策略 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/application.log</file>
        <encoder>
            <pattern>${CONSOLE_PATTERN}</pattern>
        </encoder>
        <!-- 当application.log达到10MB或日期变更时,会将其压缩归档并按模式重命名,然后创建新的application.log写入 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/archived/application-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
    </appender>
    <!-- 设置全局日志级别 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
    <!-- 为特定包设置更详细的日志级别 -->
<!--    <logger name="com.yourproject.service" level="DEBUG" />-->
</configuration>

补充:Spring Boot日志文件配置指南

Spring Boot日志文件配置指南

在 Java Spring Boot 项目中配置日志输出到文件,可以通过以下步骤实现。Spring Boot 默认使用 Logback 作为日志框架,以下是两种常用配置方式:

方法一:通过application.properties/application.yml配置(推荐)

这是最简单的配置方式,适合大多数场景。

1. 在配置文件中添加日志设置

application.properties 配置示例:

# 设置日志输出路径和文件名(二选一)
logging.file.name=logs/app.log  # 完整路径(优先使用)
# 或指定目录(自动生成 spring.log)
logging.file.path=logs 
# 日志级别设置
logging.level.root=INFO
logging.level.com.yourpackage=DEBUG
# 日志滚动策略(防止日志文件过大)
logging.logback.rollingpolicy.max-file-size=10MB  # 单个文件最大
logging.logback.rollingpolicy.max-history=30      # 保留30天日志
logging.logback.rollingpolicy.total-size-cap=1GB  # 归档总大小限制

application.yml 配置示例:

logging:
  file:
    name: logs/app.log
  level:
    root: INFO
    com.yourpackage: DEBUG
  logback:
    rollingpolicy:
      max-file-size: 10MB
      max-history: 30
      total-size-cap: 1GB

2. 日志文件效果

方法二:自定义logback-spring.xml配置(高级需求)

当需要复杂配置(如自定义格式、多环境配置、异步日志等)时使用。

1. 创建配置文件

在 src/main/resources 下新建 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 通用配置 -->
    <property name="LOG_PATH" value="logs" />
    <property name="APP_NAME" value="your-app" />
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 文件输出(按天归档) -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${APP_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_PATH}/${APP_NAME}.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>  <!-- 单个文件最大 -->
            <maxHistory>30</maxHistory>      <!-- 保留天数 -->
            <totalSizeCap>1GB</totalSizeCap> <!-- 总大小限制 -->
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 日志级别设置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
    <!-- 包级别日志 -->
    <logger name="com.yourpackage" level="DEBUG" />
</configuration>

2. 关键配置说明

到此这篇关于springboot项目日志配置指南的文章就介绍到这了,更多相关springboot日志配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文