大多数开发人员都希望使用不同的 log4j2 配置文件来运行 junit 测试,以配置不同的日志输出位置或格式参数等等。 下面介绍推荐的配置 不同的Log4j2 的方法,这些方法可以特定于 junit 测试用例,并且与生产环境不同。有两种方法:
1. Place log4j2-test.xml in test folder
2. Use log4j.configurationFile property in @BeforeClass
一、将log4j2-test.xml放入测试文件夹。
将log4j2-test.xml文件放置在src/test/resources文件夹中。 通过将log4j2-test.xml放入此目录,将导致使用它代替可能存在的log4j2.xml或log4j2.json。
此时,log4j2.xml中配置
<!-- 需要配置日志目录. rootDir Returns the result of calling getRealPath with a value of "/". -->
<Property name="baseDir">${web:rootDir}/logs</Property>
log4j2-test.xml中配置
<!-- 需要配置测试日志目录 -->
<Property name="baseDir">D:/coding/logs</Property>
这样生产环境和测试环境日志输出互不干扰。
二、用于 JUnit 的 Log4j2 配置,在@BeforeClass中使用log4j.configurationFile属性
为 junit 测试引入不同日志文件的另一种方法是 – 在任何测试类的@BeforeClass注解中设置log4j.configurationFile属性。
例如。 创建测试特定的日志记录配置文件log4j2-testConfig.xml,并将其放置在resources文件夹中。 现在,让我们在 JUnit 测试中使用该文件。
import java.net.MalformedURLException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
public class HelloWorldTest
{
private static Logger LOGGER = null;
@BeforeClass
public static void setLogger() throws MalformedURLException
{
System.setProperty("log4j.configurationFile","log4j2-testConfig.xml");
LOGGER = LogManager.getLogger();
}
@Test
public void testOne()
{
LOGGER.debug("Debug Message Logged !!!");
LOGGER.info("Info Message Logged !!!");
LOGGER.error("Error Message Logged !!!", new NullPointerException("NullError"));
}
}