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日志:
- 先执行
docker ps找到目标peer容器名称,格式通常是dev-peer0.org1.example.com-<你的网络名称>-<版本号> - 执行日志跟踪命令,实时查看输出:
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
相关产品推荐
相关产品推荐

