logback-spring.xml

本文详细介绍SpringBoot中日志系统的配置方法,包括控制台输出、文件存储路径、日志级别过滤及滚动策略等,确保日志信息的有效管理和长期保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot自带的日志系统配置文件

使用:

private static final Logger logger = LoggerFactory.getLogger(xxx.class);

logger.info();
logger.warn();
logger.error();
<?xml version="1.0" encoding="UTF-8"?>
<configuration  debug="false">
    <!--定义日志文件的存储地址-->
    <property name="LOG_ERROR_PATH" value="/var/log/liuzhiqin/error" />
    <property name="LOG_INFO_PATH" value="/var/log/liuzhiqin/info" />
    <property name="LOG_WARN_PATH" value="/var/log/liuzhiqin/warn" />
    <!--控制台输出-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}.%method:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <!--ERROR-->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${LOG_ERROR_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}.%method:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <!--INFO-->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${LOG_INFO_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}.%method:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <!--WARN-->
    <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档 -->
            <fileNamePattern>${LOG_WARN_PATH}/warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志文档保留天数-->
            <maxHistory>15</maxHistory>
        </rollingPolicy>
        <!-- 此日志文档只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>WARN</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}.%method:%L - %msg%n</pattern>
        </encoder>
    </appender>

    <!--日志输出级别-->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="ERROR" />
        <appender-ref ref="INFO" />
        <appender-ref ref="WARN" />
    </root>
</configuration>
### logback-spring.xml 配置介绍与使用说明 #### 1. Spring Boot 日志框架概述 Spring Boot 默认集成了 SLF4J 和 Logback,作为应用程序的主要日志记录工具。它会在启动时自动查找并加载 `logback-spring.xml` 文件,如果没有找到该文件,则会尝试加载默认的 `logback.xml` 文件[^1]。 #### 2. logback-spring.xml 的优势 相比于普通的 `logback.xml`,`logback-spring.xml` 提供了一些额外的功能特性: - 支持基于环境的动态配置切换(如开发、测试、生产环境),通过 `<springProfile>` 标签实现。 - 更好地集成 Spring 应用上下文变量,允许在日志配置中引用 `${}` 形式的占位符。 - 提供更灵活的日志路径设置能力,能够根据运行时参数调整日志输出目标。 #### 3. 配置文件基本结构 以下是典型的 `logback-spring.xml` 文件的基本组成部分: ##### (1) 定义根节点 `<configuration>` 这是整个配置的核心容器,所有的 Appender 和 Logger 都定义在此标签之内。 ##### (2) 设置全局属性 `<property>` 可以预先声明一些通用的键值对,方便后续重复利用。例如: ```xml <property name="LOG_PATH" value="/var/logs/myapp"/> ``` 此处设定了一个名为 LOG_PATH 的变量指向服务器上的某个具体目录地址[^2]。 ##### (3) 添加 Appenders Appender 控制如何以及在哪里写入日志数据。常用的有 ConsoleAppender(标准输出流)、FileAppender(固定文件名保存)、RollingFileAppender(按小/时间轮转存档)等类型。下面是一个简单的例子展示怎样创建滚动日志文件: ```xml <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/application.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- daily rollover --> <fileNamePattern>${LOG_PATH}/archived/application.%d{yyyy-MM-dd}.log.zip</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> </appender> ``` 此片段设置了每日归档压缩旧版日志,并保留最近一个月的历史副本[^3]。 ##### (4) 创建 Loggers Logger 对象用来分类管理不同包或组件产生的事件消息级别。一般我们会先定义几个基础层次关系,再逐级细化规则。比如: ```xml <!-- Default logger applied to all packages unless overridden below--> <root level="INFO"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> <!-- Specific package logging levels can be adjusted independently here --> <logger name="com.example.service" level="DEBUG" additivity="false"> <appender-ref ref="SERVICE_LOGS"/> </logger> ``` 上面代码块表明除了 com.example.service 包以外的整体应用都维持 info 级别的跟踪;而 service 层内部则开启 debug 输出模式且不会继承父类的行为特征。 #### 4. 动态环境适配 借助 `<springProfiles>` 元素,我们可以针对不同的部署场景定制专属策略。假设存在 dev,test,prod 三种典型情形分别对应的独立配置文档,则可通过如下方式组织它们的关系链路: ```yaml # application.yml excerpt spring: profiles: active: prod # or 'dev', etc. logging: config: classpath:logback/${spring.profiles.active}.xml ``` 配合实际存在的物理文件布局形似这样: ``` src/main/resources/ ├── logback-dev.xml ├── logback-prod.xml └── logback-test.xml ``` 当程序以 production mode 启动时就会优先读取 /classpath:/logback-prod.xml 内容执行相应指令序列[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值