- 新增模块化日志器(pkg/logger/module.go) - 新增 GORM 日志适配器 - 统一日志入口,移除所有 zap.L() 全局 logger 调用 - 字段标准化 - 启动阶段使用结构化日志 - 更新所有相关测试
78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
package logger
|
|
|
|
import "go.uber.org/zap"
|
|
|
|
const (
|
|
FieldRequestID = "request_id"
|
|
FieldProviderID = "provider_id"
|
|
FieldModelName = "model_name"
|
|
FieldMethod = "method"
|
|
FieldPath = "path"
|
|
FieldStatusCode = "status"
|
|
FieldLatency = "latency"
|
|
FieldClientIP = "client_ip"
|
|
FieldQuery = "query"
|
|
FieldBodySize = "body_size"
|
|
FieldSQL = "sql"
|
|
FieldRows = "rows_affected"
|
|
)
|
|
|
|
func RequestID(id string) zap.Field {
|
|
return zap.String(FieldRequestID, id)
|
|
}
|
|
|
|
func ProviderID(id string) zap.Field {
|
|
return zap.String(FieldProviderID, id)
|
|
}
|
|
|
|
func ModelName(name string) zap.Field {
|
|
return zap.String(FieldModelName, name)
|
|
}
|
|
|
|
func Method(method string) zap.Field {
|
|
return zap.String(FieldMethod, method)
|
|
}
|
|
|
|
func Path(path string) zap.Field {
|
|
return zap.String(FieldPath, path)
|
|
}
|
|
|
|
func StatusCode(code int) zap.Field {
|
|
return zap.Int(FieldStatusCode, code)
|
|
}
|
|
|
|
func Latency(latency interface{}) zap.Field {
|
|
switch v := latency.(type) {
|
|
case int64:
|
|
return zap.Int64(FieldLatency, v)
|
|
case int:
|
|
return zap.Int(FieldLatency, v)
|
|
default:
|
|
return zap.Any(FieldLatency, latency)
|
|
}
|
|
}
|
|
|
|
func ClientIP(ip string) zap.Field {
|
|
return zap.String(FieldClientIP, ip)
|
|
}
|
|
|
|
func Query(query string) zap.Field {
|
|
return zap.String(FieldQuery, query)
|
|
}
|
|
|
|
func BodySize(size int) zap.Field {
|
|
return zap.Int(FieldBodySize, size)
|
|
}
|
|
|
|
func SQL(sql string) zap.Field {
|
|
return zap.String(FieldSQL, sql)
|
|
}
|
|
|
|
func Rows(rows int64) zap.Field {
|
|
return zap.Int64(FieldRows, rows)
|
|
}
|
|
|
|
func Err(err error) zap.Field {
|
|
return zap.Error(err)
|
|
}
|