首页 > 其他分享 >Golang 配置文件动态更变(viper)

Golang 配置文件动态更变(viper)

时间:2023-12-16 14:34:38浏览次数:28  
标签:err 配置文件 更变 fmt Golang fpname ini Println SetDefault

一.下载包

go get github.com/spf13/viper

二.源码

 1 func LoadConf(fpname string) {
 2     ini := viper.New()
 3     ini.SetConfigFile(fpname)
 4 
 5     ini.SetDefault("database.dbname", "esaletest")
 6     ini.SetDefault("database.dbhost", "127.0.0.1")
 7     ini.SetDefault("database.dbuser", "sa")
 8     ini.SetDefault("database.dbpasswd", "Quartz!DockerP4ss")
 9     ini.SetDefault("database.dbport", "1433")
10 
11     _, err := os.Stat(fpname)
12     if err != nil {
13         if os.IsNotExist(err) {
14             absfpname, _ := filepath.Abs(fpname)
15             os.MkdirAll(filepath.Dir(absfpname), 0755)
16             err := ini.SafeWriteConfigAs(fpname)
17             if err != nil {
18                 errs := fmt.Sprintf(`"%s"生成配置文件失败。%s`, fpname, err.Error())
19                 panic(errors.New(errs))
20             }
21             errs := fmt.Sprintf(`"%s"获取配置不存在!已经重新生成配置文件。`, fpname)
22             panic(errors.New(errs))
23         }
24         panic(err)
25     }
26 
27     /**
28         // 监听到文件变化后的回调
29         ini.OnConfigChange(func(e fsnotify.Event) {
30             fmt.Println("Config file changed:", e.Name)
31             fmt.Println(ini.Get("db.redis.passwd"))
32         })
33     **/
34 
35 }
36 
37 func TestConf() {
38     fpname := "./Conf/a/conf.yml"
39     fmt.Println(path.Ext(fpname))     // .yml
40     fmt.Println(path.Base(fpname))    // conf.yml
41     fmt.Println(path.Dir(fpname))     // Conf/a
42     fmt.Println(filepath.Abs(fpname)) // /home/chad/下载/gospace/gindir/Conf/a/conf.yml <nil>
43     aa, _ := filepath.Abs(fpname)
44     fmt.Println(path.Dir(aa)) // /home/chad/下载/gospace/gindir/Conf/a
45     LoadConf(fpname)
46 }

 

 

标签:err,配置文件,更变,fmt,Golang,fpname,ini,Println,SetDefault
From: https://www.cnblogs.com/watermeloncode/p/17904802.html

相关文章

  • Golang的闭包和匿名函数
    Golang语言支持匿名函数,这些匿名函数也被称为闭包。匿名函数是一种特殊类型的函数,它没有名称,而闭包可以看作是一种特殊类型的匿名函数,尽管在实践中有微小的区别。 Golang中的匿名函数匿名函数也可以称为字面函数、lambda函数或闭包。闭包的概念源于lambda计算中表达式的数......
  • Golang io.Pipe()函数及示例
    https://geek-docs.com/go-tutorials/go-examples/g_io-pipe-function-in-golang-with-examples.html 在Go语言中,io包提供了基本的I/O原语接口,其主要工作是封装这些原语的正在进行的实现。Go语言中的Pipe()函数用于创建并发的内存管道,在将期望io.Reader的代码与期望io.Writer......
  • PowerShell配置文件只Profile.ps1
    PowerShell执行的时候,首先会执行Profile.ps1的内容,如果我们想要执行PowerShell的时候,会获得某些功能,可以将想要的内容放到Profile.ps1中。这个文件默认存放在C:\Windows\system32\WindowsPowerShell\v1.0\Examples\下。该文件默认添加所有的别名,还有部分Function。内容如下:#Copyr......
  • spring xml配置文件之context:annotation-config
    我们一般在含有Spring的项目中,可能会看到配置项中包含这个配置节点context:annotation-config。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-......
  • tmux配置文件.tmux.conf (tmux 3.0a)
    本文是基于tmux3.0a进行的配置,使用tmux-V可查看版本下面是配置文件内容,在家目录下创建.tmux.conf,并粘贴下面内容保存后,进入tmux,ctrl+b,然后输入命令:source-file~/.tmux.conf即可(或在bash下执行tmuxsource~/.tmux.conf)。因为下面的命令中,bind了r作为source-file~/.tmu......
  • 记录ArcGIS Server Manager服务的网站配置文件泄露漏洞
    描述此漏洞在ArcGISServer10.2forWindows上被发现,在启用了ArcGISServerManager服务时,通过GET请求[主机+端口]/arcgis/manager/3370/js/../WEB-INT/web.xml地址,任意用户可获取ArcGIS的manager应用服务配置。风险等级:低(被泄露的文件对所有此产品用户可见,不包含机密信息)分......
  • apache 项目的php配置文件
    <VirtualHost*:80>[email protected]"/www/wwwroot/api.com"ServerNameapi.comServerAliasapi.com#errorDocument404/404.htmlErrorLog"/www/wwwlogs/api.com-error_log"Cu......
  • 二、Ansible配置文件
    二、Ansible配置文件2.1配置文件详解[defaults]:通用配置项[inventory]:与主机清单相关的配置项[privilegeescalation]:特权升级相关的配置项[paramikoconnection]:与paramiko相关的配置项,rhel6以前默认的ssh方式[sshconnection]:与ssh相关的配置项,rhel6以后默认的......
  • k8s配置文件管理
    1.为什么要用configMapConfigMap是一种用于存储应用所需配置信息的资源类型,用于保存配置数据的键值对,可以用来保存单个属性,也可以用来保存配置文件。通过ConfigMap可以方便的做到配置解耦,使得不同环境有不同的配置。考虑真实的使用场景,像数据库这类中间件,是作为公共资源,为多个......
  • golang http post 执行函数效率最高,速度最快实现
    在Go语言中,使用标准库的net/http包可以进行HTTPPOST请求。为了获得最高的执行效率和最快的速度,可以使用http.Client结构体来管理和复用HTTP连接,并使用http.NewRequest创建请求对象,然后使用http.Client的Do方法发送请求。以下是一个示例代码,展示如何使用Go语言的net/http包执行高效......