我是Logback的新手,我正在尝试使用属性文件为Windows和Linux动态添加文件路径.
这是我的代码sinppet,我怎样才能得到$ {MY_HOME}的值
<appender name="SERVER_FILE" class="ch.qos.logback.core.FileAppender">
<file>${MY_HOME}/server.log</file>
<append>true</append>
<encoder>
<pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
通常这是一个系统属性,有一些答案触及这个但只提供答案的一部分.这些是:
但配置手册显示该机制非常灵活
与许多脚本语言一样,logback配置文件支持变量的定义和替换.变量可以在配置文件本身,外部文件,外部资源中定义,甚至可以在运行中计算和定义.
总之,您有许多选项可用于定义MY_HOME的值:
在文件中
您可以使用以下命令在文件本身中定义值:
<property name="MY_HOME" value="/home/myhome"/>
Run Code Online (Sandbox Code Playgroud)
在系统属性中
您可以安排将其设置为系统属性,最有可能是在启动JVM时.
java -DMY_HOME="/home/myhome" ...
Run Code Online (Sandbox Code Playgroud)
来自系统上的属性文件
您可以安排logback来读取属性文件:
<property file="/opt/example/instance_1/properties/system.properties" />
Run Code Online (Sandbox Code Playgroud)
从类路径
您可以使用类路径将属性文件写入资源目录或jar中,并将其作为资源读取.
<property resource="prod.properties" />
Run Code Online (Sandbox Code Playgroud)
使用属性定义器
您可以使用属性定义器来安排调用您的代码.例如:
<define name="MY_HOME" class="biz.nowhere.HomePropertyDefiner">
<application>app</application>
</define>
Run Code Online (Sandbox Code Playgroud)
那个类就像(例如):
public class HomePropertyDefiner extends PropertyDefinerBase {
private String application;
@Override
public String getPropertyValue() {
return String.format("/opt/%s/%s", application, MyInstanceManager.instancePath());
}
public void setApplication(String application) {
this.application = application;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5721 次 |
| 最近记录: |