将已完成的请求写入日志文件和/或 SQLite
(summary: RequestSummary, payload: RequestPayload)
| 496 | |
| 497 | /** 将已完成的请求写入日志文件和/或 SQLite */ |
| 498 | function persistRequest(summary: RequestSummary, payload: RequestPayload): void { |
| 499 | // ---- 原有 JSONL 文件方式(保持不变)---- |
| 500 | const filepath = getLogFilePath(); |
| 501 | if (filepath) { |
| 502 | try { |
| 503 | ensureLogDir(); |
| 504 | const persistMode = getPersistMode(); |
| 505 | const persistedPayload = persistMode === 'full' |
| 506 | ? payload |
| 507 | : persistMode === 'summary' |
| 508 | ? buildSummaryPayload(summary, payload) |
| 509 | : compactPayloadForDisk(summary, payload); |
| 510 | const record = { timestamp: Date.now(), summary, payload: persistedPayload }; |
| 511 | appendFileSync(filepath, JSON.stringify(record) + '\n', 'utf-8'); |
| 512 | } catch (e) { |
| 513 | console.warn('[Logger] 写入日志文件失败:', e); |
| 514 | } |
| 515 | } |
| 516 | |
| 517 | // ---- 新增 SQLite 方式 ---- |
| 518 | const cfg = getConfig(); |
| 519 | if (cfg.logging?.db_enabled) { |
| 520 | try { |
| 521 | dbInsertRequest(summary, payload); |
| 522 | } catch (e) { |
| 523 | console.warn('[Logger] 写入 SQLite 失败:', e); |
| 524 | } |
| 525 | } |
| 526 | } |
| 527 | |
| 528 | /** 启动时从日志文件和/或 SQLite 加载历史记录 */ |
| 529 | export function loadLogsFromFiles(): void { |
no test coverage detected