如何在SqlDelight v2.0.1中禁用SLF4J日志提示?
解决SqlDelight CLI中SLF4J警告的方法
方法一:添加正确的SLF4J NOP依赖(确保生效)
你之前添加的依赖可能未匹配SqlDelight的类路径,或版本不兼容。在Gradle中添加SLF4J的NOP实现,确保它被包含在CLI运行类路径内:
Groovy DSL
dependencies { runtimeOnly 'org.slf4j:slf4j-nop:2.0.7' // 版本适配SLF4J 2.x,匹配SqlDelight 2.0.1的依赖版本 }
Kotlin DSL
dependencies { runtimeOnly("org.slf4j:slf4j-nop:2.0.7") }
注意:若项目中有其他SLF4J绑定(如logback),需排除冲突,保证nop实现是唯一的SLF4J绑定。
方法二:通过JVM参数强制抑制输出
如果添加依赖仍无效,可在启动CLI时添加JVM系统属性,直接强制SLF4J使用NOP logger并关闭警告:
java -Dslf4j.nop=true -Dorg.slf4j.simpleLogger.defaultLogLevel=off -jar your-cli-app.jar
也可在Gradle的运行配置中内置这些参数:
Groovy DSL
tasks.withType(JavaExec) { jvmArgs = [ "-Dslf4j.nop=true", "-Dorg.slf4j.simpleLogger.defaultLogLevel=off" ] }
Kotlin DSL
tasks.withType<JavaExec> { jvmArgs = listOf( "-Dslf4j.nop=true", "-Dorg.slf4j.simpleLogger.defaultLogLevel=off" ) }
方法三:排除SqlDelight依赖中的SLF4J API(慎用)
如果CLI完全不需要日志功能,可尝试从SqlDelight依赖中排除SLF4J API,避免触发警告:
Groovy DSL
dependencies { implementation("app.cash.sqldelight:sqlite-driver:2.0.1") { exclude group: 'org.slf4j', module: 'slf4j-api' } }
Kotlin DSL
dependencies { implementation("app.cash.sqldelight:sqlite-driver:2.0.1") { exclude(group = "org.slf4j", module = "slf4j-api") } }
注意:此方法可能导致SqlDelight内部日志相关代码抛出异常,优先尝试前两种方法。
内容的提问来源于stack exchange,提问作者Essay97
相关产品推荐
相关产品推荐

