# econf **Repository Path**: gsfw/econf ## Basic Information - **Project Name**: econf - **Description**: 一个及其简单的配置管理工具,用于简化配置管理工作量,可以从zk或者文件中读取全局变量,并替换配置模板中的相应变量。 与confd对比,无需事先声明keys,以及输入输出文件,减少了运维工作量 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 1 - **Created**: 2017-06-17 - **Last Updated**: 2025-06-11 ## Categories & Tags **Categories**: distributed-service **Tags**: None ## README 1.econf用法 econf [选项] [参数] [选项] [参数] ... 支持选项 -h 打印帮助信息 -v 打印版本信息 -t 模板文件后缀名,默认为.tpl -c 配置文件后缀名,默认为.conf -z 全局变量所在zookeeper路径 -i 模板文件所在路径,默认为./ -o 输出文件路径,默认为./ 2.工作流程 1.首先加载全局变量,必须配置-z和-f选项中的一项 a.当配置了-z选项时,从全局变量所在zookeeper路径上加载所有全局变量的值, econf加载过程是直接将节点名称作为全局变量名,节点值作为全局变量值 比如:zookeeper的/global_variables目录下有2个节点:a和b,对应的data分别为valueA和valueB, 加载完之后,会生成以下两个全局变量:a=valueA;b=valueB; b.当配置了-f选项时,从全局变量所在的文件加载所有的全局变量,文件格式为json, 对元素名为全局变量名,元素值为全局变量值,比如: { "a":"ValueA", "b":"ValueB" } 加载完之后,会生成以下两个全局变量:a=valueA;b=valueB; 2.其次递归搜索模板文件所在路径目录及子目录下以模板文件后缀名结尾的文件,读取并 解析模板文件,按照模板文件里的参数进行目标变量搜索,如果发现时全局变量,则进 行文本替换,并在输出文件路径对应目录下生成目标文件。 注意:全局变量在模板中的格式为:${变量名} 假设有/tmp/sample.tpl的格式如下: { "confa":"${a}", "confb":${b} }, 生成的输出文件/tmp/sample.conf的内容将是: { "confa":"valueA", "confb":valueB }