2024-12-25 17:18:23 +00:00

71 lines
1.4 KiB
Go

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",
)
}))
}