摘要:区块链教程源代码分析根命令入口及加载子命令,年下半年,区块链行业正逐渐褪去发展之初的浮躁回归理性,表面上看相关人才需求与身价似乎正在回落。代码在为命令启动。
区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Fabric 1.0源代码笔记 之 Peer #peer根命令入口及加载子命令 1、加载环境变量配置和配置文件Fabric支持通过环境变量对部分配置进行更新,如:CORE_LOGGING_LEVEL为输出的日志级别、CORE_PEER_ID为Peer的ID等。
此部分功能由第三方包viper来实现,viper除支持环境变量的配置方式外,还支持配置文件方式。
如下代码为加载环境变量配置,其中cmdRoot为"core",即CORE_开头的环境变量。
viper.SetEnvPrefix(cmdRoot) viper.AutomaticEnv() replacer := strings.NewReplacer(".", "_") viper.SetEnvKeyReplacer(replacer) //代码在peer/main.go
加载配置文件,同样由第三方包viper来实现,具体代码如下:
其中cmdRoot为"core",即/etc/hyperledger/fabric/core.yaml。
err := common.InitConfig(cmdRoot) //代码在peer/main.go
如下代码为common.InitConfig(cmdRoot)的具体实现:
config.InitViper(nil, cmdRoot) err := viper.ReadInConfig() //代码在peer/common/common.go
另附config.InitViper(nil, cmdRoot)的代码实现:
优先从环境变量FABRIC_CFG_PATH中获取配置文件路径,其次为当前目录、开发环境目录(即:src/github.com/hyperledger/fabric/sampleconfig)、和OfficialPath(即:/etc/hyperledger/fabric)。
AddDevConfigPath是对addConfigPath的封装,目的是通过GetDevConfigDir()调取sampleconfig路径。
var altPath = os.Getenv("FABRIC_CFG_PATH") if altPath != "" { addConfigPath(v, altPath) } else { addConfigPath(v, "./") err := AddDevConfigPath(v) addConfigPath(v, OfficialPath) } viper.SetConfigName(configName) //代码在core/config/config.go2、加载命令行工具和命令
Fabric支持类似peer node start、peer channel create、peer chaincode install这种命令、子命令、命令选项的命令行形式。
此功能由第三方包cobra来实现,以peer chaincode install -n test_cc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02为例,
其中peer、chaincode、install、-n分别为命令、子命令、子命令的子命令、命令选项。
如下代码为mainCmd的初始化,其中Use为命令名称,PersistentPreRunE先于Run执行用于初始化日志系统,Run此处用于打印版本信息或帮助信息。
var mainCmd = &cobra.Command{ Use: "peer", PersistentPreRunE: func(cmd *cobra.Command, args []string) error { loggingSpec := viper.GetString("logging_level") if loggingSpec == "" { loggingSpec = viper.GetString("logging.peer") } flogging.InitFromSpec(loggingSpec) //初始化flogging日志系统 return nil }, Run: func(cmd *cobra.Command, args []string) { if versionFlag { fmt.Print(version.GetInfo()) } else { cmd.HelpFunc()(cmd, args) } }, } //代码在peer/main.go
如下代码为添加命令行选项,-v, --version、--logging-level和--test.coverprofile分别用于版本信息、日志级别和测试覆盖率分析。
mainFlags := mainCmd.PersistentFlags() mainFlags.BoolVarP(&versionFlag, "version", "v", false, "Display current version of fabric peer server") mainFlags.String("logging-level", "", "Default logging level and overrides, see core.yaml for full syntax") viper.BindPFlag("logging_level", mainFlags.Lookup("logging-level")) testCoverProfile := "" mainFlags.StringVarP(&testCoverProfile, "test.coverprofile", "", "coverage.cov", "Done") //代码在peer/main.go
如下代码为逐一加载peer命令下子命令:node、channel、chaincode、clilogging、version。
mainCmd.AddCommand(version.Cmd()) mainCmd.AddCommand(node.Cmd()) mainCmd.AddCommand(chaincode.Cmd(nil)) mainCmd.AddCommand(clilogging.Cmd(nil)) mainCmd.AddCommand(channel.Cmd(nil)) //代码在peer/main.go
mainCmd.Execute()为命令启动。
3、初始化日志系统(输出对象、日志格式、日志级别)如下为初始日志系统代码入口,其中loggingSpec取自环境变量CORE_LOGGING_LEVEL或配置文件中logging.peer,即:全局的默认日志级别。
flogging.InitFromSpec(loggingSpec) //代码在peer/main.go
未完待续感谢关注兄弟连区块链教程分享!
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/24370.html
摘要:兄弟连区块链教程源代码分析根命令入口及加载子命令二。此处传入为,将模块日志级别设置为,并会将初始化为。代码在目录下包括。核心代码为,目的是在或为空时设置默认值。感谢关注兄弟连区块链教程分享 兄弟连区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令二。flogging,即:fabric logging,为Fabric基于第三方包go-logging封装的日...
摘要:兄弟连区块链教程源代码分析命令及子命令实现,年下半年,区块链行业正逐渐褪去发展之初的浮躁回归理性,表面上看相关人才需求与身价似乎正在回落。 兄弟连区块链教程Fabric1.0源代码分析Peer peer chaincode命令及子命令实现,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多...
摘要:兄弟连区块链教程源代码分析客户端,年下半年,区块链行业正逐渐褪去发展之初的浮躁回归理性,表面上看相关人才需求与身价似乎正在回落。源代码笔记之客户端概述相关代码分布如下,接口及实现。代码在工具函数获取客户端代码在 兄弟连区块链教程Fabric1.0源代码分析Peer EndorserClient(Endorser客户端),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性...
摘要:兄弟连区块链教程源代码分析服务端,年下半年,区块链行业正逐渐褪去发展之初的浮躁回归理性,表面上看相关人才需求与身价似乎正在回落。源代码笔记之服务端概述相关代码在目录下。,接口实现,即结构体及方法,以及服务端处理流程。 兄弟连区块链教程Fabric1.0源代码分析Peer(Endorser服务端),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与...
摘要:区块链教程源代码分析日志系统,年下半年,区块链行业正逐渐褪去发展之初的浮躁回归理性,表面上看相关人才需求与身价似乎正在回落。源代码笔记之日志系统概述,即,对第三方日志包做了封装,供全局使用。设置各模块的日志级别,并更新。 区块链教程Fabric1.0源代码分析flogging(Fabric日志系统),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需...
阅读 1074·2021-11-16 11:45
阅读 2708·2021-09-27 13:59
阅读 1314·2021-08-31 09:38
阅读 3142·2019-08-30 15:52
阅读 1315·2019-08-29 13:46
阅读 2085·2019-08-29 11:23
阅读 1631·2019-08-26 13:47
阅读 2476·2019-08-26 11:54