初始化项目
This commit is contained in:
16
trunk/goutil/ini-config/ini.conf
Normal file
16
trunk/goutil/ini-config/ini.conf
Normal file
@@ -0,0 +1,16 @@
|
||||
#配置项说明
|
||||
log.es.enable=false #(false,默认值,关闭es日志记录,后续配置可不填写; true 打开日志记录)
|
||||
log.es.url= #(es服务地址)
|
||||
log.es.indexName=1 #(es服务中Index名)
|
||||
log.es.level=info #(debug|info|warn|error|fatal等级,等于或高于配置项则记录)
|
||||
|
||||
log.file.enable=false #(默认false)
|
||||
log.file.path=log #(运行目录下log目录,默认logs)
|
||||
log.file.pre=log #(文件名前缀,默认log)
|
||||
log.file.enableHour=true #(文件以小时划分,格式:yyyyMMddHH,默认true,false 一天一个文件,格式:yyyyMMdd)
|
||||
log.file.level=info
|
||||
|
||||
log.console.enable=false #(默认false)
|
||||
log.console.level=info
|
||||
|
||||
modelcenter.modelDBConnStr=root:moqikaka3306@tcp(10.255.0.10:3306)/xj_model_mr?charset=utf8&parseTime=true&loc=Local&timeout=60s||MaxOpenConns=10||MaxIdleConns=5 #(model数据库信息)
|
||||
103
trunk/goutil/ini-config/ini.go
Normal file
103
trunk/goutil/ini-config/ini.go
Normal file
@@ -0,0 +1,103 @@
|
||||
package ini_config
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ParseFile
|
||||
// @description: 从文件读取配置文件,并转化为map对象
|
||||
// parameter:
|
||||
// @filePath:文件路径
|
||||
// return:
|
||||
// @map[string]string: 配置信息
|
||||
// @error:错误信息
|
||||
func ParseFile(filePath string) (map[string]string, error) {
|
||||
fn, err := os.Open(filePath)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer fn.Close()
|
||||
|
||||
kvMap := make(map[string]string)
|
||||
rd := bufio.NewReader(fn)
|
||||
for {
|
||||
data, _, err := rd.ReadLine()
|
||||
if err != nil || io.EOF == err {
|
||||
break
|
||||
}
|
||||
|
||||
line := strings.TrimSpace(string(data))
|
||||
if line == "" || line[0:1] == "#" {
|
||||
continue
|
||||
}
|
||||
|
||||
var k string
|
||||
var v string
|
||||
k, v, err = Parse(line)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
kvMap[k] = v
|
||||
}
|
||||
|
||||
return kvMap, nil
|
||||
}
|
||||
|
||||
// Parse
|
||||
// @description: 转换单行字符串为配置对象
|
||||
// parameter:
|
||||
// @line:单行内容
|
||||
// return:
|
||||
// @string:key
|
||||
// @string:value
|
||||
// @error:错误信息
|
||||
func Parse(line string) (string, string, error) {
|
||||
ls := strings.SplitN(line, "=", 2)
|
||||
if len(ls) != 2 {
|
||||
return "", "", errors.New(fmt.Sprintf("配置%s中未找到=分隔符", line))
|
||||
}
|
||||
|
||||
var key = strings.TrimSpace(ls[0])
|
||||
var value string
|
||||
|
||||
i := strings.LastIndex(ls[1], "#")
|
||||
if i < 0 {
|
||||
value = strings.TrimSpace(ls[1])
|
||||
} else {
|
||||
s := ls[1][:i]
|
||||
value = strings.TrimSpace(s)
|
||||
}
|
||||
|
||||
return key, value, nil
|
||||
}
|
||||
|
||||
// ParseMultipleLines
|
||||
// @description: 转换多行字符串为配置对象
|
||||
// parameter:
|
||||
// @content:多行内容(通过\n换行)
|
||||
// return:
|
||||
// @map[string]string:配置信息
|
||||
// @error:错误信息
|
||||
func ParseMultipleLines(content string) (map[string]string, error) {
|
||||
lines := strings.Split(content, "\n")
|
||||
kvMap := make(map[string]string)
|
||||
for _, line := range lines {
|
||||
if line == "" || line[0:1] == "#" {
|
||||
continue
|
||||
}
|
||||
|
||||
k, v, err := Parse(line)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
kvMap[k] = v
|
||||
}
|
||||
|
||||
return kvMap, nil
|
||||
}
|
||||
88
trunk/goutil/ini-config/ini_test.go
Normal file
88
trunk/goutil/ini-config/ini_test.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package ini_config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test_File(t *testing.T) {
|
||||
foder, _ := os.Getwd()
|
||||
filePath := path.Join(foder, "ini.conf")
|
||||
|
||||
kvmap, err := ParseFile(filePath)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(kvmap) != 12 {
|
||||
t.Error("读取的内容数量不正确")
|
||||
return
|
||||
}
|
||||
|
||||
if v, exists := kvmap["log.es.enable"]; exists == false || v != "false" {
|
||||
t.Error("log.es.enable读取的值不正确")
|
||||
}
|
||||
|
||||
if v, exists := kvmap["log.es.url"]; exists == false || v != "" {
|
||||
t.Error("log.es.url读取的值不正确")
|
||||
}
|
||||
}
|
||||
|
||||
func Test_String(t *testing.T) {
|
||||
k, v, err := Parse("log.es.enable")
|
||||
if err == nil {
|
||||
t.Error(fmt.Errorf("解析格式错误"))
|
||||
return
|
||||
}
|
||||
|
||||
k, v, err = Parse("log.es.enable=false #(false,默认值,关闭es日志记录,后续配置可不填写; true 打开日志记录)")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if k != "log.es.enable" || v != "false" {
|
||||
t.Error("解析的值不正确")
|
||||
}
|
||||
|
||||
k, v, err = Parse("dbconnection=root:moqikaka3309!#@tcp(10.252.0.62:3309)/liangjian2_groupserver_auto_master?charset=utf8&parseTime=true&loc=Local&timeout=30s#数据库连接")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
if k != "dbconnection" || v != "root:moqikaka3309!#@tcp(10.252.0.62:3309)/liangjian2_groupserver_auto_master?charset=utf8&parseTime=true&loc=Local&timeout=30s" {
|
||||
t.Error("解析的值不正确")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func Test_Content(t *testing.T) {
|
||||
content := "#配置项说明\nlog.es.enable #(false,默认值,关闭es日志记录,后续配置可不填写; true 打开日志记录)\nlog.es.url= #(es服务地址)\nlog.es.indexName=1 #(es服务中Index名)\nlog.es.level=info #(debug|info|warn|error|fatal等级,等于或高于配置项则记录)\n\nlog.file.enable=false #(默认false)\nlog.file.path=log #(运行目录下log目录,默认logs)\nlog.file.pre=log #(文件名前缀,默认log)\nlog.file.enableHour=true #(文件以小时划分,格式:yyyyMMddHH,默认true,false 一天一个文件,格式:yyyyMMdd)\nlog.file.level=info\n\nlog.console.enable=false #(默认false)\nlog.console.level=info"
|
||||
kvmap, err := ParseMultipleLines(content)
|
||||
if err == nil {
|
||||
t.Error(fmt.Errorf("配置格式不正确"))
|
||||
return
|
||||
}
|
||||
|
||||
content = "#配置项说明\nlog.es.enable=false #(false,默认值,关闭es日志记录,后续配置可不填写; true 打开日志记录)\nlog.es.url= #(es服务地址)\nlog.es.indexName=1 #(es服务中Index名)\nlog.es.level=info #(debug|info|warn|error|fatal等级,等于或高于配置项则记录)\n\nlog.file.enable=false #(默认false)\nlog.file.path=log #(运行目录下log目录,默认logs)\nlog.file.pre=log #(文件名前缀,默认log)\nlog.file.enableHour=true #(文件以小时划分,格式:yyyyMMddHH,默认true,false 一天一个文件,格式:yyyyMMdd)\nlog.file.level=info\n\nlog.console.enable=false #(默认false)\nlog.console.level=info"
|
||||
kvmap, err = ParseMultipleLines(content)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
if len(kvmap) != 11 {
|
||||
t.Error("读取的内容数量不正确")
|
||||
return
|
||||
}
|
||||
|
||||
if v, exists := kvmap["log.es.enable"]; exists == false || v != "false" {
|
||||
t.Error("log.es.enable读取的值不正确")
|
||||
}
|
||||
|
||||
if v, exists := kvmap["log.es.url"]; exists == false || v != "" {
|
||||
t.Error("log.es.url读取的值不正确")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user