diff --git a/controller/log.go b/controller/log.go index da9bca468..1b2068b6c 100644 --- a/controller/log.go +++ b/controller/log.go @@ -20,7 +20,8 @@ func GetAllLogs(c *gin.Context) { modelName := c.Query("model_name") channel, _ := strconv.Atoi(c.Query("channel")) group := c.Query("group") - logs, total, err := model.GetAllLogs(logType, startTimestamp, endTimestamp, modelName, username, tokenName, pageInfo.GetStartIdx(), pageInfo.GetPageSize(), channel, group) + requestId := c.Query("request_id") + logs, total, err := model.GetAllLogs(logType, startTimestamp, endTimestamp, modelName, username, tokenName, pageInfo.GetStartIdx(), pageInfo.GetPageSize(), channel, group, requestId) if err != nil { common.ApiError(c, err) return @@ -40,7 +41,8 @@ func GetUserLogs(c *gin.Context) { tokenName := c.Query("token_name") modelName := c.Query("model_name") group := c.Query("group") - logs, total, err := model.GetUserLogs(userId, logType, startTimestamp, endTimestamp, modelName, tokenName, pageInfo.GetStartIdx(), pageInfo.GetPageSize(), group) + requestId := c.Query("request_id") + logs, total, err := model.GetUserLogs(userId, logType, startTimestamp, endTimestamp, modelName, tokenName, pageInfo.GetStartIdx(), pageInfo.GetPageSize(), group, requestId) if err != nil { common.ApiError(c, err) return diff --git a/model/log.go b/model/log.go index 872d73d4f..6411549ec 100644 --- a/model/log.go +++ b/model/log.go @@ -36,6 +36,7 @@ type Log struct { TokenId int `json:"token_id" gorm:"default:0;index"` Group string `json:"group" gorm:"index"` Ip string `json:"ip" gorm:"index;default:''"` + RequestId string `json:"request_id,omitempty" gorm:"type:varchar(64);index:idx_logs_request_id;default:''"` Other string `json:"other"` } @@ -132,7 +133,8 @@ func RecordErrorLog(c *gin.Context, userId int, channelId int, modelName string, } return "" }(), - Other: otherStr, + RequestId: c.GetString(common.RequestIdKey), + Other: otherStr, } err := LOG_DB.Create(log).Error if err != nil { @@ -191,7 +193,8 @@ func RecordConsumeLog(c *gin.Context, userId int, params RecordConsumeLogParams) } return "" }(), - Other: otherStr, + RequestId: c.GetString(common.RequestIdKey), + Other: otherStr, } err := LOG_DB.Create(log).Error if err != nil { @@ -204,7 +207,7 @@ func RecordConsumeLog(c *gin.Context, userId int, params RecordConsumeLogParams) } } -func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, modelName string, username string, tokenName string, startIdx int, num int, channel int, group string) (logs []*Log, total int64, err error) { +func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, modelName string, username string, tokenName string, startIdx int, num int, channel int, group string, requestId string) (logs []*Log, total int64, err error) { var tx *gorm.DB if logType == LogTypeUnknown { tx = LOG_DB @@ -221,6 +224,9 @@ func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, modelName if tokenName != "" { tx = tx.Where("logs.token_name = ?", tokenName) } + if requestId != "" { + tx = tx.Where("logs.request_id = ?", requestId) + } if startTimestamp != 0 { tx = tx.Where("logs.created_at >= ?", startTimestamp) } @@ -269,7 +275,7 @@ func GetAllLogs(logType int, startTimestamp int64, endTimestamp int64, modelName return logs, total, err } -func GetUserLogs(userId int, logType int, startTimestamp int64, endTimestamp int64, modelName string, tokenName string, startIdx int, num int, group string) (logs []*Log, total int64, err error) { +func GetUserLogs(userId int, logType int, startTimestamp int64, endTimestamp int64, modelName string, tokenName string, startIdx int, num int, group string, requestId string) (logs []*Log, total int64, err error) { var tx *gorm.DB if logType == LogTypeUnknown { tx = LOG_DB.Where("logs.user_id = ?", userId) @@ -283,6 +289,9 @@ func GetUserLogs(userId int, logType int, startTimestamp int64, endTimestamp int if tokenName != "" { tx = tx.Where("logs.token_name = ?", tokenName) } + if requestId != "" { + tx = tx.Where("logs.request_id = ?", requestId) + } if startTimestamp != 0 { tx = tx.Where("logs.created_at >= ?", startTimestamp) } diff --git a/web/src/components/table/usage-logs/UsageLogsFilters.jsx b/web/src/components/table/usage-logs/UsageLogsFilters.jsx index 840c82eea..1459070f6 100644 --- a/web/src/components/table/usage-logs/UsageLogsFilters.jsx +++ b/web/src/components/table/usage-logs/UsageLogsFilters.jsx @@ -93,6 +93,15 @@ const LogsFilters = ({ size='small' /> +