一、配置文件的说明

1. 官方有关配置的文档:配置 | Kratos

2. 配置的相关文件(以框架示例的配置文件为例)

1)configs/config.yaml 为项目的配置文件,可进行配置内容的修改

2)internal/conf 放配置文件的结构定义,.proto文件进行配置定义,然后通过在根目录执行

make config,就可以将对应的.pb.go文件生成到相同的目录下供使用。

configsconfig.New()conf.Bootstrap

二、配置文件的用法

1. 添加新的配置

1)config.yaml文件中加入

etc:
  test:
    test_01: 111testname

2) internal/conf/conf.proto 文件添加相应结构

message Bootstrap {
  Server server = 1;
  Data data = 2;
  Etc etc = 3; //添加1
}

//添加2
message Etc {
  message Test {
    string test01 = 1;
  }
  Test test = 1;
}

3)输入make config命令生成conf.pb.go文件

make config

4)main.go 入口文件中加入以下代码,用来监听配置热更新

if err := c.Watch("etc.test.test01", func(key string, value config.Value) {
	log.Debugf("config changed: %s = %v\n", key, value)
	test01, err := c.Value("etc.test.test01").String()
	if err != nil {
		panic(err)
	}
	bc.Etc.Test.Test01 = test01
}); err != nil {
	log.Error(err)
}


//2.加 bc.Etc, 方便程序中使用
app, cleanup, err := wireApp(bc.Server, bc.Data, bc.Etc, logger)

5)wire.go 文件中添加 *conf.Etc

func wireApp(*conf.Server, *conf.Data, *conf.Etc, log.Logger) (*kratos.App, func(), error) {
	panic(wire.Build(server.ProviderSet, data.ProviderSet, biz.ProviderSet, service.ProviderSet, newApp))
}

6) 进入wire.go所在文件,执行 wire命令,生成新的 wire_gen.go

7)kratos run执行程序,修改我们设置的配置,将看到:

DEBUG msg=config changed: etc.test.test01 = &{{111tes}}

热更新监听成功!