在变量替换期间,logback是否读取环境变量?我在应用启动期间在控制台上获得了REM_HOME_IS_UNDEFINED。但是变量存在。手册说env变量最后在食物链中查找。 http://logback.qos.ch/manual/configuration.html#variableSubstitution
这就是我正在做的事情:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${REM_HOME}/reac/logs/reac.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${REM_HOME}/reac/logs/archives/reac-%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %logger{36} %-5level - %msg%n</pattern>
</encoder>
</appender>
答案 0 :(得分:2)
这是我结束的事情:
我正在读取env变量并调用System.setProperty将值设置为系统变量并重置loggercontext。
System.setProperty(REM_HOME, remHome);
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
try {
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(context);
// Call context.reset() to clear any previous configuration, e.g. default
// configuration. For multi-step configuration, omit calling context.reset()
context.reset();
configurator.doConfigure(getClass().getClassLoader().getResourceAsStream(LOG_CONF_FILE));
}
catch (JoranException je) {
// StatusPrinter will handle this
je.printStackTrace();
}
StatusPrinter.printInCaseOfErrorsOrWarnings(context);