feat: 在错误日志中添加账号信息

- 在 claudeRelayService.js 的所有错误日志中添加账号名称或 ID
- 在 claudeConsoleRelayService.js 的错误日志中添加账号信息
- 便于排查 529 (过载) 和 504 (超时) 错误对应的具体账号

问题背景:
用户反馈错误日志中没有账号信息,无法定位是哪个账号出现问题,
特别是 529 和 504 错误频繁出现时难以排查。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Edric Li
2025-09-09 02:45:47 +08:00
parent ca79e08c81
commit 756918b0ce
2 changed files with 16 additions and 16 deletions

View File

@@ -222,7 +222,7 @@ class ClaudeConsoleRelayService {
throw new Error('Client disconnected') throw new Error('Client disconnected')
} }
logger.error('❌ Claude Console Claude relay request failed:', error.message) logger.error(`❌ Claude Console relay request failed (Account: ${account?.name || accountId}):`, error.message)
// 不再因为模型不支持而block账号 // 不再因为模型不支持而block账号
@@ -297,7 +297,7 @@ class ClaudeConsoleRelayService {
// 更新最后使用时间 // 更新最后使用时间
await this._updateLastUsedTime(accountId) await this._updateLastUsedTime(accountId)
} catch (error) { } catch (error) {
logger.error('❌ Claude Console Claude stream relay failed:', error) logger.error(`❌ Claude Console stream relay failed (Account: ${account?.name || accountId}):`, error)
throw error throw error
} }
} }
@@ -376,7 +376,7 @@ class ClaudeConsoleRelayService {
// 错误响应处理 // 错误响应处理
if (response.status !== 200) { if (response.status !== 200) {
logger.error(`❌ Claude Console API returned error status: ${response.status}`) logger.error(`❌ Claude Console API returned error status: ${response.status} | Account: ${account?.name || accountId}`)
if (response.status === 401) { if (response.status === 401) {
claudeConsoleAccountService.markAccountUnauthorized(accountId) claudeConsoleAccountService.markAccountUnauthorized(accountId)
@@ -528,7 +528,7 @@ class ClaudeConsoleRelayService {
} }
} }
} catch (error) { } catch (error) {
logger.error('❌ Error processing Claude Console stream data:', error) logger.error(`❌ Error processing Claude Console stream data (Account: ${account?.name || accountId}):`, error)
if (!responseStream.destroyed) { if (!responseStream.destroyed) {
responseStream.write('event: error\n') responseStream.write('event: error\n')
responseStream.write( responseStream.write(
@@ -570,7 +570,7 @@ class ClaudeConsoleRelayService {
}) })
response.data.on('error', (error) => { response.data.on('error', (error) => {
logger.error('❌ Claude Console stream error:', error) logger.error(`❌ Claude Console stream error (Account: ${account?.name || accountId}):`, error)
if (!responseStream.destroyed) { if (!responseStream.destroyed) {
responseStream.write('event: error\n') responseStream.write('event: error\n')
responseStream.write( responseStream.write(
@@ -590,7 +590,7 @@ class ClaudeConsoleRelayService {
return return
} }
logger.error('❌ Claude Console Claude stream request error:', error.message) logger.error(`❌ Claude Console stream request error (Account: ${account?.name || accountId}):`, error.message)
// 检查错误状态 // 检查错误状态
if (error.response) { if (error.response) {

View File

@@ -741,7 +741,7 @@ class ClaudeRelayService {
resolve(response) resolve(response)
} catch (error) { } catch (error) {
logger.error('❌ Failed to parse Claude API response:', error) logger.error(`❌ Failed to parse Claude API response (Account: ${accountId}):`, error)
reject(error) reject(error)
} }
}) })
@@ -754,7 +754,7 @@ class ClaudeRelayService {
req.on('error', async (error) => { req.on('error', async (error) => {
console.error(': ❌ ', error) console.error(': ❌ ', error)
logger.error('❌ Claude API request error:', error.message, { logger.error(`❌ Claude API request error (Account: ${accountId}):`, error.message, {
code: error.code, code: error.code,
errno: error.errno, errno: error.errno,
syscall: error.syscall, syscall: error.syscall,
@@ -781,7 +781,7 @@ class ClaudeRelayService {
req.on('timeout', async () => { req.on('timeout', async () => {
req.destroy() req.destroy()
logger.error('❌ Claude API request timeout') logger.error(`❌ Claude API request timeout (Account: ${accountId})`)
await this._handleServerError(accountId, 504, null, 'Request') await this._handleServerError(accountId, 504, null, 'Request')
@@ -889,7 +889,7 @@ class ClaudeRelayService {
options options
) )
} catch (error) { } catch (error) {
logger.error('❌ Claude stream relay with usage capture failed:', error) logger.error(`❌ Claude stream relay with usage capture failed:`, error)
throw error throw error
} }
} }
@@ -1015,7 +1015,7 @@ class ClaudeRelayService {
logger.error('❌ Error in stream error handler:', err) logger.error('❌ Error in stream error handler:', err)
}) })
logger.error(`❌ Claude API returned error status: ${res.statusCode}`) logger.error(`❌ Claude API returned error status: ${res.statusCode} | Account: ${account?.name || accountId}`)
let errorData = '' let errorData = ''
res.on('data', (chunk) => { res.on('data', (chunk) => {
@@ -1024,7 +1024,7 @@ class ClaudeRelayService {
res.on('end', () => { res.on('end', () => {
console.error(': ❌ ', errorData) console.error(': ❌ ', errorData)
logger.error('❌ Claude API error response:', errorData) logger.error(`❌ Claude API error response (Account: ${account?.name || accountId}):`, errorData)
if (!responseStream.destroyed) { if (!responseStream.destroyed) {
// 发送错误事件 // 发送错误事件
responseStream.write('event: error\n') responseStream.write('event: error\n')
@@ -1343,7 +1343,7 @@ class ClaudeRelayService {
}) })
req.on('error', async (error) => { req.on('error', async (error) => {
logger.error('❌ Claude stream request error:', error.message, { logger.error(`❌ Claude stream request error (Account: ${account?.name || accountId}):`, error.message, {
code: error.code, code: error.code,
errno: error.errno, errno: error.errno,
syscall: error.syscall syscall: error.syscall
@@ -1391,7 +1391,7 @@ class ClaudeRelayService {
req.on('timeout', async () => { req.on('timeout', async () => {
req.destroy() req.destroy()
logger.error('❌ Claude stream request timeout') logger.error(`❌ Claude stream request timeout | Account: ${account?.name || accountId}`)
if (!responseStream.headersSent) { if (!responseStream.headersSent) {
responseStream.writeHead(504, { responseStream.writeHead(504, {
@@ -1493,7 +1493,7 @@ class ClaudeRelayService {
}) })
req.on('error', async (error) => { req.on('error', async (error) => {
logger.error('❌ Claude stream request error:', error.message, { logger.error(`❌ Claude stream request error (Account: ${account?.name || accountId}):`, error.message, {
code: error.code, code: error.code,
errno: error.errno, errno: error.errno,
syscall: error.syscall syscall: error.syscall
@@ -1541,7 +1541,7 @@ class ClaudeRelayService {
req.on('timeout', async () => { req.on('timeout', async () => {
req.destroy() req.destroy()
logger.error('❌ Claude stream request timeout') logger.error(`❌ Claude stream request timeout | Account: ${account?.name || accountId}`)
if (!responseStream.headersSent) { if (!responseStream.headersSent) {
responseStream.writeHead(504, { responseStream.writeHead(504, {