Log4j-在日志文件中

时间:2018-10-29 09:49:03

标签: java log4j

我有一个使用log4j作为记录器的Java项目。要求是在日志文件中打印测试用例名称。

一个类中有多个测试,并且该项目也支持并行执行。为每个测试创建一个记录器实例。

我使用system.Setproprty将当前的记录器实例与测试用例名称相关联。以下是我的log4j.properties文件:-

log4j.appender.logFileAppender.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} [%t] ${testCaseName} %5p (%F:%L) - %m%n
log4j.appender.logFileAppender.Append=false
log4j.appender.logFileAppender.file=./log/UITest.log

在创建记录器文件的新实例时,将运行时变量$ {testCaseName}设置如下:-

public Logger log; 
public synchronized Logger initializeLogger(String testName) 
    { 
    log = LoggerFactory.getLogger(testName);      
    System.setProperty("testCaseName", testName);             
    PropertyConfigurator.configure(log4jPropertiesFilePath); 
    return log; 
    } 

上面的骗子实例创建方法在@BeforeMethod中调用。

当前记录器文件正在打印类中最后一个测试的测试名称(在非并行ans并行执行模式下)

请帮助我找出问题所在,因为多个测试用例的测试用例名称未打印在日志文件中。

1 个答案:

答案 0 :(得分:0)

尝试将其添加到您的测试中

  @Rule 
  public TestName testName = new TestName();

  @Before 
  public void printTestName() {
     System.out.println("Running ==> " + testName.getMethodName()); 
  }