Corda流测试中如何设置日志级别?含调试vault SQL查询需求
我来帮你搞定Corda流测试里的日志级别配置,尤其是要查看vaultService.queryBy生成的SQL查询,分两种场景给你讲清楚:
一、全局调整流测试的日志级别
最常用的方式是通过logback配置文件统一管理测试环境的日志,步骤如下:
- 在项目
src/test/resources目录下创建(如果没有的话)logback-test.xml文件(这个文件会优先于生产环境的logback.xml加载,不会影响正式代码) - 在配置文件里设置根日志级别,或者针对Corda相关包单独调整:
<configuration> <!-- 根日志级别,默认设为INFO避免日志过载 --> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> <!-- 针对Corda流相关包单独开启DEBUG级别 --> <logger name="net.corda.core.flows" level="DEBUG" /> </configuration>
二、专门开启Vault SQL查询的Debug日志(重点需求)
要看到vaultService.queryBy执行时生成的SQL语句,需要同时开启Hibernate的SQL日志和Corda Vault模块的Debug日志——因为Corda底层用Hibernate操作数据库,具体配置如下:
方式1:通过logback-test.xml配置(推荐)
在logback-test.xml里添加以下logger配置,就能直接打印SQL语句和查询细节:
<configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="CONSOLE" /> </root> <!-- 打印Hibernate生成的完整SQL语句 --> <logger name="org.hibernate.SQL" level="DEBUG" /> <!-- 可选:打印SQL语句中的参数值,方便排查参数问题 --> <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /> <!-- 开启Corda Vault服务的Debug日志,能看到查询逻辑的上下文 --> <logger name="net.corda.core.node.services.vault" level="DEBUG" /> </configuration>
方式2:在测试代码中动态设置(临时调试用)
如果只是想在某个测试类里临时开启Debug日志,可以在测试前置方法里通过SLF4J API动态调整:
import org.junit.Before import org.slf4j.LoggerFactory import ch.qos.logback.classic.Level import ch.qos.logback.classic.Logger class YourFlowTest { @Before fun setupDebugLogging() { // 开启Hibernate SQL日志 val hibernateSqlLogger = LoggerFactory.getLogger("org.hibernate.SQL") as Logger hibernateSqlLogger.level = Level.DEBUG // 开启Vault模块日志 val vaultLogger = LoggerFactory.getLogger("net.corda.core.node.services.vault") as Logger vaultLogger.level = Level.DEBUG // 可选:开启SQL参数日志 val sqlParamLogger = LoggerFactory.getLogger("org.hibernate.type.descriptor.sql.BasicBinder") as Logger sqlParamLogger.level = Level.TRACE } // 你的测试方法... }
注意事项
- 如果用Corda的
MockNetwork做流测试,它会自动读取logback-test.xml的配置,不需要额外设置 - TRACE级别会打印大量参数细节,调试完成后记得改回INFO/DEBUG,避免日志冗余
内容的提问来源于stack exchange,提问作者Joel
相关产品推荐
相关产品推荐

