1、普通的Spring項目使用logback預設用properties檔案做為配置變量。
2、如果非要用yaml檔案,那麼可以轉成Spring Boot項目,天生無縫結合
3、沒辦法,如果項目配置檔案用了yaml,那麼你的logback隻能自己另開properties檔案進行單獨配置
以下是基于Spring Boot的yaml配置檔案示例:
application.yml:
# 日志配置 為空為項目跟目錄下的logs 或者指定已經存在的目錄
log:
path: /data/weblog/business/www.test.com
logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!--
說明:
1. 檔案的命名和加載順序有關
logback.xml早于application.yml加載,logback-spring.xml晚于application.yml加載
如果logback配置需要使用application.yml中的屬性,需要命名為logback-spring.xml
2. logback使用application.yml中的屬性
使用springProperty才可使用application.yml中的值 可以設定預設值
-->
<configuration scan="true" scanPeriod="60 seconds">
<!-- log base path -->
<springProperty scope="context" name="logPath" source="log.path" defaultValue="logs"/>
<!-- log name -->
<property name="LOG_HOME" value="${logPath}"/>
<!-- back log base path -->
<property name="LOG_BACK_HOME" value="${logPath}/backup"/>
<property name="SRVNAME" value="clsapi-console"/>
<!-- 檔案切割大小 -->
<property name="maxFileSize" value="100MB" />
<!-- 文檔保留天數 -->
<property name="maxHistory" value="60" />
<!-- 文檔保留總大小 -->
<property name="totalSizeCap" value="10GB" />
<!-- 系統服務日志 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${SRVNAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${LOG_BACK_HOME}/%d{yyyy-MM-dd}/${SRVNAME}.%d{HH}.%i.log.gz</fileNamePattern>
<!-- 單個日志檔案最多 100MB, 60天的日志周期,最大不能超過10GB -->
<maxFileSize>${maxFileSize}</maxFileSize>
<maxHistory>${maxHistory}</maxHistory>
<totalSizeCap>${totalSizeCap}</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyyMMdd HH:mm:ss.SSS} %X{LOG_ID} [%thread] %-5level %logger{100}.%method\(\):%L - %msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- On Windows machines setting withJansi to true enables ANSI
color code interpretation by the Jansi library. This requires
org.fusesource.jansi:jansi:1.8 on the class path. Note that
Unix-based operating systems such as Linux and Mac OS X
support ANSI color codes by default.
recognizes "%black", "%red", "%green","%yellow","%blue",
"%magenta","%cyan", "%white", "%gray", "%boldRed","%boldGreen",
"%boldYellow", "%boldBlue", "%boldMagenta""%boldCyan",
"%boldWhite" and "%highlight"
-->
<!--withJansi>true</withJansi-->
<encoder>
<!--%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n-->
<pattern>%boldCyan(%d{yyyy-MM-dd HH:mm:ss.SSS}) - %boldRed(%5p) %blue([%10.10t]) %magenta(%-35.35logger{20}) %yellow(%2M) %green(%2L) : %msg%n</pattern>
<!--<pattern>%d{yyyyMMddHHmmss} [%thread] [%c %2M %2L] %-3p - %m%n</pattern>-->
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
<logger name="com.easonjim.clsapi.aspect.LogsAspect" level="debug">
<appender-ref ref="api_call_file"/>
</logger>
<logger name="org.springframework.web.servlet" level="info"/>
</configuration>
4、如果你非要用yaml檔案,那麼隻能使用絕對路徑,例如:
logback-spring.xml引入檔案:
<property file="${HOME}/configuration/application.yaml"/>
application.yaml:
LOG_FILE : C:/logs
logback-spring.xml使用:
<appender name="MY_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_FILE}</file>
...
</appender>
logback-spring.xml增加掃描時間:
<configuration scan="true" scanPeriod="10 seconds">
參考:
https://stackoverflow.com/questions/42648195/how-to-set-logback-xml-properties-in-application-yaml
https://my.oschina.net/skyzwg/blog/915527