add request log.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
This commit is contained in:
parent
0964b40f17
commit
eb32e593c8
|
@ -41,6 +41,7 @@ type SectionIos struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type SectionLog struct {
|
type SectionLog struct {
|
||||||
|
Format string `yaml:"format"`
|
||||||
AccessLog string `yaml:"access_log"`
|
AccessLog string `yaml:"access_log"`
|
||||||
AccessLevel string `yaml:"access_level"`
|
AccessLevel string `yaml:"access_level"`
|
||||||
ErrorLog string `yaml:"error_log"`
|
ErrorLog string `yaml:"error_log"`
|
||||||
|
@ -73,6 +74,7 @@ func BuildDefaultPushConf() ConfYaml {
|
||||||
conf.Ios.Production = false
|
conf.Ios.Production = false
|
||||||
|
|
||||||
// log
|
// log
|
||||||
|
conf.Log.Format = "string"
|
||||||
conf.Log.AccessLog = "stdout"
|
conf.Log.AccessLog = "stdout"
|
||||||
conf.Log.AccessLevel = "debug"
|
conf.Log.AccessLevel = "debug"
|
||||||
conf.Log.ErrorLog = "stderr"
|
conf.Log.ErrorLog = "stderr"
|
||||||
|
|
|
@ -1,11 +1,34 @@
|
||||||
package gopush
|
package gopush
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"github.com/Sirupsen/logrus"
|
"github.com/Sirupsen/logrus"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
green = string([]byte{27, 91, 57, 55, 59, 52, 50, 109})
|
||||||
|
white = string([]byte{27, 91, 57, 48, 59, 52, 55, 109})
|
||||||
|
yellow = string([]byte{27, 91, 57, 55, 59, 52, 51, 109})
|
||||||
|
red = string([]byte{27, 91, 57, 55, 59, 52, 49, 109})
|
||||||
|
blue = string([]byte{27, 91, 57, 55, 59, 52, 52, 109})
|
||||||
|
magenta = string([]byte{27, 91, 57, 55, 59, 52, 53, 109})
|
||||||
|
cyan = string([]byte{27, 91, 57, 55, 59, 52, 54, 109})
|
||||||
|
reset = string([]byte{27, 91, 48, 109})
|
||||||
|
)
|
||||||
|
|
||||||
|
type LogReq struct {
|
||||||
|
Time string `json:"time"`
|
||||||
|
URI string `json:"uri"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
IP string `json:"ip"`
|
||||||
|
ContentType string `json:"content_type"`
|
||||||
|
Agent string `json:"agent"`
|
||||||
|
}
|
||||||
|
|
||||||
func InitLog() error {
|
func InitLog() error {
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
|
@ -74,3 +97,37 @@ func SetLogLevel(log *logrus.Logger, levelString string) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func LogRequest(uri, method, ip string, contentType string, agent string) {
|
||||||
|
var output string
|
||||||
|
log := &LogReq{
|
||||||
|
URI: uri,
|
||||||
|
Method: method,
|
||||||
|
IP: ip,
|
||||||
|
ContentType: contentType,
|
||||||
|
Agent: agent,
|
||||||
|
}
|
||||||
|
|
||||||
|
if PushConf.Log.Format == "json" {
|
||||||
|
logJson, err := json.Marshal(log)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
LogError.Error("Marshaling JSON error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
output = string(logJson)
|
||||||
|
} else {
|
||||||
|
// format is string
|
||||||
|
output = fmt.Sprintf("|%s header %s| %s %s %s %s %s", magenta, reset, log.Method, log.URI, log.IP, log.ContentType, log.Agent)
|
||||||
|
}
|
||||||
|
|
||||||
|
LogAccess.Info(output)
|
||||||
|
}
|
||||||
|
|
||||||
|
func LogMiddleware() gin.HandlerFunc {
|
||||||
|
return func(c *gin.Context) {
|
||||||
|
LogRequest(c.Request.URL.Path, c.Request.Method, c.ClientIP(), c.ContentType(), c.Request.Header.Get("User-Agent"))
|
||||||
|
c.Next()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -48,6 +48,7 @@ func GetMainEngine() *gin.Engine {
|
||||||
r.Use(gin.Logger())
|
r.Use(gin.Logger())
|
||||||
r.Use(gin.Recovery())
|
r.Use(gin.Recovery())
|
||||||
r.Use(VersionMiddleware())
|
r.Use(VersionMiddleware())
|
||||||
|
r.Use(LogMiddleware())
|
||||||
|
|
||||||
r.GET(PushConf.Api.StatGoUri, api.StatusHandler)
|
r.GET(PushConf.Api.StatGoUri, api.StatusHandler)
|
||||||
r.POST(PushConf.Api.PushUri, pushHandler)
|
r.POST(PushConf.Api.PushUri, pushHandler)
|
||||||
|
|
Loading…
Reference in New Issue