chore: 日志中补充用户ID以增强异常定位

统一在 AiGateWayManager 各类异常日志中输出 userId,并向流式处理方法透传 userId,提升问题排查与审计能力,不影响现有业务逻辑。
This commit is contained in:
ccnetcore
2026-02-04 23:45:36 +08:00
parent 6863b773b4
commit fadaa0d129

View File

@@ -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);