我的每个测试班都有一个记录器。我要为每个测试类生成单独的日志文件。有没有一种方法可以将文件名传递给我的BeforeClass方法中的log4j2.properties?我在下面尝试,但无法正常工作:
这是我的log4j2.properties文件:
name=PropertiesConfig
property.myLogs
property.filename = logs
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=${filename}/${myLogs}.log #I AM TRYING TO PASS DYNAMIC value in 'myLogs' variable.
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
rootLogger.level = trace
rootLogger.appenderRefs = stdout
rootLogger.appenderRefs = LOGFILE
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.stdout.ref = LOGFILE
尝试在我的BeforeMethod中设置“ property.myLogs”,但未将日志文件生成为“ logs.log”:
Properties config = new Properties();
FileInputStream propertiesFile = new FileInputStream("D:\\Automation\\src\\main\\resources\\log4j2.properties");
config.load(propertiesFile);
System.setProperty("property.myLogs", "logs");
答案 0 :(得分:0)
尝试
appender.file.fileName=${sys:logDir}/${sys:logFile}.log
然后在您的beforeClass方法中执行:
System.setProperty("logDir", "logs");
System.setProperty("logFile", "log");
答案 1 :(得分:0)
以编程方式在@BeforeClass中配置记录器-设置新的附加程序。在@AterClass中关闭文件