问题描述
我需要为每个运行的测试创建一个日志文件。我四处寻找并想出了这个,但我仍然得到这个文件:logFileName_IS_UNDEFINED.log,其中存储了所有日志,但我也创建了新的日志文件,但它们是空的。
我做错了什么?
登录配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-30(%d{HH:mm:ss.SSS} | %-5level | ) %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${logFileName}.log</file>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
</root>
</configuration>
黄瓜监听器:
@Slf4j
public class CustomTestListener implements ConcurrentEventListener {
File logFile;
//other code
private void handleCaseStarted(TestCaseStarted t) {
createLogFile(t.getTestCase().getName());
log.info("[TEST STARTED] " + t.getTestCase().getName());
}
private void createLogFile(String testCase){
MDC.put("logFileName","head1");
Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
FileAppender fileAppender = new FileAppender();
logFile = new File(String.format("%s.log",testCase));
LoggerContext loggerContext = rootLogger.getLoggerContext();
loggerContext.putProperty("logFileName",testCase);
fileAppender.setName(testCase);
fileAppender.setFile(logFile.getAbsolutePath());
fileAppender.setContext(loggerContext);
fileAppender.setPrudent(true);
fileAppender.start();
rootLogger.addAppender(fileAppender);
}
}
在 lombok 配置中设置
lombok.log.fieldIsStatic=false
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)