LinuxOne环境下Docker日志中无法查看Hyperledger链码活动
我来帮你梳理下几个常见的原因和对应的排查步骤,你遇到的这个情况在Fabric部署中挺典型的:
1. 先确认链码容器是否正常运行
链码在Fabric中是作为独立容器运行的,如果链码容器没起来,peer自然不会有链码相关的日志输出。你可以先执行:
docker ps
看看列表里有没有以dev-开头或者包含你的业务链码名称的容器。如果找不到,说明链码实例化过程可能失败了——你可以查看peer容器的完整日志(去掉-f参数),找实例化链码时的错误信息,或者检查Composer部署时的终端输出,看有没有报错提示。
2. 检查Peer的日志级别是否足够
默认情况下,Peer的日志级别可能设置得比较高(比如WARNING),会过滤掉链码交互的细节日志。你需要调整Peer的日志级别:
- 找到你的docker-compose配置文件,在Peer服务的环境变量里添加或修改:
- CORE_LOGGING_LEVEL=DEBUG - 重启Peer容器:
docker-compose restart peer
之后再执行资产添加或交易操作,查看Peer日志应该就能看到更详细的链码交互信息了。
3. 验证Composer连接配置是否指向正确的Peer
有时候可能是Composer连接的Peer和你查看日志的Peer不是同一个!你可以打开Composer的connection.json文件,检查其中的Peer端点配置,确认它的地址和端口与你正在查看日志的Peer容器一致。
4. 直接查看链码容器的日志
如果Peer日志没输出,但链码容器存在,你可以直接查看链码本身的日志:
docker logs <chaincode-container-id>
这样能区分是Peer没接收到链码的日志,还是链码本身就没有输出交易相关的日志(比如链码代码里没加日志语句)。
5. 确认交易是否真的提交成功
先别急着看日志,先验证交易本身有没有成功:
- 用Composer命令查看资产列表:
composer asset list -n <your-network-name> - 或者查看Composer客户端执行交易时的终端输出,有没有返回错误信息。如果交易本身就失败了,Peer日志自然不会有链码活动的记录。
6. 检查版本兼容性
你使用的是hyperledger/fabric-peer:s390x-1.0.4,要确认你安装的Hyperledger Composer版本是否与Fabric 1.0.x兼容(比如Composer v0.16.x对应Fabric 1.0.x)。版本不匹配可能会导致链码交互异常,甚至无法生成链码容器。
内容的提问来源于stack exchange,提问作者SierraBravo

