Is it possible to load different log4j configuration based on which spring boot profile I am using.
Let's say I have in application.properties
log.level=DEBUG
log.path=/opt/tomcat/logs/blabla.log
log.appender=CONSOLE
and in application-live.properties I have different values for all 3
log.level=WARN
log.path=/crazy/tomcat/logs/blabla.log
log.appender=FILE
and in log4j.xml I have definition for CONSOLE appender, FILE appender, and multiple loggers
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="${log.path}" />
<param name="maxFileSize" value="8MB"/>
<param name="maxBackupIndex" value="50"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd HH:mm:ss} [${project.artifactId}-${project.version}] %p [SearchID - %X{searchID}] %c{1}.%M(%L) %m%n" />
</layout>
</appender>
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM-dd HH:mm:ss} [${project.artifactId}-${project.version}] %p [SearchID - %X{searchID}] %c{1}.%M(%L) %m%n" />
</layout>
</appender>
<logger name="com.mchange" >
<level value="${log.level}" />
<appender-ref ref="${log.appender}" />
</logger>
<logger name="java.sql" >
<level value="${log.level}" />
<appender-ref ref="${log.appender}" />
</logger>
<logger name="org.springframework">
<level value="${log.level}" />
<appender-ref ref="${log.appender}"/>
</logger>
<root>
<level value="${log.level}"/>
<appender-ref ref="${log.appender}"/>
</root>
So I have to inject all 3 values in different places in log4j.xml This configuration is not working right now, since when I use -Dlog4j.debug to check what is going on I see that all the values for the properties are missing, like they are not loaded from application.properties at the time when log4j configuration is being loaded. Is there a way to accomplish this. I've read all of the spring-boot documentation, as I can see there is no example where I use both application properties and explicit log config like log4j which I need. I also need to add, that I cannot use logback instead of log4j.