- update log

master
李光春 2 years ago
parent 5604cd1e5e
commit e383a29b60

@ -23,6 +23,7 @@ import (
type GinClient struct { type GinClient struct {
gormClient *gorm.DB // 驱动 gormClient *gorm.DB // 驱动
mongoCollectionClient *dorm.MongoClient // 驱动(温馨提示:需要已选择库和表) mongoCollectionClient *dorm.MongoClient // 驱动(温馨提示:需要已选择库和表)
ipService *goip.Client // ip服务
config struct { config struct {
logType string // 日志类型 logType string // 日志类型
tableName string // 表名 tableName string // 表名
@ -48,6 +49,9 @@ func NewGinClient(attrs ...*OperationAttr) (*GinClient, error) {
if attr.tableName != "" { if attr.tableName != "" {
c.config.tableName = attr.tableName c.config.tableName = attr.tableName
} }
if attr.ipService != nil {
c.ipService = attr.ipService
}
} }
switch c.config.logType { switch c.config.logType {
@ -124,7 +128,7 @@ func (w bodyLogWriter) WriteString(s string) (int, error) {
} }
// MongoMiddleware 中间件 // MongoMiddleware 中间件
func (c *GinClient) MongoMiddleware(ipService *goip.Client) gin.HandlerFunc { func (c *GinClient) MongoMiddleware() gin.HandlerFunc {
return func(ginCtx *gin.Context) { return func(ginCtx *gin.Context) {
// 开始时间 // 开始时间
@ -160,9 +164,10 @@ func (c *GinClient) MongoMiddleware(ipService *goip.Client) gin.HandlerFunc {
} }
requestClientIpCountry, requestClientIpRegion, requestClientIpProvince, requestClientIpCity, requestClientIpIsp := "", "", "", "", "" requestClientIpCountry, requestClientIpRegion, requestClientIpProvince, requestClientIpCity, requestClientIpIsp := "", "", "", "", ""
if c.ipService != nil {
if net.ParseIP(ginCtx.ClientIP()).To4() != nil { if net.ParseIP(ginCtx.ClientIP()).To4() != nil {
// 判断是不是IPV4 // 判断是不是IPV4
_, info := ipService.Ipv4(ginCtx.ClientIP()) _, info := c.ipService.Ipv4(ginCtx.ClientIP())
requestClientIpCountry = info.Country requestClientIpCountry = info.Country
requestClientIpRegion = info.Region requestClientIpRegion = info.Region
requestClientIpProvince = info.Province requestClientIpProvince = info.Province
@ -170,11 +175,12 @@ func (c *GinClient) MongoMiddleware(ipService *goip.Client) gin.HandlerFunc {
requestClientIpIsp = info.ISP requestClientIpIsp = info.ISP
} else if net.ParseIP(ginCtx.ClientIP()).To16() != nil { } else if net.ParseIP(ginCtx.ClientIP()).To16() != nil {
// 判断是不是IPV6 // 判断是不是IPV6
info := ipService.Ipv6(ginCtx.ClientIP()) info := c.ipService.Ipv6(ginCtx.ClientIP())
requestClientIpCountry = info.Country requestClientIpCountry = info.Country
requestClientIpProvince = info.Province requestClientIpProvince = info.Province
requestClientIpCity = info.City requestClientIpCity = info.City
} }
}
// 记录 // 记录
if c.mongoCollectionClient != nil { if c.mongoCollectionClient != nil {

@ -2,6 +2,7 @@ package golog
import ( import (
"go.dtapp.net/library/utils/dorm" "go.dtapp.net/library/utils/dorm"
"go.dtapp.net/library/utils/goip"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -16,6 +17,7 @@ type OperationAttr struct {
mongoCollectionClient *dorm.MongoClient // 驱动 mongoCollectionClient *dorm.MongoClient // 驱动
logType string // 类型 logType string // 类型
tableName string // 表名 tableName string // 表名
ipService *goip.Client // ip服务
} }
// WithGormClient 数据库驱动 // WithGormClient 数据库驱动
@ -23,7 +25,7 @@ func WithGormClient(client *gorm.DB) *OperationAttr {
return &OperationAttr{gormClient: client, logType: logTypeGorm} return &OperationAttr{gormClient: client, logType: logTypeGorm}
} }
// WithMongoCollectionClient 数据库驱动(温馨提示:需要已选择库) // WithMongoCollectionClient 数据库驱动(温馨提示:需要已选择库和表)
func WithMongoCollectionClient(client *dorm.MongoClient) *OperationAttr { func WithMongoCollectionClient(client *dorm.MongoClient) *OperationAttr {
return &OperationAttr{mongoCollectionClient: client, logType: logTypeMongo} return &OperationAttr{mongoCollectionClient: client, logType: logTypeMongo}
} }
@ -32,3 +34,8 @@ func WithMongoCollectionClient(client *dorm.MongoClient) *OperationAttr {
func WithTableName(tableName string) *OperationAttr { func WithTableName(tableName string) *OperationAttr {
return &OperationAttr{tableName: tableName} return &OperationAttr{tableName: tableName}
} }
// WithIpService ip服务
func WithIpService(ipService *goip.Client) *OperationAttr {
return &OperationAttr{ipService: ipService}
}

Loading…
Cancel
Save