Golang WEB framework
go get github.com/whileW/core-go
- 配置
- grpc
- httpx:req、resp封装,自动保存请求日志
- log:日志
- orm:基于配置自动初始化orm实例
code: conf/*
使用:
获取系统内置配置:conf.GetConf().SysSetting.Env
获取自定义配置: conf.GetStringd("配置名称","默认值")
获取嵌套结构配置:conf.GetChildd("配置名称").GetStringd("配置名称","默认值")
code: conf/env.go
配置项:
ENV: 环境(debug/release)
HTTPADDR: http服务端口
RPCADDR: rpc服务端口
HOST: 本机ip
SYSTEMNAME: 系统名称
CONFFROM: 从哪里读取配置(file\nacos)[默认为file]
使用:
conf.GetConf().SysSetting.Env
code: conf/file.go
可选配置项(通过环境变量配置):
CFNAME: 配置文件名称
CFTYPE: 配置文件类型(暂只支持yaml类型的配置文件)
默认为:config.yaml
code: conf/nacos.go
可选配置项(通过环境变量配置):
NACOSADDR: nacos的地址--不包括端口(端口默认8848)
NACOSDATAID: nacos中的dataid(建议程序名称) --如果不配置则采用SYSTEMNAME
ENV: 环境(nacos中的group)
部署nacos参考:
github.com/whileW/core-go/conf/nacos-docker-master
https://nacos.io/zh-cn/docs/quick-start-docker.html
https://github.com/nacos-group/nacos-docker
code: grpc/traefik.go
针对小型应用降低grpc使用成本
--利用traefik网关完成类似服务发现、服务注册
配置
traefik:traefik网关地址(127.0.0.1:80)
使用
代码:
import (
grpc2 "gitee.com/jiransoft/user/pkg/grpc"
"google.golang.org/grpc"
)
const GrpcName = "user" //需要调用的grpc名称
conn, err := grpc.Dial(grpc2.GetTraefikTarget(GrpcName), grpc.WithInsecure(),grpc.WithResolvers(&grpc2.TraefikBuilder{}))
网关配置:
[http]
[http.routers]
[http.routers.quotation_grpc]
service = "product_grpc"
rule = "Host(`grpc_quotation`)"
[http.services]
[http.services.product_grpc]
[http.services.product_grpc.loadBalancer]
[[http.services.product_grpc.loadBalancer.servers]]
url = "h2c://127.0.0.1:30011"
code: orm/*
会自动根据配置生成gorm实例
使用:
orm.GetOrm().Get(DBName)
配置格式:
DB:
MYSQL:
process:
username: root
password: root
path: 127.0.0.1:3306
db_name: process_test
config: charset=utf8&parseTime=True&loc=Local
max-idle-conns: 50
max-open-conns: 50
log_mode: true
user:
username: root
password: root
path: 127.0.0.1:3306
db_name: process_test
code: log/*
if ENV == "debug"
开启控制台日志输出
else
关闭控制台日志输出
配置使用loki保存日志
增加配置:
{"log":{"loki":true}}
{"loki":{"addr":"http://127.0.0.1:3100"}}
file输出配置--暂未实现
使用:
log.GetLoger().Errorw("msg",arg...)