我有一个类正在使用 Flyway 为应用程序应用迁移
import lombok.extern.slf4j.Slf4j;
import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationInfo;
import org.flywaydb.core.api.MigrationInfoService;
import org.flywaydb.core.api.MigrationVersion;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.output.MigrateResult;
import org.flywaydb.core.internal.info.MigrationInfoDumper;
import java.util.Properties;
@Slf4j
public class FlywayService {
Flyway flyway;
public FlywayService(Properties props, String dbServer, String schema, String user, String password) {
FluentConfiguration flywayConfig = Flyway.configure();
flywayConfig.configuration(props);
flywayConfig.dataSource("jdbc:oracle:thin:@" + dbServer, user, password);
flywayConfig.schemas(schema.toUpperCase());
flyway = flywayConfig.load();
}
public void runInfo() {
MigrationInfoService info = flyway.info();
MigrationInfo current = info.current();
MigrationVersion currentSchemaVersion = current == null ? MigrationVersion.EMPTY : current.getVersion();
MigrationVersion schemaVersionToOutput = currentSchemaVersion == null ? MigrationVersion.EMPTY : currentSchemaVersion;
StringBuffer buffer = new StringBuffer();
buffer.append("Schema version: ")
.append(schemaVersionToOutput).append("\n")
.append(MigrationInfoDumper.dumpToAsciiTable(info.all()));
log.info(buffer.toString());
}
}
日志记录是通过 lombok(版本 1.18.22)@Sl4j 进行的。我需要的是将 Flyway 的输出捕获到 String 以进行进一步处理,同时让 Flyway 在 spring.log 中记录这些行。 即使我已经搜索了几个小时,我仍然找不到这样做的方法。