<dependency>
<groupId>org.codehaus.janinogroupId>
<artifactId>janinoartifactId>
<version>3.0.6version>
dependency>
if-then语法:
<if condition="some conditional expression">
<then>
...
then>
if>
if-then-else语法:
<if condition="some conditional expression">
<then>
...
then>
<else>
...
else>
if>
只能访问上下文属性或者系统属性。对于作为参数传递的键,
property()或p()方法返回属性的String的值。
property("someKey").contains("someValue")
p("someKey").contains("someValue")
Boolean.valueOf(property("someValue"))
用来检查属性是否定义
isDefined("someKey")
用来检查属性是否为空
isNull("someKey")
在 logback 中,支持以 ${varName} 来引用变量
<configuration>
<property name="USER_HOME" value="/home/sebastien" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${USER_HOME}/myApp.logfile>
java -DUSER_HOME="/home/sebastien" -jar xxx.jar
<configuration>
<property file="src/main/java/chapters/configuration/variables1.properties" />
外部文件也支持 classpath 中的文件
<configuration>
<property resource="resource1.properties" />
外部文件的格式是 key-value 型。
USER_HOME=/home/sebastien
定义的变量是有作用域的,如本地作用域,上下文作用域,系统级作用域。默认是本地作用域。
local 作用域在配置文件内有效,context 作用域的有效范围延伸至 logger context,system 作用域的范围最广,整个 JVM 内都有效。
logback 在替换变量时,首先搜索 local 变量,然后搜索 context,然后搜索 system,最后是OS environment。
为变量指定 scope
<property scope="context" name="nodeId" value="firstNode" />
在引用一个变量时,如果该变量未定义,那么可以为其指定默认值,做法是:
${aName:-golden}
<configuration>
<springProperty scope="context" name="log.console" source="log.console"/>
<property scope="context" resource="application.properties" />
<property name="log.console" value="true"/>
...
<root level="INFO">
<appender-ref ref="file"/>
<if condition='Boolean.valueOf(property("log.console"))'>
<then>
<appender-ref ref="console"/>
then>
if>
root>
在application.yml的配置如下:
log:
console: true
或者指定配置文件时,在 application.properties文件配置
log.console=true
1.通过命令行设置
java -Dlog.console=true -jar xxx.jar
2.通过System.setProperty设置系统变量
System.setProperty("log.console","true");
注意代码设置位置,在
main入口处,否则不起作用
3.设置环境变量
下面这种方式跟你在我的电脑- 高级设置 - 环境变量 设置是一个效果

1.作用对象不同
环境变量(environment variable)指的是操作系统中配置的环境变量;
系统变量(System variables)指的是赋给应用系统的值;
2.获取方式不同
环境变量在java中通过System.getenv()方法获取到;
系统变量在java中通过System.getProperty()方法获取到;