ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 配置 ## 介绍 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) ```