SpringBoot下使用LogBack打印日志,按天生成,存放指定数量日志

本文详细介绍如何在Spring Boot应用中配置日志,包括在application.yml文件中设置日志级别,以及通过logback.xml实现控制台和滚动文件的日志输出策略。文章涵盖日志格式、异步日志处理及特定包的日志级别定制。

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

1.application.yml 加入配置

logging:
  config: classpath:logback.xml
  level:
    root: INFO
    org.hibernate: INFO
    org.hibernate.type.descriptor.sql.BasicExtractor: INFO
    com.ys.adage.mapper: INFO
    org.springframework: INFO

2.logback 配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>

    <appender name="rollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/logs/bdService.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>./logs/bdService.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <logger name="com.ys.adage.mapper" level="info" additivity="false">
        <appender-ref ref="rollingFile"/>
    </logger>

    <appender name="async-stdout" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="stdout"/>
        <includeCallerData>true</includeCallerData>
    </appender>
    <appender name="async-rollingFile" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="rollingFile"/>
        <includeCallerData>true</includeCallerData>
    </appender>
    <logger name="com.ibatis" level="DEBUG" />
    <logger name="com.ibatis.common.jdbc.SimpleDataSource" level="DEBUG" />
    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />
    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate" level="DEBUG" />
    <logger name="java.sql.Connection" level="DEBUG" />
    <logger name="java.sql.Statement" level="DEBUG" />
    <logger name="java.sql.PreparedStatement" level="DEBUG" />

    <logger name="org.quartz.impl.jdbcjobstore.JobStoreTX" level="INFO"/>
    <logger name="org.quartz.impl.jdbcjobstore.StdRowLockSemaphore" level="INFO"/>
    <logger name="org.springframework.amqp.rabbit.core.RabbitTemplate" level="INFO"/>
    <logger name="org.springframework.amqp.rabbit.listener.BlockingQueueConsumer" level="INFO"/>

    <root level="INFO">
        <appender-ref ref="async-stdout"/>
        <appender-ref ref="async-rollingFile"/>
    </root>
</configuration>

 

<think>好的,我现在需要解决用户的问题:如何在Logback中配置日志文件的存放目录。用户希望看到示例,并且我的回答需要结合提供的引用内容。首先,我需要回顾Logback的配置文件结构,尤其是关于文件输出的部分。 根据引用[2],Logback使用XML配置文件,其中<appender>元素是关键,用于定义日志输出方式。用户关心的是存放目录,也就是文件路径的设置。在RollingFileAppender中,可以通过<file>标签指定日志文件的路径和名称。例如,<file>logs/app.log</file>会将日志存储在项目根目录下的logs文件夹中。 接下来,引用[1]提到日志文件按大小和日期分割,这可能涉及<rollingPolicy>的设置,比如TimeBasedRollingPolicy和SizeBasedTriggeringPolicy。虽然用户主要问的是存放目录,但分割策略中的文件名模式也会影响文件的存储位置。例如,<fileNamePattern>logs/archived/app-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>指定了归档日志的目录结构。 引用[4]中的SpringBoot示例展示了如何包含基础配置,并设置日志级别,但用户需要的是文件路径配置。需要确认是否在<configuration>下直接配置<property>来定义变量,比如<property name="LOG_DIR" value="/var/log/myapp"/>,然后在<file>和<fileNamePattern>中使用${LOG_DIR}引用该变量,这样可以灵活设置目录。 此外,需要考虑不同操作系统的路径差异,比如Windows使用反斜杠,而Linux使用正斜杠。在Logback配置中,使用正斜杠通常是兼容的。还要确保应用程序有写入目标目录的权限,否则会导致日志文件无法生成。 最后,结合用户提供的引用,尤其是引用[3]中的文件结构示例,可以建议用户在配置文件中定义<property>来指定日志目录,并在RollingFileAppender中引用该属性。这样不仅清晰,也便于维护。例如: <configuration> <property name="LOG_DIR" value="/var/log/myapp"/> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_DIR}/app.log</file> <!-- 其他配置 --> </appender> </configuration> 这样,用户就可以通过修改LOG_DIR的值来调整日志文件的存放位置。同时,需要提醒用户检查目录权限和路径是否存在,避免常见问题。</think>### Logback配置日志文件存放目录方法 在Logback中配置日志文件存放目录,主要通过修改`logback.xml`或`logback-spring.xml`文件实现,以下是详细步骤和示例: --- #### **1. 基础路径配置** 在`<configuration>`标签内添加`<property>`定义日志目录变量: ```xml <configuration> <!-- 定义日志文件存放目录 --> <property name="LOG_DIR" value="./logs" /> <!-- 相对路径示例 --> <!-- 或者绝对路径 --> <!-- <property name="LOG_DIR" value="/var/log/myapp" /> --> </configuration> ``` --- #### **2. 配置RollingFileAppender** 使用`RollingFileAppender`实现日志滚动(按大小/日期分割): ```xml <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 当前日志文件路径 --> <file>${LOG_DIR}/application.log</file> <!-- 引用LOG_DIR变量 --> <!-- 滚动策略(按日期和大小分割) --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 归档日志文件名格式 --> <fileNamePattern>${LOG_DIR}/archived/application-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern> <!-- 单个文件最大大小 --> <maxFileSize>50MB</maxFileSize> <!-- 保留最近30日志 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> ``` --- #### **3. 完整配置示例** 结合Spring Boot默认配置(引用[4]): ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 包含Spring Boot基础配置 --> <include resource="org/springframework/boot/logging/logback/base.xml" /> <!-- 自定义日志目录 --> <property name="LOG_DIR" value="./logs" /> <!-- 文件输出Appender --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_DIR}/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_DIR}/archived/app-%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>7</maxHistory> </rollingPolicy> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> <!-- 设置指定日志级别 --> <logger name="com.example" level="DEBUG" /> <!-- 关联Appender到根Logger --> <root level="INFO"> <appender-ref ref="FILE" /> </root> </configuration> ``` --- #### **关键注意事项** 1. **路径权限问题**:确保应用有权限写入目标目录(如`/var/log/myapp`需Linux写权限)[^1]。 2. **路径格式**: - Windows:`value="C:/logs/myapp"`(建议使用正斜杠) - Linux:`value="/var/log/myapp"` 3. **动态路径**:可通过环境变量动态指定路径(如`<property name="LOG_DIR" value="${LOG_PATH:-./logs}" />`)。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值