From b77f4b5a1be43c409c16d8bb37cd1bcaf4e0da7e Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Fri, 19 Jun 2020 22:09:49 +0800 Subject: [PATCH] feat: add global & logger --- apis/system/sysuser.go | 2 +- cmd/api/server.go | 22 ++++---- cmd/cobra.go | 2 +- cmd/migrate/server.go | 4 +- config/settings.yml | 1 + database/initialize.go | 11 ++++ database/interface.go | 8 +++ database/mysql.go | 92 ++++++++++++------------------- database/sqlite3.go | 8 +++ global/logger.go | 14 +++++ global/orm/db.go | 9 ++++ handler/auth.go | 2 +- handler/nofound.go | 2 +- middleware/logger.go | 107 +++++++++++++++++++------------------ middleware/permission.go | 2 +- models/config.go | 2 +- models/dept.go | 2 +- models/dictData.go | 2 +- models/dictType.go | 2 +- models/initdb.go | 2 +- models/login.go | 2 +- models/loginlog.go | 2 +- models/menu.go | 2 +- models/operlog.go | 2 +- models/post.go | 2 +- models/role.go | 2 +- models/roledept.go | 2 +- models/rolemenu.go | 2 +- models/sysuser.go | 4 +- models/tools/dbcolumns.go | 2 +- models/tools/dbtables.go | 2 +- models/tools/syscolumns.go | 2 +- models/tools/systables.go | 2 +- pkg/casbin/mycasbin.go | 11 ++-- pkg/cronjob/testjob.go | 2 +- pkg/logger/logger.go | 14 +---- template/model.go.template | 2 +- test/model.go.template | 2 +- tools/config/config.go | 2 +- tools/config/log.go | 2 + tools/logger.go | 18 ++++--- tools/user.go | 2 +- tools/utils.go | 2 +- 43 files changed, 200 insertions(+), 181 deletions(-) create mode 100644 database/initialize.go create mode 100644 database/interface.go create mode 100644 global/logger.go create mode 100644 global/orm/db.go diff --git a/apis/system/sysuser.go b/apis/system/sysuser.go index 147fe14e..e11c271a 100644 --- a/apis/system/sysuser.go +++ b/apis/system/sysuser.go @@ -7,7 +7,7 @@ import ( "go-admin/models" "go-admin/tools" "go-admin/tools/app" - "log" + log "github.com/sirupsen/logrus" ) // @Summary 列表数据 diff --git a/cmd/api/server.go b/cmd/api/server.go index 40257402..69ed0d86 100644 --- a/cmd/api/server.go +++ b/cmd/api/server.go @@ -4,22 +4,21 @@ import ( "context" "fmt" "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/viper" "go-admin/database" + "go-admin/global/orm" "go-admin/router" "go-admin/tools" config2 "go-admin/tools/config" "io/ioutil" - "log" "net/http" "os" "os/signal" "time" ) - - var ( config string port string @@ -46,7 +45,7 @@ func init() { func usage() { usageStr := `starting api server` - fmt.Printf("%s\n", usageStr) + log.Printf("%s\n", usageStr) } func setup() { @@ -58,7 +57,6 @@ func setup() { //3. 初始化数据库链接 database.Setup() - } func run() error { @@ -71,12 +69,11 @@ func run() error { r := router.InitRouter() - defer database.Eloquent.Close() + defer orm.Eloquent.Close() if port != "" { config2.SetConfig(config, "settings.application.port", port) } - srv := &http.Server{ Addr: config2.ApplicationConfig.Host + ":" + config2.ApplicationConfig.Port, Handler: r, @@ -95,16 +92,15 @@ func run() error { } }() content, _ := ioutil.ReadFile("./static/go-admin.txt") - log.Println(string(content)) - log.Println("Server Run http://127.0.0.1:" + config2.ApplicationConfig.Port + "/") - log.Println("Swagger URL http://127.0.0.1:" + config2.ApplicationConfig.Port + "/swagger/index.html") - - log.Println("Enter Control + C Shutdown Server") + fmt.Println(string(content)) + fmt.Printf("%s Server Run http://127.0.0.1:%s/ \r\n", tools.GetCurrntTimeStr(), config2.ApplicationConfig.Port) + fmt.Printf("%s Swagger URL http://127.0.0.1:%s/swagger/index.html \r\n", tools.GetCurrntTimeStr(), config2.ApplicationConfig.Port) + fmt.Printf("%s Enter Control + C Shutdown Server \r\n", tools.GetCurrntTimeStr()) // 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间) quit := make(chan os.Signal) signal.Notify(quit, os.Interrupt) <-quit - log.Println("Shutdown Server ...") + fmt.Printf("%s Shutdown Server ... \r\n", tools.GetCurrntTimeStr()) ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() diff --git a/cmd/cobra.go b/cmd/cobra.go index 5e487a98..e9050104 100644 --- a/cmd/cobra.go +++ b/cmd/cobra.go @@ -5,7 +5,7 @@ import ( "github.com/spf13/cobra" "go-admin/cmd/api" "go-admin/cmd/migrate" - "log" + log "github.com/sirupsen/logrus" "os" ) diff --git a/cmd/migrate/server.go b/cmd/migrate/server.go index ac5968e8..8cae163c 100644 --- a/cmd/migrate/server.go +++ b/cmd/migrate/server.go @@ -2,13 +2,13 @@ package migrate import ( "fmt" + log "github.com/sirupsen/logrus" "go-admin/database" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/models" "go-admin/models/gorm" "go-admin/tools" config2 "go-admin/tools/config" - "log" "github.com/spf13/cobra" ) diff --git a/config/settings.yml b/config/settings.yml index d897d401..dc6ade5f 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -12,6 +12,7 @@ settings: key: keystring pem: temp/pem.pem log: + operdb: false dir: temp/logs jwt: secret: go-admin diff --git a/database/initialize.go b/database/initialize.go new file mode 100644 index 00000000..8aba4b69 --- /dev/null +++ b/database/initialize.go @@ -0,0 +1,11 @@ +package database + +import "go-admin/tools/config" + +func Setup() { + dbType := config.DatabaseConfig.Dbtype + if dbType == "mysql" { + var db = new(Mysql) + db.Setup() + } +} diff --git a/database/interface.go b/database/interface.go new file mode 100644 index 00000000..d4ddcad2 --- /dev/null +++ b/database/interface.go @@ -0,0 +1,8 @@ +package database + +import "github.com/jinzhu/gorm" + +type Database interface { + Open(dbType string, conn string) (db *gorm.DB, err error) + GetConnect() string +} diff --git a/database/mysql.go b/database/mysql.go index e073b85b..28856c83 100644 --- a/database/mysql.go +++ b/database/mysql.go @@ -4,24 +4,52 @@ import ( "bytes" _ "github.com/go-sql-driver/mysql" //加载mysql "github.com/jinzhu/gorm" + log "github.com/sirupsen/logrus" + "go-admin/global/orm" "go-admin/tools/config" - - "log" "strconv" ) -var Eloquent *gorm.DB - var ( DbType string Host string Port int - Name string + Name string Username string Password string ) -func Setup() { +func (e *Mysql) Setup() { + + var err error + var db Database + + db = new(Mysql) + orm.MysqlConn = db.GetConnect() + log.Info(orm.MysqlConn) + orm.Eloquent, err = db.Open(DbType, orm.MysqlConn) + + if err != nil { + log.Fatalf("%s connect error %v", DbType, err) + } else { + log.Printf("%s connect success!", DbType) + } + + if orm.Eloquent.Error != nil { + log.Fatalf("database error %v", orm.Eloquent.Error) + } + + orm.Eloquent.LogMode(true) +} + +type Mysql struct { +} + +func (e *Mysql) Open(dbType string, conn string) (db *gorm.DB, err error) { + return gorm.Open(dbType, conn) +} + +func (e *Mysql) GetConnect() string { DbType = config.DatabaseConfig.Dbtype Host = config.DatabaseConfig.Host @@ -30,38 +58,6 @@ func Setup() { Username = config.DatabaseConfig.Username Password = config.DatabaseConfig.Password - if DbType != "mysql" { - log.Println("db type unknow") - } - var err error - - conn := GetMysqlConnect() - - log.Println(conn) - - var db Database - if DbType == "mysql" { - db = new(Mysql) - Eloquent, err = db.Open(DbType, conn) - - } else { - panic("db type unknow") - } - if err != nil { - log.Fatalf("%s connect error %v", DbType, err) - } else { - log.Printf("%s connect success!", DbType) - } - - - if Eloquent.Error != nil { - log.Fatalf("database error %v", Eloquent.Error) - } - - Eloquent.LogMode(true) -} - -func GetMysqlConnect() string { var conn bytes.Buffer conn.WriteString(Username) conn.WriteString(":") @@ -76,23 +72,3 @@ func GetMysqlConnect() string { conn.WriteString("?charset=utf8&parseTime=True&loc=Local&timeout=1000ms") return conn.String() } - -type Database interface { - Open(dbType string, conn string) (db *gorm.DB, err error) -} - -type Mysql struct { -} - -func (*Mysql) Open(dbType string, conn string) (db *gorm.DB, err error) { - eloquent, err := gorm.Open(dbType, conn) - return eloquent, err -} - -type SqlLite struct { -} - -func (*SqlLite) Open(dbType string, conn string) (db *gorm.DB, err error) { - eloquent, err := gorm.Open(dbType, conn) - return eloquent, err -} diff --git a/database/sqlite3.go b/database/sqlite3.go index 16835513..af3e9683 100644 --- a/database/sqlite3.go +++ b/database/sqlite3.go @@ -5,3 +5,11 @@ package database import ( _ "github.com/jinzhu/gorm/dialects/sqlite" ) + +type SqlLite struct { +} + +func (*SqlLite) Open(dbType string, conn string) (db *gorm.DB, err error) { + eloquent, err := gorm.Open(dbType, conn) + return eloquent, err +} diff --git a/global/logger.go b/global/logger.go new file mode 100644 index 00000000..f5ec10c6 --- /dev/null +++ b/global/logger.go @@ -0,0 +1,14 @@ +package global + +import ( + "github.com/sirupsen/logrus" +) + +var RequestLogger = &logrus.Entry{} + + + +func init() { + // TODO: requestLogger log format + // RequestLogger = logrus.WithFields(logrus.Fields{"request_id": request_id, "user_ip": user_ip}) +} \ No newline at end of file diff --git a/global/orm/db.go b/global/orm/db.go new file mode 100644 index 00000000..e4158fe0 --- /dev/null +++ b/global/orm/db.go @@ -0,0 +1,9 @@ +package orm + +import ( + "github.com/jinzhu/gorm" +) + +var Eloquent *gorm.DB +var MysqlConn string + diff --git a/handler/auth.go b/handler/auth.go index ade8f7a8..4cedb1e0 100644 --- a/handler/auth.go +++ b/handler/auth.go @@ -7,7 +7,7 @@ import ( "go-admin/models" jwt "go-admin/pkg/jwtauth" "go-admin/tools" - "log" + log "github.com/sirupsen/logrus" "net/http" ) diff --git a/handler/nofound.go b/handler/nofound.go index 093cd28a..a2c7570c 100644 --- a/handler/nofound.go +++ b/handler/nofound.go @@ -3,7 +3,7 @@ package handler import ( "github.com/gin-gonic/gin" jwt "go-admin/pkg/jwtauth" - "log" + log "github.com/sirupsen/logrus" "net/http" ) diff --git a/middleware/logger.go b/middleware/logger.go index fc2f0b07..39d2ede8 100644 --- a/middleware/logger.go +++ b/middleware/logger.go @@ -2,16 +2,14 @@ package middleware import ( "github.com/gin-gonic/gin" - "github.com/sirupsen/logrus" + log "github.com/sirupsen/logrus" "go-admin/models" "go-admin/tools" + config2 "go-admin/tools/config" "strings" "time" ) -//实例化 -var logger = logrus.New() - // 日志记录到文件 func LoggerToFile() gin.HandlerFunc { @@ -41,9 +39,8 @@ func LoggerToFile() gin.HandlerFunc { clientIP := c.ClientIP() // 日志格式 - logger.Infof("%s [%s] %3d %13v %15s %s %s \r\n", + log.Infof(" %s %3d %13v %15s %s %s \r\n", startTime.Format("2006-01-02 15:04:05.9999"), - strings.ToUpper(logger.Level.String()), statusCode, latencyTime, clientIP, @@ -51,52 +48,58 @@ func LoggerToFile() gin.HandlerFunc { reqUri, ) - if c.Request.Method != "GET" && c.Request.Method != "OPTIONS" { - menu := models.Menu{} - menu.Path = reqUri - menu.Action = reqMethod - menuList, _ := menu.Get() - sysOperLog := models.SysOperLog{} - sysOperLog.OperIp = clientIP - sysOperLog.OperLocation = tools.GetLocation(clientIP) - sysOperLog.Status = tools.IntToString(statusCode) - sysOperLog.OperName = tools.GetUserName(c) - sysOperLog.RequestMethod = c.Request.Method - sysOperLog.OperUrl = reqUri - if reqUri == "/login" { - sysOperLog.BusinessType = "10" - sysOperLog.Title = "用户登录" - sysOperLog.OperName = "-" - } else if strings.Contains(reqUri, "/api/v1/logout") { - sysOperLog.BusinessType = "11" - } else if strings.Contains(reqUri, "/api/v1/getCaptcha") { - sysOperLog.BusinessType = "12" - sysOperLog.Title = "验证码" - } else { - if reqMethod == "POST" { - sysOperLog.BusinessType = "1" - } else if reqMethod == "PUT" { - sysOperLog.BusinessType = "2" - } else if reqMethod == "DELETE" { - sysOperLog.BusinessType = "3" - } - } - sysOperLog.Method = reqMethod - if len(menuList) > 0 { - sysOperLog.Title = menuList[0].Title - } - b, _ := c.Get("body") - sysOperLog.OperParam, _ = tools.StructToJsonStr(b) - sysOperLog.CreateBy = tools.GetUserName(c) - sysOperLog.OperTime = tools.GetCurrntTime() - sysOperLog.LatencyTime = (latencyTime).String() - sysOperLog.UserAgent = c.Request.UserAgent() - if c.Err() == nil { - sysOperLog.Status = "0" - } else { - sysOperLog.Status = "1" - } - _, _ = sysOperLog.Create() + if c.Request.Method != "GET" && c.Request.Method != "OPTIONS" && config2.LogConfig.Operdb { + SetDBOperLog(c, clientIP, statusCode, reqUri, reqMethod, latencyTime) } } } + +// 写入操作日志表 +// 该方法后续即将弃用 +func SetDBOperLog(c *gin.Context, clientIP string, statusCode int, reqUri string, reqMethod string, latencyTime time.Duration) { + menu := models.Menu{} + menu.Path = reqUri + menu.Action = reqMethod + menuList, _ := menu.Get() + sysOperLog := models.SysOperLog{} + sysOperLog.OperIp = clientIP + sysOperLog.OperLocation = tools.GetLocation(clientIP) + sysOperLog.Status = tools.IntToString(statusCode) + sysOperLog.OperName = tools.GetUserName(c) + sysOperLog.RequestMethod = c.Request.Method + sysOperLog.OperUrl = reqUri + if reqUri == "/login" { + sysOperLog.BusinessType = "10" + sysOperLog.Title = "用户登录" + sysOperLog.OperName = "-" + } else if strings.Contains(reqUri, "/api/v1/logout") { + sysOperLog.BusinessType = "11" + } else if strings.Contains(reqUri, "/api/v1/getCaptcha") { + sysOperLog.BusinessType = "12" + sysOperLog.Title = "验证码" + } else { + if reqMethod == "POST" { + sysOperLog.BusinessType = "1" + } else if reqMethod == "PUT" { + sysOperLog.BusinessType = "2" + } else if reqMethod == "DELETE" { + sysOperLog.BusinessType = "3" + } + } + sysOperLog.Method = reqMethod + if len(menuList) > 0 { + sysOperLog.Title = menuList[0].Title + } + b, _ := c.Get("body") + sysOperLog.OperParam, _ = tools.StructToJsonStr(b) + sysOperLog.CreateBy = tools.GetUserName(c) + sysOperLog.OperTime = tools.GetCurrntTime() + sysOperLog.LatencyTime = (latencyTime).String() + sysOperLog.UserAgent = c.Request.UserAgent() + if c.Err() == nil { + sysOperLog.Status = "0" + } else { + sysOperLog.Status = "1" + } + _, _ = sysOperLog.Create() +} diff --git a/middleware/permission.go b/middleware/permission.go index cf91ca89..157360ab 100644 --- a/middleware/permission.go +++ b/middleware/permission.go @@ -6,7 +6,7 @@ import ( "go-admin/pkg/jwtauth" _ "go-admin/pkg/jwtauth" "go-admin/tools" - "log" + log "github.com/sirupsen/logrus" "net/http" ) diff --git a/models/config.go b/models/config.go index 2e1858d2..b63082e3 100644 --- a/models/config.go +++ b/models/config.go @@ -2,7 +2,7 @@ package models import ( "errors" - orm "go-admin/database" + orm "go-admin/global/orm" "go-admin/tools" _ "time" ) diff --git a/models/dept.go b/models/dept.go index 1269da31..6703e4ec 100644 --- a/models/dept.go +++ b/models/dept.go @@ -2,7 +2,7 @@ package models import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" _ "time" ) diff --git a/models/dictData.go b/models/dictData.go index e367e3de..30af594b 100644 --- a/models/dictData.go +++ b/models/dictData.go @@ -2,7 +2,7 @@ package models import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/dictType.go b/models/dictType.go index 0ef73ca6..2d546a69 100644 --- a/models/dictType.go +++ b/models/dictType.go @@ -2,7 +2,7 @@ package models import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/initdb.go b/models/initdb.go index 81123c9e..88d403c8 100644 --- a/models/initdb.go +++ b/models/initdb.go @@ -2,7 +2,7 @@ package models import ( "fmt" - orm "go-admin/database" + "go-admin/global/orm" config2 "go-admin/tools/config" "io/ioutil" "strings" diff --git a/models/login.go b/models/login.go index 4a6762da..db413197 100644 --- a/models/login.go +++ b/models/login.go @@ -1,7 +1,7 @@ package models import ( - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/loginlog.go b/models/loginlog.go index 702c6444..96186936 100644 --- a/models/loginlog.go +++ b/models/loginlog.go @@ -1,7 +1,7 @@ package models import ( - orm "go-admin/database" + "go-admin/global/orm" "time" ) diff --git a/models/menu.go b/models/menu.go index 7ab7b043..49ec4799 100644 --- a/models/menu.go +++ b/models/menu.go @@ -2,7 +2,7 @@ package models import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/operlog.go b/models/operlog.go index ae8c5933..eca8f4f5 100644 --- a/models/operlog.go +++ b/models/operlog.go @@ -1,7 +1,7 @@ package models import ( - orm "go-admin/database" + "go-admin/global/orm" "time" ) diff --git a/models/post.go b/models/post.go index fc6d7555..c6226fac 100644 --- a/models/post.go +++ b/models/post.go @@ -1,7 +1,7 @@ package models import ( - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/role.go b/models/role.go index 9cda2d94..68f6cff9 100644 --- a/models/role.go +++ b/models/role.go @@ -2,7 +2,7 @@ package models import ( "github.com/pkg/errors" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/roledept.go b/models/roledept.go index 3c00da39..9088041d 100644 --- a/models/roledept.go +++ b/models/roledept.go @@ -2,7 +2,7 @@ package models import ( "fmt" - orm "go-admin/database" + "go-admin/global/orm" ) //sys_role_dept diff --git a/models/rolemenu.go b/models/rolemenu.go index 7d7c010b..2cb4a893 100644 --- a/models/rolemenu.go +++ b/models/rolemenu.go @@ -2,7 +2,7 @@ package models import ( "fmt" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" ) diff --git a/models/sysuser.go b/models/sysuser.go index 423d855d..7947fdde 100644 --- a/models/sysuser.go +++ b/models/sysuser.go @@ -2,10 +2,10 @@ package models import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" "go-admin/tools" "golang.org/x/crypto/bcrypt" - "log" + log "github.com/sirupsen/logrus" "strings" ) diff --git a/models/tools/dbcolumns.go b/models/tools/dbcolumns.go index aae9f50d..de95e461 100644 --- a/models/tools/dbcolumns.go +++ b/models/tools/dbcolumns.go @@ -2,7 +2,7 @@ package tools import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" config2 "go-admin/tools/config" ) diff --git a/models/tools/dbtables.go b/models/tools/dbtables.go index bd2fea17..aaf7ceeb 100644 --- a/models/tools/dbtables.go +++ b/models/tools/dbtables.go @@ -2,7 +2,7 @@ package tools import ( "errors" - orm "go-admin/database" + "go-admin/global/orm" config2 "go-admin/tools/config" ) diff --git a/models/tools/syscolumns.go b/models/tools/syscolumns.go index 1e3721c8..f58b2f72 100644 --- a/models/tools/syscolumns.go +++ b/models/tools/syscolumns.go @@ -1,7 +1,7 @@ package tools import ( - orm "go-admin/database" + "go-admin/global/orm" "go-admin/models" ) diff --git a/models/tools/systables.go b/models/tools/systables.go index a88b4a11..07aa32fb 100644 --- a/models/tools/systables.go +++ b/models/tools/systables.go @@ -1,7 +1,7 @@ package tools import ( - orm "go-admin/database" + "go-admin/global/orm" "go-admin/models" ) diff --git a/pkg/casbin/mycasbin.go b/pkg/casbin/mycasbin.go index 23facb77..9db87b51 100644 --- a/pkg/casbin/mycasbin.go +++ b/pkg/casbin/mycasbin.go @@ -1,22 +1,19 @@ package mycasbin import ( - "fmt" "github.com/casbin/casbin/v2" gormadapter "github.com/casbin/gorm-adapter/v2" "github.com/go-kit/kit/endpoint" _ "github.com/go-sql-driver/mysql" - "go-admin/database" + log "github.com/sirupsen/logrus" + "go-admin/global/orm" "go-admin/tools/config" ) var Em endpoint.Middleware func Casbin() (*casbin.Enforcer, error) { - conn := database.GetMysqlConnect() - if config.DatabaseConfig.Dbtype == "sqlite3" { - conn = config.DatabaseConfig.Host - } + conn := orm.MysqlConn Apter, err := gormadapter.NewAdapter(config.DatabaseConfig.Dbtype, conn, true) if err != nil { return nil, err @@ -28,7 +25,7 @@ func Casbin() (*casbin.Enforcer, error) { if err := e.LoadPolicy(); err == nil { return e, err } else { - fmt.Printf("casbin rbac_model or policy init error, message: %v \r\n", err.Error()) + log.Printf("casbin rbac_model or policy init error, message: %v \r\n", err.Error()) return nil, err } } diff --git a/pkg/cronjob/testjob.go b/pkg/cronjob/testjob.go index 9f490d04..f6bdb27f 100644 --- a/pkg/cronjob/testjob.go +++ b/pkg/cronjob/testjob.go @@ -2,7 +2,7 @@ package cronjob import ( "github.com/robfig/cron/v3" - "log" + log "github.com/sirupsen/logrus" ) func TestJob(c *cron.Cron) { diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 98df35e3..4b275856 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -1,9 +1,7 @@ package logger import ( - "io" - "log" - "os" + log "github.com/sirupsen/logrus" ) var ( @@ -12,14 +10,4 @@ var ( Error * log.Logger ) -func init(){ - errFile,err:=os.OpenFile("errors.log",os.O_CREATE|os.O_WRONLY|os.O_APPEND,0666) - if err!=nil{ - log.Fatalln("打开日志文件失败:",err) - } - Info = log.New(os.Stdout,"Info:",log.Ldate | log.Ltime | log.Lshortfile) - Warning = log.New(os.Stdout,"Warning:",log.Ldate | log.Ltime | log.Lshortfile) - Error = log.New(io.MultiWriter(os.Stderr,errFile),"Error:",log.Ldate | log.Ltime | log.Lshortfile) - -} diff --git a/template/model.go.template b/template/model.go.template index 8df3a98c..f7f2eba5 100644 --- a/template/model.go.template +++ b/template/model.go.template @@ -1,7 +1,7 @@ package models import ( -orm "go-admin/database" +"go-admin/global/orm" "go-admin/tools" _ "time" ) diff --git a/test/model.go.template b/test/model.go.template index b945eb13..6a498152 100644 --- a/test/model.go.template +++ b/test/model.go.template @@ -1,7 +1,7 @@ package models import ( - orm "go-admin/database" + "go-admin/global/orm" "go-admin/utils" "time" ) diff --git a/tools/config/config.go b/tools/config/config.go index e0382837..ce50784e 100644 --- a/tools/config/config.go +++ b/tools/config/config.go @@ -2,9 +2,9 @@ package config import ( "fmt" + log "github.com/sirupsen/logrus" "github.com/spf13/viper" "io/ioutil" - "log" "os" "strings" ) diff --git a/tools/config/log.go b/tools/config/log.go index bf94e67c..cc537e58 100644 --- a/tools/config/log.go +++ b/tools/config/log.go @@ -4,11 +4,13 @@ import "github.com/spf13/viper" type Log struct { Dir string + Operdb bool } func InitLog(cfg *viper.Viper) *Log { return &Log{ Dir: cfg.GetString("dir"), + Operdb: cfg.GetBool("operdb"), } } diff --git a/tools/logger.go b/tools/logger.go index 179bfb82..e6716a2a 100644 --- a/tools/logger.go +++ b/tools/logger.go @@ -3,18 +3,24 @@ package tools import ( "errors" log "github.com/sirupsen/logrus" - "github.com/spf13/viper" + config2 "go-admin/tools/config" "os" "time" ) func InitLogger() { - switch Mode(viper.GetString("settings.application.mode")) { + log.SetFormatter(&log.TextFormatter{FieldMap: log.FieldMap{ + log.FieldKeyTime: "@timestamp", + log.FieldKeyLevel: "@level", + log.FieldKeyMsg: "@message"}}) + + + switch Mode(config2.ApplicationConfig.Mode) { case ModeDev, ModeTest: log.SetOutput(os.Stdout) log.SetLevel(log.TraceLevel) case ModeProd: - file, err := os.OpenFile(viper.GetString("logger.dir")+"/api-"+time.Now().Format("2006-01-02")+".log", os.O_WRONLY|os.O_APPEND|os.O_CREATE|os.O_SYNC, 0600) + file, err := os.OpenFile(config2.LogConfig.Dir+"/api-"+time.Now().Format("2006-01-02")+".log", os.O_WRONLY|os.O_APPEND|os.O_CREATE|os.O_SYNC, 0600) if err != nil { log.Fatalln("log init failed") } @@ -26,7 +32,7 @@ func InitLogger() { } fileWriter := logFileWriter{file, info.Size()} log.SetOutput(&fileWriter) - log.SetLevel(log.ErrorLevel) + log.SetLevel(log.WarnLevel) } log.SetReportCaller(true) @@ -47,9 +53,9 @@ func (p *logFileWriter) Write(data []byte) (n int, err error) { n, e := p.file.Write(data) p.size += int64(n) //每天一个文件 - if p.file.Name() != viper.GetString("logger.dir")+"/api-"+time.Now().Format("2006-01-02")+".log" { + if p.file.Name() != config2.LogConfig.Dir+"/api-"+time.Now().Format("2006-01-02")+".log" { p.file.Close() - p.file, _ = os.OpenFile(viper.GetString("logger.dir")+"/api-"+time.Now().Format("2006-01-02")+".log", os.O_WRONLY|os.O_APPEND|os.O_CREATE|os.O_SYNC, 0600) + p.file, _ = os.OpenFile(config2.LogConfig.Dir+"/api-"+time.Now().Format("2006-01-02")+".log", os.O_WRONLY|os.O_APPEND|os.O_CREATE|os.O_SYNC, 0600) p.size = 0 } return n, e diff --git a/tools/user.go b/tools/user.go index 34101fc7..d6bccc5b 100644 --- a/tools/user.go +++ b/tools/user.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/gin-gonic/gin" jwt "go-admin/pkg/jwtauth" - "log" + log "github.com/sirupsen/logrus" ) func ExtractClaims(c *gin.Context) jwt.MapClaims { diff --git a/tools/utils.go b/tools/utils.go index f53bdc2c..e0489177 100644 --- a/tools/utils.go +++ b/tools/utils.go @@ -1,8 +1,8 @@ package tools import ( + log "github.com/sirupsen/logrus" "golang.org/x/crypto/bcrypt" - "log" "strconv" )