blob: 9b2cef32f039724c44f4eb680e638c55a38df6cf [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache license, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the license for the specific language governing permissions and
* limitations under the license.
*/
package org.apache.logging.log4j.core.config;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.Appender;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.appender.FileAppender;
import org.apache.logging.log4j.core.layout.PatternLayout;
import org.apache.logging.log4j.junit.LoggerContextRule;
import org.junit.Rule;
import org.junit.Test;
public class JiraLog4j2_2134Test {
@Rule
public final LoggerContextRule loggerContextRule = new LoggerContextRule("src/test/resources/log4j2-2134.yml");
@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.newBuilder()
// @formatter:off
.setPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN)
.setConfiguration(config)
.build();
// @formatter:on
Appender appender = FileAppender.newBuilder().setFileName("target/test.log").setLayout(layout)
.setConfiguration(config).setBufferSize(4000).setName("File").build();
// 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");
}
@Test
public void testRefreshMinimalCodeStart() {
Logger log = LogManager.getLogger(this.getClass());
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
ctx.start(config);
log.error("Info message");
}
@Test
public void testRefreshMinimalCodeStopStart() {
Logger log = LogManager.getLogger(this.getClass());
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
ctx.stop();
ctx.start();
log.error("Info message");
}
@Test
public void testRefreshMinimalCodeStopStartConfig() {
Logger log = LogManager.getLogger(this.getClass());
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
ctx.stop();
ctx.start(config);
log.error("Info message");
}
@SuppressWarnings("deprecation")
@Test
public void testRefreshDeprecatedApis() {
Logger log = LogManager.getLogger(this.getClass());
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
PatternLayout layout = PatternLayout.newBuilder()
.setPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN)
.setPatternSelector(null)
.setConfiguration(config)
.setRegexReplacement(null)
.setCharset(null)
.setAlwaysWriteExceptions(false)
.setNoConsoleNoAnsi(false)
.setHeader(null)
.setFooter(null)
.build();
// @formatter:off
Appender appender = FileAppender.newBuilder()
.setFileName("target/test.log")
.setAppend(false)
.setLocking(false)
.setName("File")
.setImmediateFlush(true)
.setIgnoreExceptions(false)
.setBufferedIo(false)
.setBufferSize(4000)
.setLayout(layout)
.setAdvertise(false)
.setConfiguration(config)
.build();
// @formatter:on
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");
}
}