为 SpringBoot 应用程序中的包捕获 @Sl4j 的输出

问题描述 投票:0回答:0

我有一个类正在使用 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 中记录这些行。 即使我已经搜索了几个小时,我仍然找不到这样做的方法。

java spring-boot log4j slf4j
© www.soinside.com 2019 - 2024. All rights reserved.