1.1Go项目中配置文件相关之.ini

1.介绍

ini文件全称"initialization",文件后缀名为.ini

ini 文件格式用于保存相关软件的配置信息

2.原理

主要结构为包括以下的文本信息:

1.sections(段)

2.keys(properties\键)

3.values(值)


例如

1.sections

格式如下:

[section]

a=a

b=b


比如项目中



配置文件的目录

app.debug.ini

[app]

RuntimeRootPath =runtime/

LogSavePath =logs/

LogSaveName =xxx

LogFileExt =log

LogLevel =debug

TimeFormat =2006010215

ExpireDay =7

SentryDSN =""

InterfaceTimeOut =3

AnnounceURL =""

[server]

RunMode =release

HttpPort =8023

ReadTimeout =3

WriteTimeout =3

[mysql]

Type =mysql

User =""

Password =""

Host =xx.xx.x.x:xxx

DmsName =xxxxx

DmsTablePrefix =xxxx_

RecordName =xxxx_xxx_xxx

SmartHomeName =xx_xx_xx

SmartHomeTablePrefix =gmt_

DeviceDataName =xx_xx_xx



然后写个



package conf

import (

"fmt"

"github.com/go-ini/ini"

"gitlab.aiforward.cn/horus/golib/rclib"

"time"

)

//1.配置所有需要用到的结构体在这里创建

type App struct {

RuntimeRootPath string

  ImageSavePath  string

  ImageMaxSize  int

  ImageAllowExts []string

  ExportSavePath string

  QrCodeSavePath string

  FontSavePath  string

  LogSavePath            string

  LogSaveName            string

  LogFileExt              string

  LogLevel                string

  TimeFormat              string

  ExpireDay              int32

  SentryDSN              string

  AbsoluteImagePrefixPath string

  InterfaceTimeOut        int64

  DeviceListTmpFile      string

  DeviceListFile          string

  RegionProportion        string

  AnnounceURL            string

}

var AppSetting = &App{}

type Server struct {

RunMode      string

  HttpPort    int

  ReadTimeout  time.Duration

  WriteTimeout time.Duration

}

var ServerSetting = &Server{}

type PMSConfig struct {

BaseURL        string

  AppId          string

  AppSecretKey  string

  PMSTokenVerify string

  PMSStaffInfo  string

}

var PMSetting = &PMSConfig{}

type MysqlDatabase struct {

Type                string

  User                string

  Password            string

  Host                string

  DmsName              string

  DmsTablePrefix      string

  RecordName          string

  RecordTablePrefix    string

  SmartHomeName        string

  SmartHomeTablePrefix string

  DeviceDataName      string

}

var MysqlSetting = &MysqlDatabase{}

type Pgsql struct {

User          string

  Password      string

  Host          string

  Port          int

  DBName        string

  DBTablePrefix string

}

type Redis struct {

Host        string

  Password    string

  DB          int

  MaxIdle    int

  MaxActive  int

  IdleTimeout time.Duration

}

type Image struct {

BasePath        string

  BaseUrl          string

  FileType        string

  ComputeBasePath  string

  DockerPrefixPath string

  ComputeBaseUrl  string

  UrlPort          string

  DefaultHost      string

}

type Mqtt struct {

Server string

}

type Face struct {

Register string

}

type TenCent struct {

AppId          string

  SecretId        string

  SecretKey      string

  CosBucket      string

  CosRegion      string

  PublicCosBucket string

}

type Gms struct {

Host      string

  AppId    string

  AppSecret string

}

type RcPlanish struct {

Host      string

  AppId    string

  AppSecret string

}

type Community struct {

AppId              string

  AppSecretKey        string

  Host                string

  AnalysisUrl        string

  InoutStatisticsUrl  string

  StaticsUrl          string

  BuildingList        string

  RoomOverview        string

  RoomMember          string

  RosterRoomInfo      string

  RoomGet            string

  RoomList            string

  RoomModifyAdmin    string

  FloorList          string

  UnitList            string

  RoomAccessList      string

  LinkDeviceRoom      string

  ResidentGet        string

  ResidentAdd        string

  ResidentList        string

  ResidentDetail      string

  ResidentDelete      string

  ResidentModify      string

  ResidentEdit        string

  ResidentBindRoom    string

  ResidentMemberList  string

  StaffGet            string

  StaffAdd            string

  StaffList          string

  StaffModify        string

  StaffDelete        string

  StaffModifyPassword string

  CommunityGet        string

  DetailURL          string

  SipContact          string

  GetLocationURL      string

  LocationListURL    string

  LocationAllURL      string

  LocationTreeURL    string

  GetCommonURl        string

  CommunityAddress    string

  AccessAddress      string

  PropertyAddress    string

  AddressIds          string

  HouseAddress        string

  AccessStatistics    string

  UserDetail          string

}

type HealthCode struct {

Host            string

  HealthCodeColor string

}

// 数据上报服务控制

type DataReport struct {

OfflineTypes []int

}

type Kafka struct {

ServerIp      string

  GroupId        string

  TopicCommunity string

  TopicResident  string

  TopicStaff    string

  AutoOffset    string

}

type RongChuang struct {

PushHost    string

  AccessToken string

  PushAppInfo string

  AppId      string

  TokenSecret string

}

type Iot struct {

AccessProductId      string

  MethodQrUnlock        string

  MethodBluetoothUnlock string

  MethodIntercomUnlock  string

  MethodFixedUnlock    string

  MethodUpdateSecret    string

  ServerGrpc            string

  AppKey                string

  AppSecret            string

  PlainText            bool

}

type PMDS struct {

Host string

}

type CMDS struct {

Host string

}

type AlarmRobot struct {

Key string

}

type Pulsar struct {

Url string

}

//2.所有配置相关的全局变量在这里声明好

var PgsqlSetting = &Pgsql{}

var ImageSetting = &Image{}

var RedisSetting = &Redis{}

var MqttSetting = &Mqtt{}

var FaceSetting = &Face{}

var TencentSetting = &TenCent{}

var GmsSetting = &Gms{}

var CommunitySetting = &Community{}

var HealthCodeSetting = &HealthCode{}

var DataReportSetting = &DataReport{}

var RongChuangSetting = &RongChuang{}

var AlarmRobotSetting = &AlarmRobot{}

var IotSetting = &Iot{}

var PMDSSetting = &PMDS{}

var CMDSSetting = &CMDS{}

var RcAppSetting = &rclib.RcApp{}

var RcSeverSetting = &rclib.RcServer{}

var RcConfigSetting = &rclib.RcConfig{}

var KafkaSetting = &Kafka{}

var PulsarSetting = &Pulsar{}

var RcPlanishSetting = &RcPlanish{}

var cfg *ini.File

// Setupinitialize the configuration instance

//3.提供main读取配置文件的方法,初始化赋值conf的全局变量

func Setup(env string) {

var err error

  cfg,err =ini.Load(fmt.Sprintf("conf/app.%s.ini",env))

fmt.Println("Setup Config,  Parse File:",fmt.Sprintf("conf/app.%s.ini",env))

if err !=nil {

fmt.Println("setting.Setup, fail to parse 'conf/app.ini': %v",err)

}

mapTo("app",AppSetting)

mapTo("server",ServerSetting)

mapTo("mysql",MysqlSetting)

mapTo("pgsql",PgsqlSetting)

mapTo("redis",RedisSetting)

mapTo("image",ImageSetting)

mapTo("mqtt",MqttSetting)

mapTo("face",FaceSetting)

mapTo("tencent",TencentSetting)

mapTo("kafka",KafkaSetting)

mapTo("pms",PMSetting)

mapTo("gms",GmsSetting)

mapTo("community",CommunitySetting)

mapTo("healthcode",HealthCodeSetting)

mapTo("datareport",DataReportSetting)

mapTo("rongchuang",RongChuangSetting)

mapTo("iot",IotSetting)

mapTo("pmds",PMDSSetting)

mapTo("cmds",CMDSSetting)

mapTo("alarm_robot",AlarmRobotSetting)

mapTo("rcapp",RcAppSetting)

mapTo("rcserver",RcSeverSetting)

mapTo("pulsar",PulsarSetting)

mapTo("rcplanish",RcPlanishSetting)

RcConfigSetting.App = *RcAppSetting

  RcConfigSetting.Server = *RcSeverSetting

  AppSetting.ImageMaxSize =AppSetting.ImageMaxSize *1024 *1024

  ServerSetting.ReadTimeout =ServerSetting.ReadTimeout *time.Second

  ServerSetting.WriteTimeout =ServerSetting.WriteTimeout *time.Second

}

// mapTomap section

func mapTo(section string,v interface{}) {

err :=cfg.Section(section).MapTo(v)

if err !=nil {

fmt.Println("Cfg.MapTo %s err: %v",section,err)

}

}


这样全局都能读出来

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容