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)