Я пытаюсь использовать log4j2 для записи операторов журнала как в консоль, так и в файлы журнала. Однако когда я проверяю папку журнала, ничего не создается.
Идея состоит в том, чтобы использовать RoutingAppender, чтобы все тестовые классы каждого пакета находились в одной папке.
Вот файл log4j2. xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="LOG_PATTERN">%d{HH:mm:ss.SSS} [%t] %-5level [%5X{tId}] %logger{36} - %msg%n</Property>
</Properties>
<Appenders>
<Routing name="MyRoutingAppender">
<Routes pattern="$${ctx:threadName}">
<Route>
<RollingFile
fileName="logs/${ctx:testGroupName}/${ctx:threadName}.log"
name="appender-${ctx:threadName}"
filePattern="logs/${date:yyyy-MM}/${ctx:threadName}-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
</Route>
</Routes>
</Routing>
<Console name="LogToConsole" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
</Appenders>
<Loggers>
<Logger name="TestCases" level="info" additivity="false">
<AppenderRef ref="LogToConsole"/>
<AppenderRef ref="MyRoutingAppender"/>
</Logger>
<Logger name="PageObjects" level="info" additivity="false">
<AppenderRef ref="LogToConsole"/>
<AppenderRef ref="MyRoutingAppender"/>
</Logger>
<Root level="info">
<AppenderRef ref="LogToConsole"/>
</Root>
</Loggers>
</Configuration>
Вот что у меня есть в моем java классе:
package TestCases.Groups;
public class AddDeleteGroup extends TestInit {
private final Logger logger = LogManager.getLogger(AddDeleteGroup.class.getName());
@BeforeClass
public void beforeClass() {
String threadId = String.valueOf(Thread.currentThread().getId());
ThreadContext.put("tId", threadId);
ThreadContext.put("testGroupName", "TestCases.Groups");
ThreadContext.put("threadName", AddDeleteGroup.class.getName());
}
@Test(groups = "test")
public void setUp(){
logger.info("SetUp method for {}", AddDeleteGroup.class.getName());
// do stuffs
}
@Test(dependsOnMethods={"SetUp"})
public void testRunner(){
logger.info("TestRunner method for {}", AddDeleteGroup.class.getName());
// do stuffs
}
Консоль показывает распечатанные операторы журнала, но когда я проверяю папку журналов, я ничего не вижу.
Если кто-нибудь знает, что я делаю не так, пожалуйста, помогите мне. Заранее спасибо.