From e383a29b601a4076c27b955599fcd2ac75fa9c54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Wed, 22 Jun 2022 15:45:20 +0800 Subject: [PATCH] - update log --- utils/golog/gin.go | 36 ++++++++++++++++++++--------------- utils/golog/operation_attr.go | 9 ++++++++- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/utils/golog/gin.go b/utils/golog/gin.go index eaeca0d0..0f5ef90b 100644 --- a/utils/golog/gin.go +++ b/utils/golog/gin.go @@ -23,6 +23,7 @@ import ( type GinClient struct { gormClient *gorm.DB // 驱动 mongoCollectionClient *dorm.MongoClient // 驱动(温馨提示:需要已选择库和表) + ipService *goip.Client // ip服务 config struct { logType string // 日志类型 tableName string // 表名 @@ -48,6 +49,9 @@ func NewGinClient(attrs ...*OperationAttr) (*GinClient, error) { if attr.tableName != "" { c.config.tableName = attr.tableName } + if attr.ipService != nil { + c.ipService = attr.ipService + } } switch c.config.logType { @@ -124,7 +128,7 @@ func (w bodyLogWriter) WriteString(s string) (int, error) { } // MongoMiddleware 中间件 -func (c *GinClient) MongoMiddleware(ipService *goip.Client) gin.HandlerFunc { +func (c *GinClient) MongoMiddleware() gin.HandlerFunc { return func(ginCtx *gin.Context) { // 开始时间 @@ -160,20 +164,22 @@ func (c *GinClient) MongoMiddleware(ipService *goip.Client) gin.HandlerFunc { } requestClientIpCountry, requestClientIpRegion, requestClientIpProvince, requestClientIpCity, requestClientIpIsp := "", "", "", "", "" - if net.ParseIP(ginCtx.ClientIP()).To4() != nil { - // 判断是不是IPV4 - _, info := ipService.Ipv4(ginCtx.ClientIP()) - requestClientIpCountry = info.Country - requestClientIpRegion = info.Region - requestClientIpProvince = info.Province - requestClientIpCity = info.City - requestClientIpIsp = info.ISP - } else if net.ParseIP(ginCtx.ClientIP()).To16() != nil { - // 判断是不是IPV6 - info := ipService.Ipv6(ginCtx.ClientIP()) - requestClientIpCountry = info.Country - requestClientIpProvince = info.Province - requestClientIpCity = info.City + if c.ipService != nil { + if net.ParseIP(ginCtx.ClientIP()).To4() != nil { + // 判断是不是IPV4 + _, info := c.ipService.Ipv4(ginCtx.ClientIP()) + requestClientIpCountry = info.Country + requestClientIpRegion = info.Region + requestClientIpProvince = info.Province + requestClientIpCity = info.City + requestClientIpIsp = info.ISP + } else if net.ParseIP(ginCtx.ClientIP()).To16() != nil { + // 判断是不是IPV6 + info := c.ipService.Ipv6(ginCtx.ClientIP()) + requestClientIpCountry = info.Country + requestClientIpProvince = info.Province + requestClientIpCity = info.City + } } // 记录 diff --git a/utils/golog/operation_attr.go b/utils/golog/operation_attr.go index cf8b7f63..013e6e76 100644 --- a/utils/golog/operation_attr.go +++ b/utils/golog/operation_attr.go @@ -2,6 +2,7 @@ package golog import ( "go.dtapp.net/library/utils/dorm" + "go.dtapp.net/library/utils/goip" "gorm.io/gorm" ) @@ -16,6 +17,7 @@ type OperationAttr struct { mongoCollectionClient *dorm.MongoClient // 驱动 logType string // 类型 tableName string // 表名 + ipService *goip.Client // ip服务 } // WithGormClient 数据库驱动 @@ -23,7 +25,7 @@ func WithGormClient(client *gorm.DB) *OperationAttr { return &OperationAttr{gormClient: client, logType: logTypeGorm} } -// WithMongoCollectionClient 数据库驱动(温馨提示:需要已选择库) +// WithMongoCollectionClient 数据库驱动(温馨提示:需要已选择库和表) func WithMongoCollectionClient(client *dorm.MongoClient) *OperationAttr { return &OperationAttr{mongoCollectionClient: client, logType: logTypeMongo} } @@ -32,3 +34,8 @@ func WithMongoCollectionClient(client *dorm.MongoClient) *OperationAttr { func WithTableName(tableName string) *OperationAttr { return &OperationAttr{tableName: tableName} } + +// WithIpService ip服务 +func WithIpService(ipService *goip.Client) *OperationAttr { + return &OperationAttr{ipService: ipService} +}