Name: sms_bot-api
Host: 127.0.0.1
Port: 8888
Database:
Pkg : "./internal/svc"
DriverName: "MysqL"
DSN: "root:98123456@tcp(192.168.4.240:3306)/qe?charset=utf8mb4&parseTime=true&loc=Asia%2FShanghai"
Logger:
Path: "./tmp/sql.log"
MaxAge: 180
Interval: 2
Redis:
Host: 192.168.4.240:6379
Pass: ""
DB: 0
ExpireTime: 3
go-zero
项目中 svc
目录内容
package svc
import (
"context"
"github.com/go-redis/redis/v8"
_ "github.com/go-sql-driver/MysqL"
"github.com/kotlin2018/mbt"
rotatelogs "github.com/lestrrat-go/file-rotatelogs"
"io"
"log"
"path"
"sms_bot/internal/config"
"time"
)
// 服务依赖项(比如说: 加载配置文件,数据库连接句柄,自定义全局错误信息)
type ServiceContext struct {
Config config.Config
Redis *redis.Client
}
func NewServiceContext(c config.Config) *ServiceContext {
conf := &mbt.Database{
Pkg: c.Database.Pkg,
DriverName: c.Database.DriverName,
DSN: c.Database.DSN,
Logger: &mbt.Logger{
Path: c.Logger.Path,
MaxAge: c.Logger.MaxAge,
Interval: c.Logger.Interval,
Printsql: true,
},
}
mbt.New(conf).Register(initMapper()).SetoutPut(initLogger(c.Logger.Path, c.Logger.MaxAge, c.Logger.Interval)).Run()
client := redis.NewClient(&redis.Options{
Addr: c.Redis.Host,
Password: c.Redis.Pass,
DB: c.Redis.DB,
})
_, err := client.Ping(context.Background()).Result()
if err != nil {
log.Fatalln("请配置redis服务")
}
return &ServiceContext{
Config: c,
Redis: client,
}
}
func initMapper() map[interface{}]interface{} {
h := mbt.H{
&TSmsbotDao: &TSmsbot{}, // sms机器人表
&TTaskDao: &TTask{}, // 任务表
&TTaskTypeDao: &TTaskType{}, // 任务类型表
}
return h
}
func initLogger(logFilePath string, maxAge, interval int) io.Writer {
writer, _ := rotatelogs.New(
path.Join(logFilePath+"-%Y-%m-%d.log"), //拼接成log文件名
rotatelogs.WithLinkName(logFilePath),
rotatelogs.WithMaxAge(time.Duration(maxAge)*time.Hour),
rotatelogs.WithRotationTime(time.Duration(interval)*time.Hour),
)
return writer
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。