Log4j2 - 我是否可以为每个cucumberJVM测试创建一个单独的日志文件,其中日志文件名是方案的名称?

时间:2017-09-05 21:56:21

标签: java log4j2 cucumber-jvm

感谢您的时间,

任务:我正在使用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将是每次测试运行的辉煌

这里非常感谢任何指导。

0 个答案:

没有答案