Respons Hyperledger Fabric JSON memiliki garis miring terbalik

Aug 19 2020

Saat ini saya menguji Aplikasi Fabric Hyperledger, tetapi saya mendapatkan respons JSON yang tidak terduga. Mengapa ada garis miring terbalik ekstra di antara setiap objek dalam respons?

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)

Keluaran CLI yang sebenarnya:

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

Hasil CLI yang diharapkan:

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

Log 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

Jawaban

Ta-seenJunaid Nov 09 2020 at 03:33

Format pencatatan

Format logging dari perintah peer dan orderer dikontrol melalui variabel lingkungan FABRIC_LOGGING_FORMAT. Ini dapat diatur ke string format, seperti default

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

untuk mencetak log dalam format konsol yang dapat dibaca manusia. Ini juga dapat diatur ke json untuk mengeluarkan log dalam format JSON.

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

Anda dapat memperbarui core.yaml atau Anda dapat menggunakan "FABRIC_LOGGING_FORMAT" di file pembuatan buruh pelabuhan Anda.

Contoh dengan core.yaml diberikan di bawah ini:

    # 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

Anda dapat menemukan core.yaml di direktori "fabric-samples / config".

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

Jika Anda mendownload sampel fabric terbaru, Anda dapat menemukan sample core.yaml di direktori "fabric-samples / config".

Contoh dengan "FABRIC_LOGGING_FORMAT" di file pembuatan buruh pelabuhan Anda diberikan di bawah ini: Anda harus mengedit lingkungan wadah cli dengan "- 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