chore: 日志中补充用户ID以增强异常定位
统一在 AiGateWayManager 各类异常日志中输出 userId,并向流式处理方法透传 userId,提升问题排查与审计能力,不影响现有业务逻辑。
This commit is contained in:
@@ -270,7 +270,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, $"Ai对话异常");
|
||||
_logger.LogError(e, $"Ai对话异常,用户ID:{userId}");
|
||||
var errorContent = $"对话Ai异常,异常信息:\n当前Ai模型:{request.Model}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
var model = new ThorChatCompletionsResponse()
|
||||
{
|
||||
@@ -683,7 +683,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, $"Ai对话异常");
|
||||
_logger.LogError(e, $"Ai对话异常,用户ID:{userId}");
|
||||
var errorContent = $"对话Ai异常,异常信息:\n当前Ai模型:{sourceModelId}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
throw new UserFriendlyException(errorContent);
|
||||
}
|
||||
@@ -856,7 +856,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, $"Ai响应异常");
|
||||
_logger.LogError(e, $"Ai响应异常,用户ID:{userId}");
|
||||
var errorContent = $"响应Ai异常,异常信息:\n当前Ai模型:{request.Model}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
throw new UserFriendlyException(errorContent);
|
||||
}
|
||||
@@ -1026,7 +1026,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, $"Ai生成异常");
|
||||
_logger.LogError(e, $"Ai生成异常,用户ID:{userId}");
|
||||
var errorContent = $"生成Ai异常,异常信息:\n当前Ai模型:{modelId}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
throw new UserFriendlyException(errorContent);
|
||||
}
|
||||
@@ -1205,16 +1205,16 @@ public class AiGateWayManager : DomainService
|
||||
switch (apiType)
|
||||
{
|
||||
case ModelApiTypeEnum.Completions:
|
||||
processResult = await ProcessCompletionsStreamAsync(messageQueue, requestBody, modelDescribe, cancellationToken);
|
||||
processResult = await ProcessCompletionsStreamAsync(messageQueue, requestBody, modelDescribe, userId, cancellationToken);
|
||||
break;
|
||||
case ModelApiTypeEnum.Messages:
|
||||
processResult = await ProcessAnthropicStreamAsync(messageQueue, requestBody, modelDescribe, cancellationToken);
|
||||
processResult = await ProcessAnthropicStreamAsync(messageQueue, requestBody, modelDescribe, userId, cancellationToken);
|
||||
break;
|
||||
case ModelApiTypeEnum.Responses:
|
||||
processResult = await ProcessOpenAiResponsesStreamAsync(messageQueue, requestBody, modelDescribe, cancellationToken);
|
||||
processResult = await ProcessOpenAiResponsesStreamAsync(messageQueue, requestBody, modelDescribe, userId, cancellationToken);
|
||||
break;
|
||||
case ModelApiTypeEnum.GenerateContent:
|
||||
processResult = await ProcessGeminiStreamAsync(messageQueue, requestBody, modelDescribe, cancellationToken);
|
||||
processResult = await ProcessGeminiStreamAsync(messageQueue, requestBody, modelDescribe, userId, cancellationToken);
|
||||
break;
|
||||
default:
|
||||
throw new UserFriendlyException($"不支持的API类型: {apiType}");
|
||||
@@ -1293,6 +1293,7 @@ public class AiGateWayManager : DomainService
|
||||
ConcurrentQueue<string> messageQueue,
|
||||
JsonElement requestBody,
|
||||
AiModelDescribe modelDescribe,
|
||||
Guid? userId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var request = requestBody.Deserialize<ThorChatCompletionsRequest>(ThorJsonSerializer.DefaultOptions)!;
|
||||
@@ -1336,7 +1337,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "Ai对话异常");
|
||||
_logger.LogError(e, "Ai对话异常,用户ID:{UserId}", userId);
|
||||
var errorContent = $"对话Ai异常,异常信息:\n当前Ai模型:{request.Model}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
systemContentBuilder.Append(errorContent);
|
||||
var model = new ThorChatCompletionsResponse()
|
||||
@@ -1374,6 +1375,7 @@ public class AiGateWayManager : DomainService
|
||||
ConcurrentQueue<string> messageQueue,
|
||||
JsonElement requestBody,
|
||||
AiModelDescribe modelDescribe,
|
||||
Guid? userId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var request = requestBody.Deserialize<AnthropicInput>(ThorJsonSerializer.DefaultOptions)!;
|
||||
@@ -1457,7 +1459,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "Ai对话异常");
|
||||
_logger.LogError(e, "Ai对话异常,用户ID:{UserId}", userId);
|
||||
var errorContent = $"对话Ai异常,异常信息:\n当前Ai模型:{request.Model}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
systemContentBuilder.Append(errorContent);
|
||||
throw new UserFriendlyException(errorContent);
|
||||
@@ -1481,6 +1483,7 @@ public class AiGateWayManager : DomainService
|
||||
ConcurrentQueue<string> messageQueue,
|
||||
JsonElement requestBody,
|
||||
AiModelDescribe modelDescribe,
|
||||
Guid? userId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var request = requestBody.Deserialize<OpenAiResponsesInput>(ThorJsonSerializer.DefaultOptions)!;
|
||||
@@ -1556,7 +1559,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "Ai响应异常");
|
||||
_logger.LogError(e, "Ai响应异常,用户ID:{UserId}", userId);
|
||||
var errorContent = $"响应Ai异常,异常信息:\n当前Ai模型:{request.Model}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
systemContentBuilder.Append(errorContent);
|
||||
throw new UserFriendlyException(errorContent);
|
||||
@@ -1577,6 +1580,7 @@ public class AiGateWayManager : DomainService
|
||||
ConcurrentQueue<string> messageQueue,
|
||||
JsonElement requestBody,
|
||||
AiModelDescribe modelDescribe,
|
||||
Guid? userId,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
// 提取用户最后一条消息 (contents[last].parts[last].text)
|
||||
@@ -1622,7 +1626,7 @@ public class AiGateWayManager : DomainService
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "Ai生成异常");
|
||||
_logger.LogError(e, "Ai生成异常,用户ID:{UserId}", userId);
|
||||
var errorContent = $"生成Ai异常,异常信息:\n当前Ai模型:{modelDescribe.ModelId}\n异常信息:{e.Message}\n异常堆栈:{e}";
|
||||
systemContentBuilder.Append(errorContent);
|
||||
throw new UserFriendlyException(errorContent);
|
||||
|
||||
Reference in New Issue
Block a user