有什么方法可以在log4j.properties中设置动态日志文件名?

时间:2019-01-31 13:56:08

标签: selenium log4j2

我的每个测试班都有一个记录器。我要为每个测试类生成单独的日志文件。有没有一种方法可以将文件名传递给我的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");

2 个答案:

答案 0 :(得分:0)

尝试

appender.file.fileName=${sys:logDir}/${sys:logFile}.log 

然后在您的beforeClass方法中执行:

System.setProperty("logDir", "logs");
System.setProperty("logFile", "log");

答案 1 :(得分:0)

以编程方式在@BeforeClass中配置记录器-设置新的附加程序。在@AterClass中关闭文件