执行gradle generateJooq静默任务时,如何屏蔽Liquibase日志?
解决Liquibase在gradle -q执行generateJooq时的日志输出问题
你配置的jOOQ logging 参数仅控制jOOQ自身的日志输出,Liquibase的日志不受该配置影响,需要单独设置。以下几种方法可以实现静默模式下抑制Liquibase日志:
方法1:在jOOQ配置中添加Liquibase日志级别属性
直接在LiquibaseDatabase的属性列表中指定Liquibase的日志级别,修改你的配置如下:
jooqConfiguration.apply { logging = if (gradle.startParameter.logLevel == LogLevel.QUIET) org.jooq.meta.jaxb.Logging.WARN else org.jooq.meta.jaxb.Logging.INFO generator.apply { database.apply { name = "org.jooq.meta.extensions.liquibase.LiquibaseDatabase" properties = listOf( Property() .withKey("scripts") .withValue("/changelog/changelog-master.yaml"), // 新增Liquibase日志级别配置 Property() .withKey("liquibase.logLevel") .withValue(if (gradle.startParameter.logLevel == LogLevel.QUIET) "OFF" else "INFO") ) ... } ... } ... }
Liquibase支持的日志级别包括:OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL,可按需选择。
方法2:通过Gradle任务过滤Liquibase日志
针对generateJooq任务配置日志过滤,直接排除Liquibase相关日志输出:
tasks.generateJooq { logging { if (gradle.startParameter.logLevel == LogLevel.QUIET) { exclude "liquibase" } } }
也可以全局配置静默模式下的日志过滤规则:
logging { quiet { exclude "liquibase" } }
方法3:设置系统属性控制Liquibase日志
在generateJooq任务中添加系统属性,强制Liquibase使用指定日志级别:
tasks.generateJooq { if (gradle.startParameter.logLevel == LogLevel.QUIET) { systemProperty "liquibase.logLevel", "OFF" } }
以上方法均可有效抑制静默模式下的Liquibase日志,推荐优先使用方法1,其配置逻辑与现有jOOQ配置绑定,更贴合代码结构。
内容的提问来源于stack exchange,提问作者Yahor Barkouski
相关产品推荐
相关产品推荐

