La risposta JSON di Hyperledger Fabric ha barre rovesciate

Aug 19 2020

Attualmente sto testando un'applicazione Hyperledger Fabric, ma ricevo una risposta JSON inaspettata. Perché sono presenti barre rovesciate aggiuntive tra ogni oggetto nella risposta?

result, err := json.Marshal(history)
logger.Debug(string(result))
if err != nil {
    message := fmt.Sprintf("unable to marshal the result: %s", err.Error())
    logger.Error(message)
    return shim.Error(message)
}

logger.Info("SimpleChaincode.getHistory exited successfully")
return shim.Success(result)

Output CLI effettivo:

Chaincode invoke successful. result: status:200 payload:"[{\"type\":\"history\",\"key\":\"key\",\"values\":[{\"tx_id\":\"723a398362282d92f7b05b821fc8f835736b6068e5d1b72d105fc86d6e57d64e\",\"value\":\"initial_value\",\"is_delete\":false}]}]" 

Risultato CLI previsto:

Chaincode invoke successful. 
result: status:200 
payload:
[
   {
      "type":"history",
      "key":"key",
      "values":[
         {
            "tx_id":"723a398362282d92f7b05b821fc8f835736b6068e5d1b72d105fc86d6e57d64e",
            "value":"initial_value",
            "is_delete":false
         }
      ]
   }
]

Registri Docker:

2020-08-19 14:40:18.823 UTC [SimpleChaincode] Debug -> DEBU 015 [{"type":"history","key":"key","values":[{"tx_id":"723a398362282d92f7b05b821fc8f835736b6068e5d1b72d105fc86d6e57d64e","value":"initial_value","is_delete":false}]}]
2020-08-19 14:40:18.823 UTC [SimpleChaincode] Info -> INFO 016 SimpleChaincode.getHistory exited successfully

Risposte

Ta-seenJunaid Nov 09 2020 at 03:33

Formato di registrazione

Il formato di registrazione dei comandi peer e orderer è controllato tramite la variabile d'ambiente FABRIC_LOGGING_FORMAT. Può essere impostato su una stringa di formato, come quella predefinita

"%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}"

per stampare i log in un formato di console leggibile dall'uomo. Può anche essere impostato su json per generare log in formato JSON.

Collegamento: https://hyperledger-fabric.readthedocs.io/en/release-2.2/logging-control.html#logging-format

Puoi aggiornare core.yaml oppure puoi usare "FABRIC_LOGGING_FORMAT" nel tuo file di composizione docker.

Di seguito viene fornito un esempio con core.yaml:

    # Logging section for the chaincode container
logging:
  # Default level for all loggers within the chaincode container
  level:  info
  # Override default level for the 'shim' logger
  shim:   warning
  # Format for the chaincode container logs
  format: json

Puoi trovare core.yaml nella directory "fabric-samples / config".

Collegamento: https://github.com/hyperledger/fabric/blob/master/sampleconfig/core.yaml

Se scarichi gli ultimi campioni di tessuto, puoi trovare il campione core.yaml nella directory "fabric-samples / config".

Di seguito è fornito un esempio con "FABRIC_LOGGING_FORMAT" nel file di composizione della finestra mobile: Devi modificare l'ambiente del contenitore cli con "- FABRIC_LOGGING_FORMAT = json"

  cli:
container_name: cli
image: hyperledger/fabric-tools:$IMAGE_TAG
tty: true
stdin_open: true
environment:
  - GOPATH=/opt/gopath
  - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
  #- FABRIC_LOGGING_SPEC=DEBUG
  - FABRIC_LOGGING_FORMAT=json
  - FABRIC_LOGGING_SPEC=INFO
  - CORE_PEER_ID=cli
  - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
  - CORE_PEER_LOCALMSPID=Org1MSP
  - CORE_PEER_TLS_ENABLED=true
  - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
  - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
  - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
  - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: /bin/bash
volumes:
    - /var/run/:/host/var/run/
    - ./../chaincode/:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode
    - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
    - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
    - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
depends_on:
  - orderer.example.com
  - peer0.org1.example.com
  - peer1.org1.example.com
  - peer0.org2.example.com
  - peer1.org2.example.com
networks:
  - byfn