logback 實(shí)現(xiàn)給變量指定默認(rèn)值
logback 實(shí)現(xiàn)給變量指定默認(rèn)值
格式是 ${變量名:-默認(rèn)值}
**光有冒號(hào)還不夠,再加條短線后面才是默認(rèn)值**
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/logs${log.folder:-/imeth}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>/logs${log.folder:-/imeth}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days worth of history -->
<maxHistory>30</maxHistory>
<maxFileSize>${log.file.size.max:-50}MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%-5level] %logger{35} - %msg%n
</pattern>
</encoder>
</appender>
logback變量
定義變量
- 在 logback.xml 中定義
- 在命令行定義
- 引入properties文件
在 logback.xml 中定義變量
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="logBase" value="/logs"/>
...
</configuration>
在命令行定義變量
在命令行通過(guò)大D參數(shù)來(lái)定義
java -DHOME="/home/logstore" xxx.jar
引入properties文件
在properties文件定義變量。logback引入properties文件后,獲得變量。
通過(guò)文件路徑引入properties文件:
<configuration> <property file="/AppPath/logbackVars.properties" /> ... </configuration>
通過(guò)classpath引入properties文件:
<configuration> <property resource="logbackVars.properties" /> ... </configuration>
properties文件的格式是 key-value 型:
HOME=/logs
變量的作用域
變量有三個(gè)作用域:
local作用域在配置文件內(nèi)有效context作用域的有效范圍延伸至 logger contextsystem作用域的范圍最廣,整個(gè) JVM 內(nèi)都有效logback在替換變量時(shí),首先搜索 local 變量,然后搜索 context,然后搜索 system。
如何為變量指定 scope ?
<configuration>
<property scope="context" name="home" value="/logs" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/${home}/myApp.log</file>
...
</appender>
...
</configuration>
變量的默認(rèn)值
在引用一個(gè)變量時(shí),如果該變量未定義,需要為其指定默認(rèn)值,寫(xiě)法是:
${變量名:-默認(rèn)值}
示例:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="logBase" value="${HOME:-/logs}"/>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${logBase}/log.%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>60</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yy/MM/dd HH:mm:ss.SSS} %-5level %line %logger{15} - %msg %n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
...
</configuration>
變量使用
使用方式:
${變量名}
示例:參見(jiàn)前面示例中用法。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的三種方式小結(jié)
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的三種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
springboot項(xiàng)目配置swagger2示例詳解
Swagger是一款RESTful接口的文檔在線自動(dòng)生成、功能測(cè)試功能框架。本文重點(diǎn)給大家介紹springboot項(xiàng)目配置swagger2示例代碼詳解,需要的朋友參考下吧2021-09-09
SpringBoot實(shí)現(xiàn)文件下載的四種方式
本文主要介紹了SpringBoot實(shí)現(xiàn)文件下載的四種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
Java編程實(shí)現(xiàn)時(shí)間和時(shí)間戳相互轉(zhuǎn)換實(shí)例
這篇文章主要介紹了什么是時(shí)間戳,以及Java編程實(shí)現(xiàn)時(shí)間和時(shí)間戳相互轉(zhuǎn)換實(shí)例,具有一定的參考價(jià)值,需要的朋友可以了解下。2017-09-09
Hibernate Validation自定義注解校驗(yàn)的實(shí)現(xiàn)
這篇文章主要介紹了Hibernate Validation自定義注解校驗(yàn)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
教你一步到位部署運(yùn)行MyBatis3源碼(保姆級(jí))
一個(gè)框架的運(yùn)行流程從最簡(jiǎn)單的一個(gè)helloworld來(lái)看其源碼就能了解到框架的原理是什么,這篇文章主要給大家介紹了關(guān)于如何一步到位部署運(yùn)行MyBatis3源碼的相關(guān)資料,需要的朋友可以參考下2022-06-06
基于ThreadPoolTaskExecutor的使用說(shuō)明
這篇文章主要介紹了基于ThreadPoolTaskExecutor的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

