诊断问题

Composer默认使用Winston日志记录模块,并使用Config模块查找任何配置信息。如果没有找到,那么将使用一组默认值。

如果没有设置配置文件,配置模块会写出警告。例如。WARNING: No configurations found in configuration directory。如果您对默认值感到满意,并且不希望在应用程序中使用配置,则可以使用环境变量来抑制这种情况。在这里查看更多信息。

诊断问题

如果应用程序出现问题,应该如何处理诊断?

我们来看一下digitalproperty-app示例,并用它来解释如何从框架中获取诊断信息。

请注意:这是一个框架 - 所以你的应用程序将需要它自己的日志框架。另外,您的应用程序也可以用配置信息来控制Hyperledger Composer自己的日志记录。

有两个容器与日志相关:

  • 运行应用程序的容器

  • 执行交易函数的链码容器。

应用

在内部,默认情况下,Hyperledger Composer使用Winston node.js日志包,初始级别为日志点和目标。

默认配置

该框架将记录这些级别的信息。

  • 错误

  • 警告

  • 信息

  • 详细

  • 调试

“Silly”级别没有被使用。

信息的位置

默认情况下,有两个数据位置:

  • 一个文本文件,位于${CurrentWorkingDir}/logs/trace_<processid>.trc

  • 另一个是stdout。默认情况下,stdout只显示任何以“错误”级别记录的数据,文件将显示“信息”或以上(即信息,警告和错误)日志数据。

控制生成什么

配置模块用于定位信息以控制如何生成日志。

例如

  1. {
  2. "gettingstarted": {
  3. "participantId" : "WebAppAdmin",
  4. "participantPwd" :"DJY27pEnl16d",
  5. "businessNetworkIdentifier" : "digitalproperty-network",
  6. "connectionProfile" :"defaultProfile"
  7. },
  8. "ComposerConfig": {
  9. "debug": {
  10. "logger": "default",
  11. "config": {
  12. "console": {
  13. "enabledLevel": "info",
  14. "alwaysLevel": "none"
  15. },
  16. "file": {
  17. "filename": "./trace_PID.log",
  18. "enabledLevel": "silly",
  19. "alwaysLevel": "info"
  20. }
  21. }
  22. }
  23. }
  24. }

第一部分针对Getting Started应用程序,第二个ComposerConfig部分针对Hyperledger Composer。

  • logger用于指定实际记录日志的模块。默认是暗示这是winston框架

  • config传递给日志记录器来控制它做什么。所以这部分是特定于使用的记录器。

启用更多信息

调试node.js应用程序的标准方法是使用DEBUG环境变量。所以呢

  1. DEBUG=composer:* node myApplication.js

将启用更多的跟踪 - 这将使用enabledLevel上面配置中标记的级别。

如何找出哪个链码容器有已部署网络?

每个业务网络都部署到自己的链码容器中。在使用事务函数说错误的情况下,查看来自该容器的日志并查看发生了什么可能会有所帮助。

要确定哪个Docker容器具有部署的网络,请运行以下命令:

  1. docker ps

Docker容器名称应包含已部署网络的名称。