[
https://issues.apache.org/jira/browse/LOG4J2-2134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David del Amo Mateos updated LOG4J2-2134:
-----------------------------------------
Description:
Hi, I have a need to change the configuration of log4j2 programatically after
automatic configuration following the instructions at
https://logging.apache.org/log4j/2.x/manual/customconfig.html.
To fullfill my requirements I need to stop the context and restart it with my
proper config, when I do this and try to write a log the
AwaitCompletionReliabilityStrategy enters in a bucle and throws a Stackoverflow
exception.
I've developed a Unit test that recreates the problem.
Edit: attached test files.
was:
Hi, I have a need to change the configuration of log4j2 programatically after
automatic configuration following the instructions at
https://logging.apache.org/log4j/2.x/manual/customconfig.html.
To fullfill my requirements I need to stop the context and restart it with my
proper config, when I do this and try to write a log the
AwaitCompletionReliabilityStrategy enters in a bucle and throws a Stackoverflow
exception.
I've developed a Unit test that recreates the problem:
{quote}{{
@Test
public void testRefresh() {
Logger log = LogManager.getLogger(this.getClass());
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
PatternLayout layout =
PatternLayout.createLayout(PatternLayout.SIMPLE_CONVERSION_PATTERN, null,
config, null,
null,false, false, null, null);
Appender appender = FileAppender.createAppender("target/test.log",
"false", "false", "File", "true",
"false", "false", "4000", layout, null, "false", null, config);
appender.start();
config.addAppender(appender);
AppenderRef ref = AppenderRef.createAppenderRef("File", null, null);
AppenderRef[] refs = new AppenderRef[] {ref};
LoggerConfig loggerConfig = LoggerConfig.createLogger("false",
Level.INFO, "testlog4j2refresh",
"true", refs, null, config, null );
loggerConfig.addAppender(appender, null, null);
config.addLogger("testlog4j2refresh", loggerConfig);
ctx.stop();
ctx.start(config);
log.error("Info message");
}
}}{quote}
I don't know if I can submit files to this system, but have the test and a
little patch that prevents this problem checking in
AwaitCompletionReliabilityStrategy:94 if next and result is equals and
returning result in this case.
> Stackoverflow at AwaitCompletionReliabilityStrategy
> ---------------------------------------------------
>
> Key: LOG4J2-2134
> URL: https://issues.apache.org/jira/browse/LOG4J2-2134
> Project: Log4j 2
> Issue Type: Bug
> Components: Core
> Affects Versions: 2.8.2, 2.9.1
> Environment: not important
> Reporter: David del Amo Mateos
> Priority: Blocker
> Attachments: Log4j2RefreshTest.java, log4j2.yml
>
>
> Hi, I have a need to change the configuration of log4j2 programatically after
> automatic configuration following the instructions at
> https://logging.apache.org/log4j/2.x/manual/customconfig.html.
> To fullfill my requirements I need to stop the context and restart it with my
> proper config, when I do this and try to write a log the
> AwaitCompletionReliabilityStrategy enters in a bucle and throws a
> Stackoverflow exception.
> I've developed a Unit test that recreates the problem.
> Edit: attached test files.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)