spring boot 配置logback日志,按时间和大小分割

博客展示了配置文件logback-spring.xml的内容,包含日志文件存储地址目录定义、日志级别设置,以及多种将日志输出到控制台和文件的方式,如按大小和时间分割文件等配置。

配置文件logback-spring.xml内容如下:

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

<configuration scan="true" scanPeriod="10 seconds" debug="false">
    <contextName>logback</contextName>
    <!--定义日志文件的存储地址目录-->
    <property name="LOG_HOME" value="E:/log/"/>

    <!-- 日志级别 有高到低 ERROR、WARN、INFO、DEBUG、TRACE -->
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <withJansi>true</withJansi>
        <encoder>
            <!--格式化输出:%d:表示日期    %thread:表示线程名     %-5level:级别从左显示5个字符宽度  %msg:日志消息    %n:是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--第一种方式:输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 按分钟分割 文件名2018-08-29-15-32[0].log,如果文件大小超过100kb,则继续分割日志2018-08-29-15-32[1].log,
            2018-08-29-15-32[2].log。%d和%i不能缺少
            -->
            <fileNamePattern>${LOG_HOME}logback.%d{yyyy-MM-dd-HH}[%i].log</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <!--格式化输出:%d:表示日期    %thread:表示线程名     %-5level:级别从左显示5个字符宽度  %msg:日志消息    %n:是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    
    <!--第二种方式:输出到文件-->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/%d{yyyyMMddHHmm}/ceshi.log.%i
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10kb</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
            </Pattern>
        </layout>
    </appender>
    
     <!--第三种方式:输出到文件-->
    <appender name="three_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/ceshi-%d{yyyyMMddHHmm}.log.%i
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10kb</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n
            </Pattern>
        </layout>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
        <!-- <appender-ref ref="DEBUG_FILE" />
        <appender-ref ref="three_file" /> -->
    </root>
    <!-- 指定文件,日志级别和输出路径 -->
    <logger name="com.demo.controller.MainTestController" level="info" additivity="false">
        <appender-ref ref="console" />
    </logger>

</configuration>

转载于:https://my.oschina.net/sky2008/blog/1936022

### 如何在 Spring Boot配置 SLF4J 的日志输出格式 在 Spring Boot 项目中,默认情况下已经集成了 SLF4J Logback,因此可以通过调整 Logback配置来实现自定义的日志输出格式。以下是具体的配置方法: #### 1. 修改 `logback-spring.xml` 文件 为了自定义日志输出格式,可以在项目的 `src/main/resources` 目录下创建或编辑 `logback-spring.xml` 文件。通过设置 `<pattern>` 节点的内容来自定义日志的输出样式。 以下是一个典型的 `logback-spring.xml` 配置示例[^2]: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 定义控制台输出 --> <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> <!-- 设置根日志级别 --> <root level="info"> <appender-ref ref="CONSOLE"/> </root> </configuration> ``` 上述配置中的 `%pattern` 是关键部分,用于指定日志的具体输出格式。常见的占位符及其含义如下: - `%d`: 输出日期时间,默认格式为 ISO8601。 - `%thread`: 当前线程名。 - `%level`: 日志级别(如 DEBUG, INFO, WARN, ERROR)。 - `%logger{X}`: 记录器名称,其中 `{X}` 表示截断长度。 - `%msg`: 日志消息内容。 - `%n`: 换行符。 #### 2. 自定义其他日志属性 除了控制台输出外,还可以配置文件输出或其他高级功能。例如,在日志文件中追加特定的信息或者按天分割日志文件。下面展示了一个带有滚动策略的日志文件配置: ```xml <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>logs/app-%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="CONSOLE"/> <appender-ref ref="FILE"/> </root> ``` 在此配置中,日志会写入到 `logs/app.log` 文件,并每天生成一个新的日志文件,旧的日志文件最多保留 30 天。 #### 3. 替换默认日志框架 (可选) 如果希望使用 Log4j2 来替代默认的 Logback,则需要移除默认依赖并添加 Log4j2 的相关依赖项。具体操作包括修改 Maven 或 Gradle 构建工具中的依赖声明以及放置合适的 `log4j2.xml` 配置文件[^1]。 Maven 示例: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!-- 排除默认的 Logback 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> ``` Log4j2 配置文件 (`log4j2.xml`) 可能类似于以下结构: ```xml <?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %class{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="info"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration> ``` --- ### 总结 以上展示了如何利用 SLF4J 结合 Logback 实现自定义日志输出格式的方法。无论是简单的控制台打印还是复杂的日志轮转机制,都可以通过合理配置 XML 文件完成。对于更复杂的需求,也可以考虑替换为 Log4j2 并相应调整其配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值