diff --git a/cmd/server.go b/cmd/server.go index 2780176..17cfd17 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -8,6 +8,7 @@ import ( "github.com/swaggo/gin-swagger/swaggerFiles" "github.com/taoshihan1991/imaptool/controller" "github.com/taoshihan1991/imaptool/docs" + "github.com/taoshihan1991/imaptool/middleware" "github.com/taoshihan1991/imaptool/router" "github.com/taoshihan1991/imaptool/tools" "log" @@ -51,6 +52,8 @@ func run() { baseServer := "0.0.0.0:" + Port controller.Port = Port log.Println("start server...\r\ngo:http://" + baseServer) + tools.Logger().Println("start server...\r\ngo:http://" + baseServer) + engine := gin.Default() engine.LoadHTMLGlob("static/html/*") engine.Static("/static", "./static") @@ -59,7 +62,7 @@ func run() { pprof.Register(engine) //记录日志 - engine.Use(tools.LoggerToFile()) + engine.Use(middleware.NewMidLogger()) router.InitViewRouter(engine) router.InitApiRouter(engine) diff --git a/controller/shout.go b/controller/shout.go index d8e6899..06b2153 100644 --- a/controller/shout.go +++ b/controller/shout.go @@ -88,7 +88,8 @@ func sendPushApi(token string, req string) int { headers["Content-Type"] = "application/json;charset=utf-8" headers["token"] = token res, err := tools.PostHeader(url, []byte(req), headers) - log.Println(url, req, err, res) + tools.Logger().Infoln(url, req, err, res) + if err == nil && res != "" { var pushRes GetuiResponse json.Unmarshal([]byte(res), &pushRes) diff --git a/middleware/logger.go b/middleware/logger.go new file mode 100644 index 0000000..0d139e9 --- /dev/null +++ b/middleware/logger.go @@ -0,0 +1,45 @@ +package middleware + +import ( + "github.com/gin-gonic/gin" + "github.com/taoshihan1991/imaptool/tools" + "time" +) + +func NewMidLogger() gin.HandlerFunc { + logger := tools.Logger() + return func(c *gin.Context) { + // 开始时间 + startTime := time.Now() + + // 处理请求 + c.Next() + + // 结束时间 + endTime := time.Now() + + // 执行时间 + latencyTime := endTime.Sub(startTime) + + // 请求方式 + reqMethod := c.Request.Method + + // 请求路由 + reqUri := c.Request.RequestURI + + // 状态码 + statusCode := c.Writer.Status() + + // 请求IP + clientIP := c.ClientIP() + + //日志格式 + logger.Infof("| %3d | %13v | %15s | %s | %s |", + statusCode, + latencyTime, + clientIP, + reqMethod, + reqUri, + ) + } +} diff --git a/tools/logger.go b/tools/logger.go index cf7d7df..44d8a45 100644 --- a/tools/logger.go +++ b/tools/logger.go @@ -1,87 +1,102 @@ package tools import ( - "fmt" - "github.com/gin-gonic/gin" "github.com/sirupsen/logrus" + "log" "os" "path" "time" ) +var logrusObj *logrus.Logger + func Logger() *logrus.Logger { + if logrusObj != nil { + src, _ := setOutputFile() + //设置输出 + logrusObj.Out = src + return logrusObj + } + + //实例化 + logger := logrus.New() + src, _ := setOutputFile() + //设置输出 + logger.Out = src + //设置日志级别 + logger.SetLevel(logrus.DebugLevel) + //设置日志格式 + logger.SetFormatter(&logrus.TextFormatter{ + TimestampFormat: "2006-01-02 15:04:05", + }) + logrusObj = logger + return logger +} +func setOutputFile() (*os.File, error) { now := time.Now() logFilePath := "" if dir, err := os.Getwd(); err == nil { logFilePath = dir + "/logs/" } - if err := os.MkdirAll(logFilePath, 0777); err != nil { - fmt.Println(err.Error()) + _, err := os.Stat(logFilePath) + if os.IsNotExist(err) { + if err := os.MkdirAll(logFilePath, 0777); err != nil { + log.Println(err.Error()) + return nil, err + } } logFileName := now.Format("2006-01-02") + ".log" //日志文件 fileName := path.Join(logFilePath, logFileName) if _, err := os.Stat(fileName); err != nil { if _, err := os.Create(fileName); err != nil { - fmt.Println(err.Error()) + log.Println(err.Error()) + return nil, err } } //写入文件 src, err := os.OpenFile(fileName, os.O_APPEND|os.O_WRONLY, os.ModeAppend) if err != nil { - fmt.Println("err", err) + log.Println(err) + return nil, err } - - //实例化 - logger := logrus.New() - - //设置输出 - logger.Out = src - - //设置日志级别 - logger.SetLevel(logrus.DebugLevel) - - //设置日志格式 - logger.SetFormatter(&logrus.TextFormatter{ - TimestampFormat: "2006-01-02 15:04:05", - }) - return logger + return src, nil } -func LoggerToFile() gin.HandlerFunc { - logger := Logger() - return func(c *gin.Context) { - // 开始时间 - startTime := time.Now() - - // 处理请求 - c.Next() - - // 结束时间 - endTime := time.Now() - - // 执行时间 - latencyTime := endTime.Sub(startTime) - - // 请求方式 - reqMethod := c.Request.Method - - // 请求路由 - reqUri := c.Request.RequestURI - - // 状态码 - statusCode := c.Writer.Status() - - // 请求IP - clientIP := c.ClientIP() - - //日志格式 - logger.Infof("| %3d | %13v | %15s | %s | %s |", - statusCode, - latencyTime, - clientIP, - reqMethod, - reqUri, - ) - } -} +//func LoggerToFile() gin.HandlerFunc { +// logger := Logger() +// return func(c *gin.Context) { +// // 开始时间 +// startTime := time.Now() +// +// // 处理请求 +// c.Next() +// +// // 结束时间 +// endTime := time.Now() +// +// // 执行时间 +// latencyTime := endTime.Sub(startTime) +// +// // 请求方式 +// reqMethod := c.Request.Method +// +// // 请求路由 +// reqUri := c.Request.RequestURI +// +// // 状态码 +// statusCode := c.Writer.Status() +// +// // 请求IP +// clientIP := c.ClientIP() +// +// //日志格式 +// logger.Infof("| %3d | %13v | %15s | %s | %s |", +// statusCode, +// latencyTime, +// clientIP, +// reqMethod, +// reqUri, +// ) +// } +//}