MCPcopy Index your code
hub / github.com/codeaashu/claude-code / logAPIError

Function logAPIError

src/services/api/logging.ts:235–396  ·  view source on GitHub ↗
({
  error,
  model,
  messageCount,
  messageTokens,
  durationMs,
  durationMsIncludingRetries,
  attempt,
  requestId,
  clientRequestId,
  didFallBackToNonStreaming,
  promptCategory,
  headers,
  queryTracking,
  querySource,
  llmSpan,
  fastMode,
  previousRequestId,
}: {
  error: unknown
  model: string
  messageCount: number
  messageTokens?: number
  durationMs: number
  durationMsIncludingRetries: number
  attempt: number
  requestId?: string | null
  /** Client-generated ID sent as x-client-request-id header (survives timeouts) */
  clientRequestId?: string
  didFallBackToNonStreaming?: boolean
  promptCategory?: string
  headers?: globalThis.Headers
  queryTracking?: QueryChainTracking
  querySource?: string
  /** The span from startLLMRequestSpan - pass this to correctly match responses to requests */
  llmSpan?: Span
  fastMode?: boolean
  previousRequestId?: string | null
})

Source from the content-addressed store, hash-verified

233}
234
235export function logAPIError({
236 error,
237 model,
238 messageCount,
239 messageTokens,
240 durationMs,
241 durationMsIncludingRetries,
242 attempt,
243 requestId,
244 clientRequestId,
245 didFallBackToNonStreaming,
246 promptCategory,
247 headers,
248 queryTracking,
249 querySource,
250 llmSpan,
251 fastMode,
252 previousRequestId,
253}: {
254 error: unknown
255 model: string
256 messageCount: number
257 messageTokens?: number
258 durationMs: number
259 durationMsIncludingRetries: number
260 attempt: number
261 requestId?: string | null
262 /** Client-generated ID sent as x-client-request-id header (survives timeouts) */
263 clientRequestId?: string
264 didFallBackToNonStreaming?: boolean
265 promptCategory?: string
266 headers?: globalThis.Headers
267 queryTracking?: QueryChainTracking
268 querySource?: string
269 /** The span from startLLMRequestSpan - pass this to correctly match responses to requests */
270 llmSpan?: Span
271 fastMode?: boolean
272 previousRequestId?: string | null
273}): void {
274 const gateway = detectGateway({
275 headers:
276 error instanceof APIError && error.headers ? error.headers : headers,
277 baseUrl: process.env.ANTHROPIC_BASE_URL,
278 })
279
280 const errStr = getErrorMessage(error)
281 const status = error instanceof APIError ? String(error.status) : undefined
282 const errorType = classifyAPIError(error)
283
284 // Log detailed connection error info to debug logs (visible via --debug)
285 const connectionDetails = extractConnectionErrorDetails(error)
286 if (connectionDetails) {
287 const sslLabel = connectionDetails.isSSLError ? ' (SSL error)' : ''
288 logForDebugging(
289 `Connection error details: code=${connectionDetails.code}${sslLabel}, message=${connectionDetails.message}`,
290 { level: 'error' },
291 )
292 }

Callers 1

queryModelFunction · 0.85

Calls 14

detectGatewayFunction · 0.85
classifyAPIErrorFunction · 0.85
logForDebuggingFunction · 0.85
consumeInvokingRequestIdFunction · 0.85
logEventFunction · 0.85
getAPIProviderForStatsigFunction · 0.85
getAnthropicEnvMetadataFunction · 0.85
logOTelEventFunction · 0.85
endLLMRequestSpanFunction · 0.85
getTeleportedSessionInfoFunction · 0.85

Tested by

no test coverage detected