我正在尝试使用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
}
控制台显示正在打印的日志语句,但是当我检查logs文件夹时,什么也看不到。
如果有人知道我在做什么错,请帮助我。提前致谢。
答案 0 :(得分:0)
这是给你的。我已经尝试过了,而且有效。
JAVA - Separate log files for threads using log4j2
答案 1 :(得分:0)
事实证明,{J {1}}文件在IntelliJ中未被识别。当我尝试将文件类型更改为"*.log"
时,日志文件正在文件夹中显示。
该配置按预期工作。