I assume this is a Spring Boot app?   The spring-cloud-config-client includes a 
file named log4j2.system.properties. The values in that file are set as system 
properties by Log4j 2, so Log4j2CloudConfigLoggingSystem will be used as the 
LoggingSystem by Spring. Its initialize method sets the Spring Environment into 
the context, so if that isn’t happening then one of those things isn’t 
happening properly.


Ralph

> On Dec 31, 2019, at 12:39 AM, buks...@gmail.com wrote:
> 
> Hi, 
> 
> 
> 
> I've been trying to get the Spring environment available in log4j2 for a
> couple of weeks now.
> 
> Mostly using custom lookups and using the reload mechanism. I haven't fully
> got it to work when log4j2 ver 2.13.0 got released so I switched over to try
> make that work for me.
> 
> What happens is that the SpringEnvironmentHolder never gets initiated with
> the Spring Environment.
> 
> The condition: [
> 
> if (environment == null && LogManager.getFactory() != null &&
> LogManager.getFactory().hasContext(SpringEnvironmentHolder.class.getName(),
> null, false)) {
> 
> ]
> 
> Is never true, even though the Spring property sources are mostly available:
> [
> 
> Object obj =
> LogManager.getContext(false).getObject(Log4j2CloudConfigLoggingSystem.ENVIRO
> NMENT_KEY);
> 
> ]
> 
> 
> 
> Any ideas what I am doing wrong here?
> 
> My log4j2.properties file looks like this:
> 
> status=warn
> name=Log4j2PropertiesConfig
> packages=za.co.spsi.ice.config
> 
> property.log_dateformat_pattern=-yyyy-MM-dd HH:mm:ss.SSS
> property.log_level_pattern=-%5p
> property.pattern=%d{${log_dateformat_pattern:-yyyy-MM-dd HH:mm:ss.SSS}}
> %highlight{${log_level_pattern:-%5p}}{FATAL=red blink, ERROR=red,
> WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue}
> %style{${sys:PID}}{magenta} [%15.15t] %style{%-40.40C{1.}}{cyan} :
> %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
> property.filename=./poe-buks.log
> 
> appender.null.type=Null
> appender.null.name=LogNull
> 
> appender.console.type=Console
> appender.console.name=LogToConsole
> appender.console.layout.type=PatternLayout
> appender.console.layout.pattern=${pattern}
> 
> appender.kafka.type=kafka
> appender.kafka.name=LogToKafka
> appender.kafka.topic=${spring:kafka.log.topic}
> appender.kafka.properties1.type=Property
> appender.kafka.properties1.name=bootstrap.servers
> appender.kafka.properties1.value=${spring:spring.kafka.bootstrap-servers}
> appender.kafka.syncSend=${spring:kafka.log.async}
> appender.kafka.layout.type=PatternLayout
> appender.kafka.layout.pattern=%d{${log_dateformat_pattern:-yyyy-MM-dd
> HH:mm:ss.SSS}} %highlight{${log_level_pattern:-%5p}}{FATAL=red blink,
> ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue}
> %style{${sys:PID}}{magenta} [%15.15t] %style{%-40.40C{1.}}{cyan} :
> %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
> 
> # Rotate log file
> appender.rolling.type=RollingFile
> appender.rolling.name=LogToRollingFile
> appender.rolling.fileName=${filename}
> appender.rolling.filePattern=${filename}.%d{yyyy-MM-dd}.%i.gz
> appender.rolling.layout.type=PatternLayout
> appender.rolling.layout.pattern=${pattern}
> appender.rolling.policies.type=Policies
> appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
> appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
> appender.rolling.policies.size.size=10MB
> appender.rolling.strategy.type=DefaultRolloverStrategy
> appender.rolling.strategy.max=10
> 
> appender.routing.type=Routing
> appender.routing.name=LogToRoutingAppender
> appender.routing.routes.type=Routes
> appender.routing.routes.pattern=${sys:kafka.log.enabled}
> appender.routing.routes.route1.type=Route
> appender.routing.routes.route1.key=false
> appender.routing.routes.route1.ref=LogNull
> appender.routing.routes.route2.type=Route
> appender.routing.routes.route2.key=true
> appender.routing.routes.route2.ref=LogToKafka
> 
> logger.kafka.name=org.apache.kafka
> logger.kafka.level=error
> logger.kafka.additivity=false
> logger.kafka.appenderRef.rolling.ref=LogToRollingFile
> logger.kafka.appenderRef.routing.ref=LogToRoutingAppender
> 
> logger.spring-kafka.name=org.springframework.kafka
> logger.spring-kafka.level=error
> logger.spring-kafka.additivity=false
> logger.spring-kafka.appenderRef.rolling.ref=LogToRollingFile
> logger.spring-kafka.appenderRef.routing.ref=LogToRoutingAppender
> 
> logger.hibernate.name=org.hibernate
> logger.hibernate.level=warn
> logger.hibernate.additivity=false
> logger.hibernate.appenderRef.rolling.ref=LogToRollingFile
> logger.hibernate.appenderRef.routing.ref=LogToRoutingAppender
> 
> logger.apache.name=org.apache
> logger.apache.level=warn
> logger.apache.additivity=false
> logger.apache.appenderRef.rolling.ref=LogToRollingFile
> logger.apache.appenderRef.routing.ref=LogToRoutingAppender
> 
> #Root logger will log to
> rootLogger.level=info
> rootLogger.appenderRef.stdout.ref=LogToRollingFile
> rootLogger.appenderRef.routing.ref=LogToRoutingAppender
> 
> 
> 
> 
> 
> Kind regards,
> 
> Buks
> 
> 
> 
> 
> 

Reply via email to