Unable to use Spring Property Placeholders in logback.xml
Since Spring Boot 1.3 you have a better way of getting spring properties into your logback-spring.xml configuration:
Now you can just add a "springProperty" element.
<springProperty name="destination" source="my.loggger.extradest"/>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${destination}</file>
...
</file>
</appender>
https://github.com/spring-projects/spring-boot/commit/055ace37f006120b0006956b03c7f358d5f3729f
edit: thanks to Anders
.........
The solutions above work mostly for bootrap.properties
. However, the only way to use properties from remote Spring Config Server in logback config I've currently found, is to apply them programatically:
@Component
public class LoggerConfiguration implements ApplicationListener<EnvironmentChangeEvent> {
@Autowired protected Environment environment;
@Override
public void onApplicationEvent(EnvironmentChangeEvent event) {
// enviroment here has already loaded all properties and you may alter logback config programatically
ch.qos.logback.classic.Logger rootLogger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
}
}
Here is a good example how to customize logback with new appender this way.
As answered above you can access the spring boot properties using the <springProperty>
element...but a thing to keep in mind is that the logback configuration file must be named logback-spring.xml
, it doesn't work if you name the file logback.xml
(I'm using spring-boot 1.3.5.RELEASE
)
${...}
is not "Spring EL" in Spring; they are property placeholders.
I think you are confusing logback "variables" with Spring "Property Placeholders".
They just happen to use the same syntax ${...}
.
logback knows nothing about the Spring property placeholder mechanism and vice-versa. You need to configure your logback variables according to the logback documentation and not in application.properties
/ application.yml
which is strictly a Spring (boot) concept.
EDIT:
After a quick look at the logback docs, adding
<property resource="application.properties" />
to the logback.xml
should work.