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

Hyperledger Composer控制台语句编写及Node.js调用交易日志打印咨询

Hey there! Let's tackle your two Hyperledger Composer questions step by step:

1. 如何在Hyperledger Composer中编写控制台输出语句

在Hyperledger Composer的交易处理器脚本(即你的交易逻辑.js文件)里,直接用标准JavaScript控制台输出方法即可,和常规Node.js代码完全一致:

  • 用console.log()打印常规运行信息
  • 用console.error()打印错误异常信息
  • 用console.debug()打印调试级别的细节内容

给你举个实际的交易代码示例:

/**
 * 资产转移交易处理器
 * @param {org.example.network.TransferAsset} tx 交易实例
 * @transaction
 */
async function transferAsset(tx) {
    // 打印交易核心信息
    console.log(`启动资产转移:资产ID ${tx.asset.assetId},原所有者 ${tx.owner.email},新所有者 ${tx.newOwner.email}`);
    
    // 执行资产转移核心逻辑
    tx.asset.owner = tx.newOwner;
    const assetRegistry = await getAssetRegistry('org.example.network.Asset');
    await assetRegistry.update(tx.asset);
    
    console.log(`资产转移完成!新所有者已更新为 ${tx.newOwner.email}`);
}

需要注意的是:这些输出不会直接显示在你的本地终端(除非你直接在peer节点上运行),而是会被记录到Hyperledger Fabric peer节点的日志文件中。

2. Node.js应用调用交易时,如何打印所有控制台语句

当你用Node.js应用调用Composer交易时,交易处理器里的console.log是运行在Fabric peer节点上的,因此这些日志不会自动同步到Node.js应用的终端。要查看完整的控制台输出,有两种实用方式:

方式一:查看Fabric Peer容器日志(开发环境首选)

如果是用Composer开发环境(比如通过composer network start启动的Docker容器化网络),可以直接通过Docker命令跟踪peer日志:

  1. 先执行docker ps找到目标peer容器名称,格式通常是dev-peer0.org1.example.com-<你的网络名称>-<版本号>
  2. 执行日志跟踪命令,实时查看输出:
docker logs -f <peer容器名称>

加上-f参数可以实时刷新日志,交易执行时的所有控制台语句都会实时显示在终端里。

方式二:在Node.js应用中补充本地日志

如果你想在Node.js应用的终端里看到交易调用的上下文信息(比如参数、调用状态),可以在交易调用代码中添加自定义控制台输出:

const BusinessNetworkConnection = require('composer-client').BusinessNetworkConnection;

async function callTransferTransaction() {
    const bnc = new BusinessNetworkConnection();
    try {
        await bnc.connect('admin@your-network');
        
        // 准备交易参数
        const txParams = {
            asset: 'resource:org.example.network.Asset#asset001',
            owner: 'resource:org.example.network.Participant#user1',
            newOwner: 'resource:org.example.network.Participant#user2'
        };
        
        console.log('准备提交资产转移交易,参数详情:', txParams);
        
        // 提交交易
        await bnc.submitTransaction('org.example.network.TransferAsset', txParams);
        
        console.log('交易提交成功!');
    } catch (error) {
        console.error('交易执行失败:', error);
        throw error;
    } finally {
        await bnc.disconnect();
    }
}

callTransferTransaction();

结合peer容器日志和Node.js应用的本地日志,你就能完整掌握交易从调用到执行的所有输出信息了。

内容的提问来源于stack exchange,提问作者Venkatesh Sorapalli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:01:08