上篇文章從源碼角度去修改代碼從而實現日誌持久化,本次將給基於x-appender這個項目實現fabric日誌持久化改造,並且實現日誌的分級輸出持久化。
編譯x-appender
GOOS=linux GOARCH=amd64 go build
修改鏡像
基於fabric-peer原生鏡像再添加x-appender二進制文件即可,並修改CMD,具體Dockerfile如下:
FROM hyperledger/fabric-peer:1.4.3
ADD x-appender /usr/bin/
CMD peer node start 2>&1|x-appender
使用鏡像
鏡像使用和官方稍有不同,如下幾點:
yaml文件中無需覆蓋鏡像的cmd
-
添加了了4個環境變量,用於控制x-appender的表現行爲:
XAPPENDER_LOG_NAME_FORMAT 日誌文件名格式,如:%Y-%m-%d
XAPPENDER_LOG_ROOT_PATH 日誌持久化目錄,如:/var/logs
XAPPENDER_LOG_MAX_AGE 日誌最大保存時間,單位爲天,如:30
XAPPENDER_LOG_ROTATION 日誌切割時間,單位爲小時,如:24
示例
peer.yaml,我已經將鏡像上傳至docker hub,如果你嫌麻煩,就無須製作鏡像了。
services:
peer-00:
image: tianrandailoving/fabric-peer-x-appender:1.4.3
environment:
- CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
# the following setting starts chaincode containers on the same
# bridge network as the peers
# https://docs.docker.com/compose/networking/
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=${COMPOSE_PROJECT_NAME}_byfn
- FABRIC_LOGGING_SPEC=INFO
#- FABRIC_LOGGING_SPEC=DEBUG
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- XAPPENDER_LOG_NAME_FORMAT=%Y-%m-%d
- XAPPENDER_LOG_ROOT_PATH=/var/logs
- XAPPENDER_LOG_MAX_AGE=30
- XAPPENDER_LOG_ROTATION=24
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer