# 配置
## 介紹
orange 框架中采用 TOML 格式配置,TOML 被設計成可以無歧義地被映射為哈希表,從而可以很容易地被解析成各種語言中的數據結構。
## 規范
* TOML 文檔是大小寫敏感的;
* TOML 文檔必須是一個有效的?`UTF-8`?編碼的?`Unicode`?文檔;
* 空白符只能是制表符(`0x09`)或空格(`0x20`);
* 換行符只能是 LF(`0x0A`)或 CRLF (`0x0D0A`)。
## 默認配置說明
```
[app]
name = "orange" #應用名稱
key = "be5356716b937d94eae948f102a2074f" #應用密鑰,用戶cookie,session等加密
httpAddr = "127.0.0.1" #http服務綁定ip
httpPort = 8088 #http服務綁定端口
accessLog = true #是否開啟請求日志(類似nginx的access_log)
accessLogIgnore = ["/"] # 忽略記錄access_log日志的路由,通常用戶排除一些健康檢查產生的日志
maxBody = 2096157 #http服務請求body最大值
csrfVerify = false # 是否開啟csrf校驗
configStatic = false # 靜態配置文件,如果為true則框架不會開啟配置熱加載
pidfile = "./storage/orange.pid" # pid文件存儲位置,程序啟動會生成一個 pid 文件管理 pid 信息
maxWaitSecond = 120 # 進程推出后最大等待時間,框架可對指定執行操作進行等待完成后再推出
[app.logger]
level = "INFO" # 日志級別
type = "text" # 日志類型 'text' 或 ‘json’
path = "" #日志存儲路徑,注意這里是一個目錄地址 空則輸出到控制臺 stdlog
syncInterval = 2 # 日志采用buffer寫入,延時寫入,配置0則實時寫入
[app.session]
isOpen = true #是否開啟session
driver = "cookie" # session存儲驅動 cookie 或 redis
timeout = 1800 #session超時時間 單位:秒
[app.upload]
storage = "./storage/allimg" #默認文件上傳路徑
maxSize = 2096157 #默認文件上傳大小限制,應小于maxBody
ext = ["jpg"] #默認上傳文件格式
[database]
initCap = 2 #數據庫連接池 初始化連接數
maxCap = 5 #數據庫連接池 最大連接數,超過次數后連接則實時生成實時關閉,類似php短鏈接
idleTimeout = 5 # 連接空閑釋放時間
debug = true # 是否開啟debug,可顯示mysql執行的sql語句
[database.mysql]
[database.mysql.default] #mysql配置,可以配置多個,默認名稱default
addr = "192.168.137.100:3306"
username = "root"
password = "123456"
dbname = "weixin"
[database.redis]
[database.redis.default] #redis配置,可以配置多個,默認名稱default
addr = "192.168.137.100:6379"
password = ""
dbnum = 5
```
## 獲取配置
根據框架內置方法可以獲取不同類型格式的配置信息,具體如下所示
```
// 獲取字符類型配置
cfg.GetString("app.name", "default")
// 獲取數字類型配置
cfg.GetInt("app.name", 0)
// 獲取bool類型配置
cfg.GetBool("app.name", 0)
```
上述簡單的配置結構如無法滿足你的使用需求,框架還支持將配置解析到結構體。
```
// 定義一個結構體,結構體名稱別名通過 json 標簽控制
value:= struct {
Name string `json:"name"`
Key string `json:"key"`
}{}
// 將對應的配置項解析到value結構體
cfg.UnmarshalKey("app", &value)
```