感谢您的时间,
任务:我正在使用cucumberJVM / Maven Surefire(forkCount)运行大量并行测试,在我的GRID设置上同时进行大约15次以上的测试。我是否可以为每个Junit @Test(使用测试方法作为日志名称)和每个cucumberJVM场景创建一个单独的日志文件来自己拥有日志?
我不确定这是否可行,但它是我想要实现的东西,到目前为止我已经将基本日志记录写入一个.log文件,我在log4j2上做了很多阅读那一刻,但到目前为止网站势不可挡。
我当前的log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="file" fileName="app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m %ex%n</Pattern>
</PatternLayout>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="file" level="DEBUG"/>
<AppenderRef ref="STDOUT" level="INFO"/>
</Root>
</Loggers>
</Configuration>
我还在调查不同类型的appender,有什么我应该考虑特别用于此任务吗?我有一个简单的LoggerFactory,我用它写入Log
package supportFactory;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class LoggingFactory {
public static Logger Log = LogManager.getLogger();
public void debug(String message) {
Log.debug("DEBUG: " + message);
}
public void info(String message) {
Log.debug("INFO: " + message);
}
public void warn(String message) {
Log.debug("WARNING: " + message);
}
public void error(String message) {
Log.debug("ERROR: " + message);
}
public void fatal(String message) {
Log.debug("FATAL: " + message);
}
}
我能够在@Before(hook)中使用以下内容获取运行场景:
TestRunner.scenario = scenario;
System.out.println("Scenario: " + scenario.getId());
这将返回功能和方案名称,只需这样,最终的.log将是每次测试运行的辉煌
这里非常感谢任何指导。