380 Star 2.5K Fork 620

GVPJohn / gf

 / 详情

g.Config()读取配置文件怎么使用啊,下面两种方式都取不到,请帮忙看下

已完成
创建于  
2018-06-24 16:51
println("config")
//项目根目录下  /config/config.yml
//g.Config()方式
g.Config().SetPath("/config/config.yml")
ports := g.Config().GetString("server.ports")
fmt.Println(ports)

//gcfg方式
gcfg := gcfg.New("C://GO//gopath//src//dw.com/blogG//config//config.yml")
a := gcfg.GetString("server.ports", "config.yml")
fmt.Println(a)

配置文件内容:

sever:
  ports:81,82
info:abc

评论 (6)

tianxia007 创建了任务
tianxia007 更新了任务

SetPathNew方法都是给定配置文件的目录地址,不是给配置文件路径。这里有示例:
http://gf.johng.cn/608519

//g.Config()方式
g.Config().SetPath("d://")
configpath := g.Config().GetFilePath("config.yml")
fmt.Println(configpath)

ports := g.Config().Get("server.ports", "config.yml")
info := g.Config().Get("info", "config.yml")
fmt.Println(ports, info)

真心取不出来,配置项目相对记录和磁盘绝对路径都不行

请帮忙看下那里写错了呀

info: abc 中间必须有个空格?有这个必要吗

我觉得两个问题
1.现在不能配置项目相对路径,必须要绝对路径,gin框架 beego框架的配置应该都可以相对路径的,必须绝对路径真的很难受
2.info: abc可以读,info:abc读不了,不知道合理不合理

1、yaml配置文件格式要求所有的数据项都应当以:空格分隔,你不带空格不符合yaml格式规范,自然无论是gf还是其他解析器都没有办法,你的配置可以改成如下形式:

server:
  ports: 81,82
info: abc

2、gf的配置管理器是支持相对路径的,我看你的示例中是使用的windows系统,我特地使用了虚拟机给你截了个图,以下是使用相对路径的示例程序(从你的代码上做了小修改):

import (
    "fmt"
    "gitee.com/johng/gf/g"
)

func main() {
    g.Config().SetPath("../../")
    configpath := g.Config().GetFilePath("config.yml")
    fmt.Println(configpath)

    ports := g.Config().Get("server.ports", "config.yml")
    info := g.Config().Get("info", "config.yml")
    fmt.Println(ports, info)
}

以下是截图:
输入图片说明

John 开始了任务
tianxia007 关闭了任务

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
1309327 johng 1705475649 112612 dwxdfhx 1578918070
Go
1
https://gitee.com/johng/gf.git
git@gitee.com:johng/gf.git
johng
gf
gf

搜索帮助