logback.xml日志文件(压缩/异步/保留30天)

本文介绍了如何使用logback.xml配置日志文件,包括设置日志文件的压缩、实现日志输出的异步处理以及配置日志文件保留30天的策略。

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

logback日志文件

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Example LOGBACK Configuration File
  http://logback.qos.ch/manual/configuration.html
  -->
<configuration scan="false" scanPeriod="30 seconds">

    <property name="logDir" value="日志路径"/>
    <property name="serviceName" value="项目名称"/>
    <property name="hostName" value="${LOCAL_IP}"/>
    <property name="FILE_PATTERN"
              value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [${serviceName}] [%X{clientip}] [%X{logid}] [%thread] [%-5level] [%line] %logger{36} - %msg %n"/>

    <!-- console appender定义 -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>${FILE_PATTERN}</pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${logDir}/${serviceName}/info.log
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml" /> <property name="LOG_FILE" value="./logs/jetlinks-pro.log"/> <include resource="org/springframework/boot/logging/logback/console-appender.xml" /> <appender name="LOGEventPublisher" class="org.jetlinks.community.logging.logback.SystemLoggingAppender"/> <appender name="ErrorLOGEventPublisher" class="org.jetlinks.community.logging.logback.SystemLoggingAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>WARN</level> </filter> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <encoder> <pattern>${FILE_LOG_PATTERN}</pattern> <charset>${FILE_LOG_CHARSET}</charset> </encoder> <file>${LOG_FILE}</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz}</fileNamePattern> <cleanHistoryOnStart>${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart> <maxFileSize>${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB}</maxFileSize> <totalSizeCap>${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0}</totalSizeCap> <maxHistory>${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-7}</maxHistory> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>WARN</level> </filter> </appender> <!--控制台使用异步打印,防止阻塞--> <appender name="AsyncConsoleAppender" class="ch.qos.logback.classic.AsyncAppender"> <!-- 队列的深度,该值会影响性能,默认 256 --> <queueSize>256</queueSize> <!-- 设为 0 表示队列达到 80%,也不丢弃任务--> <discardingThreshold>0</discardingThreshold> <!-- 日志上下文关闭后,AsyncAppender 继续执行写任务的时间,单位毫秒 --> <maxFlushTime>1000</maxFlushTime> <!-- 队列满了是否直接丢弃要写的消息,false、丢弃,true、不丢弃 --> <neverBlock>true</neverBlock> <!--是否记录调用栈--> <includeCallerData>true</includeCallerData> <!--One and only one appender may be attached to AsyncAppender,添加多个的话后面的会被忽略--> <appender-ref ref="CONSOLE"/> </appender> <springProfile name="dev"> <logger name="system" level="debug"> <appender-ref ref="LOGEventPublisher"/> </logger> <root level="INFO"> <appender-ref ref="AsyncConsoleAppender"/> <appender-ref ref="ErrorLOGEventPublisher"/> </root> </springProfile> <springProfile name="test"> <root level="INFO"> <appender-ref ref="AsyncConsoleAppender"/> <appender-ref ref="FILE"/> </root> </springProfile> <springProfile name="prod"> <root level="INFO"> <appender-ref ref="AsyncConsoleAppender"/> <appender-ref ref="LOGEventPublisher"/> <appender-ref ref="FILE"/> </root> </springProfile> </configuration>在这基础优化
03-08
### Logback.xml 日志配置文件的位置 在 Spring Boot 应用程序中,`logback.xml` 是用于自定义日志记录行为的核心配置文件之一。Spring Boot 默认支持多种命名方式的日志配置文件,包括 `logback.xml`, `logback-spring.xml`, `logback.groovy`, 和 `logback-spring.groovy`[^2]。 #### 配置文件的加载顺序 当应用程序启动时,Spring Boot 会按照特定的优先级查找这些日志配置文件。以下是其默认搜索路径及其优先级: 1. **类路径根目录** (`src/main/resources`) 下的 `logback-spring.xml` 或者 `logback-spring.groovy` 文件会被优先加载。 2. 如果上述文件不存在,则继续尝试加载名为 `logback.xml` 或 `logback.groovy` 的文件。 3. 若以上均未找到,默认使用内置的简单日志配置。 因此,在大多数情况下,开发人员通常将 `logback.xml` 放置于项目的资源目录下,即 `src/main/resources/logback.xml`。 #### 使用 Spring 属性动态设置日志路径 如果希望进一步增强灵活性并允许外部化配置管理,可以利用 `${}` 占位符来引用 `application.yml` 或 `application.properties` 中预设的变量值。例如: ```xml <property name="LOG_PATH" value="${logging.path:/default/path}" /> ``` 在此示例中,`${logging.path}` 将被替换为 `application.yml` 中指定的实际值;如果没有提供该参数,则回退到 `/default/path`[^1]。 #### 自定义位置加载 logback.xml 除了标准位置外,还可以通过 JVM 参数 `-Dlogging.config=classpath:path/to/your-logback.xml` 来显式指明一个非默认位置上的日志配置文件地址[^3]。这种方式特别适用于生产环境部署场景下的高级需求调整。 ### 总结 综上所述,对于典型的 Spring Boot Java 工程而言,推荐的做法是把 `logback.xml` 存放在项目源码中的 `resources` 路径下面以便于维护与版本控制同步考虑。同时借助占位机制实现更灵活可控的日志输出策略设定。 ```java // 示例代码片段展示如何验证当前使用的Logback配置文件路径 import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggingConfigTest { private static final Logger logger = LoggerFactory.getLogger(LoggingConfigTest.class); public static void main(String[] args) throws Exception { System.out.println("Using Logback config file from: " + System.getProperty("logging.config")); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漫长的~以后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值