MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / RecordConsumeLog

Function RecordConsumeLog

model/log.go:163–221  ·  view source on GitHub ↗
(c *gin.Context, userId int, params RecordConsumeLogParams)

Source from the content-addressed store, hash-verified

161}
162
163func RecordConsumeLog(c *gin.Context, userId int, params RecordConsumeLogParams) {
164 log.Println("=======,", c)
165 common.LogInfo(c, fmt.Sprintf("record consume log: userId=%d, params=%s", userId, common.GetJsonString(params)))
166 if !common.LogConsumeEnabled {
167 return
168 }
169 username := c.GetString("username")
170 otherStr := common.MapToJsonStr(params.Other)
171 // 判断是否需要记录 IP
172 needRecordIp := false
173 if settingMap, err := GetUserSetting(userId, false); err == nil {
174 if settingMap.RecordIpLog {
175 needRecordIp = true
176 }
177 }
178 log := &Log{
179 UserId: userId,
180 Username: username,
181 CreatedAt: common.GetTimestamp(),
182 Type: LogTypeConsume,
183 Content: params.Content,
184 UserInput: params.UserInput,
185 PromptTokens: params.PromptTokens,
186 CompletionTokens: params.CompletionTokens,
187 TokenName: params.TokenName,
188 ModelName: params.ModelName,
189 Quota: params.Quota,
190 ChannelId: params.ChannelId,
191 TokenId: params.TokenId,
192 UseTime: params.UseTimeSeconds,
193 IsStream: params.IsStream,
194 Group: params.Group,
195 Ip: func() string {
196 if needRecordIp {
197 return c.ClientIP()
198 }
199 return ""
200 }(),
201 Other: otherStr,
202 }
203 err := LOG_DB.Create(log).Error
204 if err != nil {
205 common.LogError(c, "failed to record log: "+err.Error())
206 }
207
208 // 异步记录用量统计
209 gopool.Go(func() {
210 if recordErr := RecordUsageStatistics(params.TokenId, params.TokenName, params.ModelName,
211 params.PromptTokens, params.CompletionTokens, params.Quota, true); recordErr != nil {
212 common.SysError("failed to record usage statistics: " + recordErr.Error())
213 }
214 })
215
216 if common.DataExportEnabled {
217 gopool.Go(func() {
218 LogQuotaData(userId, username, params.ModelName, params.Quota, common.GetTimestamp(), params.PromptTokens+params.CompletionTokens)
219 })
220 }

Callers 8

testChannelFunction · 0.92
PostWssConsumeQuotaFunction · 0.92
PostClaudeConsumeQuotaFunction · 0.92
PostAudioConsumeQuotaFunction · 0.92
RelaySwapFaceFunction · 0.92
RelayMidjourneySubmitFunction · 0.92
postConsumeQuotaFunction · 0.92
RelayTaskSubmitFunction · 0.92

Calls 10

LogInfoFunction · 0.92
GetJsonStringFunction · 0.92
MapToJsonStrFunction · 0.92
GetTimestampFunction · 0.92
LogErrorFunction · 0.92
SysErrorFunction · 0.92
GetUserSettingFunction · 0.85
RecordUsageStatisticsFunction · 0.85
LogQuotaDataFunction · 0.85
ErrorMethod · 0.80

Tested by

no test coverage detected