Spring动态自定义logback日志目录

Spring动态自定义logback日志目录

@Date 2018.10.18

问题场景

在业务开发中, 遇到一个场景. 日志目录需要根据不同的一个业务id存储. 故需要动态存储logback的日志

解决办法

在springboot中, 或者spring相关框架中, 可以通过实现logback的PropertyDefinerBase方法来动态决定日志目录.

// 通过实现logback的PropertyDefinerBase方法,动态定义logback配置中的变量
@Component
public class DefineDir extends PropertyDefinerBase {

    @Override
    public String getPropertyValue() {
        return "动态参数";
    }
}
<configuration>

    // 通过DefineDir类映射自定义变量, 实现动态修改logback的日志目录
    <define  name="dirXxx" class="com.xxx.DefineDir" />

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>../logs/${dirXxx}/info.log</file>
        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} [%thread] [%X{requestId}] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>

上一篇:Confluence 6 重置登录计数


下一篇:年轻人的第一个自定义 Spring Boot Starter!