You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Calixte Bonsart (Jira)" <ji...@apache.org> on 2022/07/26 00:50:00 UTC

[jira] [Created] (LOG4J2-3562) Lookups are not substituted when pattern is created programmatically

Calixte Bonsart created LOG4J2-3562:
---------------------------------------

             Summary: Lookups are not substituted when pattern is created programmatically
                 Key: LOG4J2-3562
                 URL: https://issues.apache.org/jira/browse/LOG4J2-3562
             Project: Log4j 2
          Issue Type: Bug
    Affects Versions: 2.17.2, 2.18.0
            Reporter: Calixte Bonsart


Starting in version 2.17.2, when programmatically creating an appender with a pattern that contains a lookup, that lookup is not substituted anymore. The lookup works when it is defined in the XML configuration file. The same code works in version 2.17.1 and below.
{code:java}
% java -cp log4j-api-2.17.1.jar:log4j-core-2.17.1.jar -Dlog4j2.configurationFile=log4j2.xml Main.java
Java version 17.0.3 - Hello World
Java version 17.0.3 - Hello World
% java -cp log4j-api-2.17.2.jar:log4j-core-2.17.2.jar -Dlog4j2.configurationFile=log4j2.xml Main.java
Java version 17.0.3 - Hello World
${java:version} - Hello World
% java -cp log4j-api-2.18.0.jar:log4j-core-2.18.0.jar -Dlog4j2.configurationFile=log4j2.xml Main.java
Java version 17.0.3 - Hello World
${java:version} - Hello World
{code}
{code:java}
public class Main{
	public static void main(String[] args){
		var logger = LogManager.getLogger("Main");
		logger.info("Hello World");
		var ctx = (LoggerContext)LogManager.getContext(false);
		var config = ctx.getConfiguration();
		var layout = PatternLayout.newBuilder()
				.withPattern("${java:version} - %msg%n")
				.build();
		var appender = ConsoleAppender.newBuilder()
				.setLayout(layout)
				.setTarget(Target.SYSTEM_OUT)
				.setName("Console")
				.build();
		config.addAppender(appender);
		appender.start();
		var loggerConfig = new LoggerConfig("Main", Level.INFO, false);
		loggerConfig.addAppender(appender, null, null);
		config.addLogger("Main", loggerConfig);
		ctx.updateLoggers();
		logger.info("Hello World");
	}
}
{code}
{code:xml}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${java:version} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>
{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)