Package xyconfig supports to thread-safe read, control, and monitor configuration files.
var config = xyconfig.GetConfig("app")
// Read config from a string with the priority is 10.
config.ReadBytes(xyconfig.JSON, 10, []byte(`{"general": {"timeout": 3.14}}`))
// Read from files.
config.Read("config/10-default.ini")
config.Read("config/20-override.yml")
config.Read("10-dev.env")
// Load global environment variables to config files.
config.Read("env")
// Read config from aws s3 bucket.
config.Read("s3://bucket/30-item.ini")
fmt.Println(config.MustGet("general.timeout").MustFloat())
config.AddHook("general.timeout", func (e xyconfig.Event) {
var timeout, ok = e.New.AsFloat()
if !ok {
return
}
SetTimeoutToSomeThing(timeout)
})
config.AddHook("general", func (e Event) {
var general = e.New.MustConfig()
var timeout = general.MustGet("timeout").MustFloat()
SetTimeoutToSomething(timeout)
})
Operation | Time | Objects Allocated |
---|---|---|
Get | 70 ns/op | 0 allocs/op |
ChangeConfig | 413763 ns/op | 724 allocs/op |
WriteFile | 335892 ns/op | 3 allocs/op |