You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Corda流测试中如何设置日志级别?含调试vault SQL查询需求

我来帮你搞定Corda流测试里的日志级别配置,尤其是要查看vaultService.queryBy生成的SQL查询,分两种场景给你讲清楚:

一、全局调整流测试的日志级别

最常用的方式是通过logback配置文件统一管理测试环境的日志,步骤如下:

  1. 在项目src/test/resources目录下创建(如果没有的话)logback-test.xml文件(这个文件会优先于生产环境的logback.xml加载,不会影响正式代码)
  2. 在配置文件里设置根日志级别,或者针对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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:17:41