gpt4 book ai didi

java - Log4j2 - 无法将日志写入文件

转载 作者:行者123 更新时间:2023-12-01 17:46:29 26 4
gpt4 key购买 nike

我正在尝试使用 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
}

控制台显示正在打印的日志语句,但是当我检查日志文件夹时,我没有看到任何内容。

如果有人知道我做错了什么,请帮助我。提前致谢。

最佳答案

这是给你的。我试过了,有效。
JAVA - Separate log files for threads using log4j2

关于java - Log4j2 - 无法将日志写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60859187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com