package log import ( "fmt" "strings" "github.com/gin-gonic/gin" ) var AppLogger = NewStdout() func T(name string) *Tag { return AppLogger.Tag(name) } func ParseLogLevel(levelStr string) LogLevel { switch strings.ToLower(levelStr) { case "dbg": return LDbg case "inf": return LInf case "wrn": return LWrn case "err": return LErr default: return LDbg } } func Setup(minLevel LogLevel) { AppLogger.MinLevel = minLevel AppLogger.TagColor = map[string]LogColor{ "gin": CMagenta, "main": CYellow, "http": CGreen, "server": CBlue, } } func SetupGin1() { gin.DebugPrintFunc = T("gin").Wrnf gin.DefaultWriter = T("http").LogWriter(LInf) } func SetupGin2(e *gin.Engine) { e.Use(gin.LoggerWithFormatter(func(param gin.LogFormatterParams) string { statusCode := fmt.Sprintf("%d", param.StatusCode) statusColor := CReset if param.StatusCode >= 400 { statusColor = CRed } if param.StatusCode >= 300 && param.StatusCode < 400 { statusColor = CYellow } if param.StatusCode >= 200 && param.StatusCode < 300 { statusColor = CGreen } coloredStatausCode := fmt.Sprint(statusColor, statusCode, CReset) return fmt.Sprint( fmt.Sprintf("%-15s", param.ClientIP), " ", coloredStatausCode, " ", fmt.Sprintf("%-6s", param.Method), " ", param.Path, " ", "t=", param.Latency, " ", "ua=", param.Request.UserAgent(), " ", "msg=", param.ErrorMessage, "\n", ) })) }