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>