微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

go-zero 配置文件模版(后续写代码直接照抄即可)

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] 举报,一经查实,本站将立刻删除。

相关推荐