diff --git a/QMPlusServer/init/initRouter/initRouter.go b/QMPlusServer/init/initRouter/initRouter.go index 84adb1a340fd9433c7df23fcc050684910645b39..9297d8e99d4a2b21b2f45a503bd79a7a55b5fa8d 100644 --- a/QMPlusServer/init/initRouter/initRouter.go +++ b/QMPlusServer/init/initRouter/initRouter.go @@ -8,6 +8,7 @@ import ( "main/router" ) +//初始化总路由 func InitRouter() *gin.Engine { var Router = gin.Default() Router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) diff --git a/QMPlusServer/init/qmlog/qmlog.go b/QMPlusServer/init/qmlog/qmlog.go new file mode 100644 index 0000000000000000000000000000000000000000..c5dcb84e92148c680e67a84b6f92721c47bc3999 --- /dev/null +++ b/QMPlusServer/init/qmlog/qmlog.go @@ -0,0 +1,36 @@ +package qmlog + +// 日志初始化包 调用qmlog.QMLog.Info 记录日志 24小时切割 日志保存7天 可自行设置 +import ( + "fmt" + rotatelogs "github.com/lestrrat/go-file-rotatelogs" + "github.com/rifflock/lfshook" + "github.com/sirupsen/logrus" + "os" + "time" +) + +var QMLog = logrus.New() + +//禁止logrus的输出 +func InitLog() { + src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend) + if err != nil { + fmt.Println("err", err) + } + QMLog.Out = src + QMLog.SetLevel(logrus.DebugLevel) + apiLogPath := "api.log" + logWriter, err := rotatelogs.New( + apiLogPath+".%Y-%m-%d-%H-%M.log", + rotatelogs.WithLinkName(apiLogPath), // 生成软链,指向最新日志文件 + rotatelogs.WithMaxAge(7*24*time.Hour), // 文件最大保存时间 + rotatelogs.WithRotationTime(24*time.Hour), // 日志切割时间间隔 + ) + writeMap := lfshook.WriterMap{ + logrus.InfoLevel: logWriter, + logrus.FatalLevel: logWriter, + } + lfHook := lfshook.NewHook(writeMap, &logrus.JSONFormatter{}) + QMLog.AddHook(lfHook) +} diff --git a/QMPlusServer/init/mysql/initMysql.go b/QMPlusServer/init/qmsql/initMysql.go similarity index 88% rename from QMPlusServer/init/mysql/initMysql.go rename to QMPlusServer/init/qmsql/initMysql.go index b2dabedfff269f49f5ec150558d0a008eca231ff..05d85febd70a194aa579ae2e312316ceb4bed09b 100644 --- a/QMPlusServer/init/mysql/initMysql.go +++ b/QMPlusServer/init/qmsql/initMysql.go @@ -1,4 +1,4 @@ -package mysql +package qmsql import ( "github.com/jinzhu/gorm" @@ -9,6 +9,7 @@ import ( var DEFAULTDB *gorm.DB +//初始化数据库并产生数据库全局变量 func InitMysql(admin config.Admin) *gorm.DB { if db, err := gorm.Open("mysql", admin.UserName+":"+admin.Password+"@("+admin.Path+")/"+admin.Dbname+"?"+admin.Config); err != nil { log.Printf("DEFAULTDB数据库启动异常%S", err) diff --git a/QMPlusServer/init/registTable/registTable.go b/QMPlusServer/init/registTable/registTable.go index c54debefff2835b479a72ed94282a33c6ce89e13..7ffaa83f8d70ec2a7ba7d3c0c6521595585fa946 100644 --- a/QMPlusServer/init/registTable/registTable.go +++ b/QMPlusServer/init/registTable/registTable.go @@ -5,6 +5,7 @@ import ( "main/model/dbModel" ) +//注册数据库表专用 func RegistTable(db *gorm.DB) { db.AutoMigrate(dbModel.User{}) } diff --git a/QMPlusServer/main.go b/QMPlusServer/main.go index ace5e798ee96bd5ced3c111d7a2de91d1d078458..2b744763ba5140de88b31e935cf5f3f2d849ad3b 100644 --- a/QMPlusServer/main.go +++ b/QMPlusServer/main.go @@ -3,17 +3,19 @@ package main import ( "main/config" "main/init/initRouter" - "main/init/mysql" + "main/init/qmlog" + "main/init/qmsql" "main/init/registTable" "net/http" "time" ) func main() { - - registTable.RegistTable(mysql.InitMysql(config.Dbconfig.Admin)) - defer mysql.DEFAULTDB.Close() + qmlog.InitLog() + registTable.RegistTable(qmsql.InitMysql(config.Dbconfig.Admin)) + defer qmsql.DEFAULTDB.Close() Router := initRouter.InitRouter() + //qmlog.QMLog.Info("服务器开启") // 日志测试代码 s := &http.Server{ Addr: ":8888", Handler: Router, diff --git a/QMPlusServer/middleware/logger.go b/QMPlusServer/middleware/logger.go index a012ad848c14155986b39aa83ed445e44bcb05e5..6849ff8bb1a8fc6db1fb5f48a7abe6e9b5e7a426 100644 --- a/QMPlusServer/middleware/logger.go +++ b/QMPlusServer/middleware/logger.go @@ -1,38 +1,12 @@ package middleware import ( - "fmt" "github.com/gin-gonic/gin" - "github.com/lestrrat/go-file-rotatelogs" - "github.com/rifflock/lfshook" - "github.com/sirupsen/logrus" - "os" + "main/init/qmlog" "time" ) func Logger() gin.HandlerFunc { - logClient := logrus.New() - //禁止logrus的输出 - src, err := os.OpenFile(os.DevNull, os.O_APPEND|os.O_WRONLY, os.ModeAppend) - if err != nil { - fmt.Println("err", err) - } - logClient.Out = src - logClient.SetLevel(logrus.DebugLevel) - apiLogPath := "api.log" - logWriter, err := rotatelogs.New( - apiLogPath+".%Y-%m-%d-%H-%M.log", - rotatelogs.WithLinkName(apiLogPath), // 生成软链,指向最新日志文件 - rotatelogs.WithMaxAge(7*24*time.Hour), // 文件最大保存时间 - rotatelogs.WithRotationTime(24*time.Hour), // 日志切割时间间隔 - ) - writeMap := lfshook.WriterMap{ - logrus.InfoLevel: logWriter, - logrus.FatalLevel: logWriter, - } - lfHook := lfshook.NewHook(writeMap, &logrus.JSONFormatter{}) - logClient.AddHook(lfHook) - return func(c *gin.Context) { // 开始时间 start := time.Now() @@ -50,7 +24,7 @@ func Logger() gin.HandlerFunc { buf := make([]byte, 1024) n, _ := c.Request.Body.Read(buf) requestParams := buf[0:n] - logClient.Infof("| %3d | %13v | %15s | %s %s |%s|", + qmlog.QMLog.Infof("| %3d | %13v | %15s | %s %s |%s|", statusCode, latency, clientIP, diff --git a/QMPlusServer/model/dbModel/user.go b/QMPlusServer/model/dbModel/user.go index d94111a82b20df42c6489e6f4d5d65dac6a92eea..ed7cb38f2ff01a926d09e02d718830cc0ae20e0a 100644 --- a/QMPlusServer/model/dbModel/user.go +++ b/QMPlusServer/model/dbModel/user.go @@ -4,7 +4,7 @@ import ( "github.com/jinzhu/gorm" "github.com/pkg/errors" uuid "github.com/satori/go.uuid" - "main/init/mysql" + "main/init/qmsql" "main/tools" ) @@ -27,7 +27,7 @@ type User struct { func (u *User) Regist() (err error, userInter *User) { var user User //判断用户名是否注册 - findErr := mysql.DEFAULTDB.Where("user_name = ?", u.UserName).First(&user).Error + findErr := qmsql.DEFAULTDB.Where("user_name = ?", u.UserName).First(&user).Error //err为nil表明读取到了 不能注册 if findErr == nil { return errors.New("用户名已注册"), nil @@ -35,7 +35,7 @@ func (u *User) Regist() (err error, userInter *User) { // 否则 附加uuid 密码md5简单加密 注册 u.PassWord = tools.MD5V(u.PassWord) u.UUID = uuid.NewV4() - err = mysql.DEFAULTDB.Create(u).Error + err = qmsql.DEFAULTDB.Create(u).Error } return err, u } @@ -45,13 +45,13 @@ func (u *User) ChangePassWord(newPassWord string) (err error, userInter *User) { var user User //后期修改jwt+password模式 u.PassWord = tools.MD5V(u.PassWord) - err = mysql.DEFAULTDB.Where("user_name = ? AND pass_word = ?", u.UserName, u.PassWord).First(&user).Update("pass_word", tools.MD5V(newPassWord)).Error + err = qmsql.DEFAULTDB.Where("user_name = ? AND pass_word = ?", u.UserName, u.PassWord).First(&user).Update("pass_word", tools.MD5V(newPassWord)).Error return err, u } //用户更新接口 func (u *User) UpdataUser() (err error, userInter *User) { - err = mysql.DEFAULTDB.Create(u).Error + err = qmsql.DEFAULTDB.Create(u).Error return err, u } @@ -59,6 +59,6 @@ func (u *User) UpdataUser() (err error, userInter *User) { func (u *User) Login() (err error, userInter *User) { var user User u.PassWord = tools.MD5V(u.PassWord) - err = mysql.DEFAULTDB.Where("user_name = ? AND pass_word = ?", u.UserName, u.PassWord).First(&user).Error + err = qmsql.DEFAULTDB.Where("user_name = ? AND pass_word = ?", u.UserName, u.PassWord).First(&user).Error return err, &user }