diff --git a/README.md b/README.md index 71f7e350..7cbae6d9 100644 --- a/README.md +++ b/README.md @@ -71,29 +71,27 @@ settings: application: # 项目启动环境 - env: dev - # 当 env:demo 时,GET以外的请求操作提示 - envmsg: "谢谢您的参与,但为了大家更好的体验,所以本次提交就算了吧!" - # 主机ip 或者域名,默认0.0.0.0 - host: 0.0.0.0 - # 是否需要初始化数据库结构以及基本数据;true:需要;false:不需要 - isinit: false - # log存放路径 - logpath: temp/logs/log.log + mode: dev # dev开发环境 test测试环境 prod线上环境;当 mode:demo 时,GET以外的请求操作提示 + demomsg: "谢谢您的参与,但为了大家更好的体验,所以本次提交就算了吧!" + host: 0.0.0.0 # 主机ip 或者域名,默认0.0.0.0 + isinit: false # 是否需要初始化数据库结构以及基本数据;true:需要;false:不需要 # 服务名称 name: go-admin # 服务端口 port: 8000 readtimeout: 1 writertimeout: 2 + log: + # 日志文件存放路径 + dir: temp/logs jwt: # JWT加密字符串 - jwtsecret: go-admin + secret: go-admin # 过期时间单位:秒 timeout: 3600 database: # 数据库名称 - database: dbname + name: dbname # 数据库类型 dbtype: mysql # 数据库地址 @@ -134,7 +132,8 @@ vi ./config/setting.yml (更改isinit和数据库连接) # 启动项目,也可以用IDE进行调试 -./go-admin +./go-admin server -c=config/settings.yml -p=8000 -m=dev +c ``` [在线文档](https://wenjianzhang.github.io/go-admin-site) diff --git a/cmd/api/server.go b/cmd/api/server.go index e4454224..2a7bf0ba 100644 --- a/cmd/api/server.go +++ b/cmd/api/server.go @@ -41,11 +41,6 @@ func init() { StartCmd.PersistentFlags().StringVarP(&config, "config", "c", "config/settings.yml", "Start server with provided configuration file") StartCmd.PersistentFlags().StringVarP(&port, "port", "p", "8000", "Tcp port server listening on") StartCmd.PersistentFlags().StringVarP(&mode, "mode", "m", "dev", "server mode ; eg:dev,test,prod") - //if mode=="dev"{ - // config="config/settings.{dev.}yml" - //}else if mode=="test"{ - // config="config/settings.{test.}yml" - //} } func usage() { @@ -70,32 +65,32 @@ func setup() { func run() error { r := router.InitRouter() - defer database.Eloquent.Close() + defer database.Eloquent.Close() - srv := &http.Server{ - Addr: config2.ApplicationConfig.Host + ":" + config2.ApplicationConfig.Port, - Handler: r, + srv := &http.Server{ + Addr: config2.ApplicationConfig.Host + ":" + config2.ApplicationConfig.Port, + Handler: r, + } + + go func() { + // 服务连接 + if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + log.Fatalf("listen: %s\n", err) } + }() + log.Println("Server Run ", config2.ApplicationConfig.Host+":"+config2.ApplicationConfig.Port) + log.Println("Enter Control + C Shutdown Server") + // 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间) + quit := make(chan os.Signal) + signal.Notify(quit, os.Interrupt) + <-quit + log.Println("Shutdown Server ...") - go func() { - // 服务连接 - if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { - log.Fatalf("listen: %s\n", err) - } - }() - log.Println("Server Run ", config2.ApplicationConfig.Host+":"+config2.ApplicationConfig.Port) - log.Println("Enter Control + C Shutdown Server") - // 等待中断信号以优雅地关闭服务器(设置 5 秒的超时时间) - quit := make(chan os.Signal) - signal.Notify(quit, os.Interrupt) - <-quit - log.Println("Shutdown Server ...") - - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - if err := srv.Shutdown(ctx); err != nil { - log.Fatal("Server Shutdown:", err) - } - log.Println("Server exiting") + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err := srv.Shutdown(ctx); err != nil { + log.Fatal("Server Shutdown:", err) + } + log.Println("Server exiting") return nil } diff --git a/cmd/cobra.go b/cmd/cobra.go index 2973eb21..b6c5f88b 100644 --- a/cmd/cobra.go +++ b/cmd/cobra.go @@ -1,6 +1,7 @@ package cmd import ( + "errors" "github.com/spf13/cobra" "go-admin/cmd/api" "go-admin/cmd/migrate" @@ -14,6 +15,12 @@ var rootCmd = &cobra.Command{ SilenceUsage: true, DisableAutoGenTag: true, Long: `go-admin`, + Args: func(cmd *cobra.Command, args []string) error { + if len(args) < 1 { + return errors.New("requires at least one arg") + } + return nil + }, PersistentPreRunE: func(*cobra.Command, []string) error { return nil }, Run: func(cmd *cobra.Command, args []string) { usageStr := `go-admin 0.0.1` @@ -31,4 +38,4 @@ func Execute() { if err := rootCmd.Execute(); err != nil { os.Exit(-1) } -} \ No newline at end of file +} diff --git a/cmd/migrate/server.go b/cmd/migrate/server.go index f011e4b6..5fe34199 100644 --- a/cmd/migrate/server.go +++ b/cmd/migrate/server.go @@ -2,6 +2,7 @@ package migrate import ( "fmt" + "go-admin/database" orm "go-admin/database" "go-admin/models" "go-admin/models/gorm" @@ -17,7 +18,7 @@ var ( mode string StartCmd = &cobra.Command{ Use: "migrate", - Short: "Migrate about gdb operator", + Short: "migrate from struct to database", Run: func(cmd *cobra.Command, args []string) { run() }, @@ -37,7 +38,7 @@ func run() { //2. 设置日志 tools.InitLogger() //3. 初始化数据库链接 - //dao.Setup() + database.Setup() //4. 数据库迁移 gorm.AutoMigrate(orm.Eloquent) //db := gdb.GetDB() diff --git a/go.mod b/go.mod index 007f442c..74922516 100644 --- a/go.mod +++ b/go.mod @@ -28,6 +28,7 @@ require ( github.com/shirou/gopsutil v2.20.3+incompatible github.com/sirupsen/logrus v1.2.0 github.com/spf13/cobra v1.0.0 + github.com/spf13/pflag v1.0.3 github.com/spf13/viper v1.6.2 github.com/swaggo/gin-swagger v1.2.0 github.com/swaggo/swag v1.6.5 diff --git a/middleware/logger.go b/middleware/logger.go index b47a5a49..cecd147c 100644 --- a/middleware/logger.go +++ b/middleware/logger.go @@ -1,7 +1,6 @@ package middleware import ( - "fmt" "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" "go-admin/models" @@ -57,24 +56,16 @@ func LoggerToFile() gin.HandlerFunc { clientIP := c.ClientIP() // 日志格式 - logger.Infof(" %3d %13v %15s %s %s \r\n", + logger.Infof("%s [%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, reqMethod, reqUri, ) - logger.Infoln("-") - fmt.Println( - startTime.Format("\n2006-01-02 15:04:05.9999"), - "[INFO]", - reqMethod, - reqUri, - statusCode, - latencyTime, - reqUri, - clientIP, - ) + if c.Request.Method != "GET" && c.Request.Method != "OPTIONS" { menu := models.Menu{} menu.Path = reqUri