(request: Request, statusCode: number)
| 87 | * Queues a request log entry for the next batch flush to Profound. |
| 88 | */ |
| 89 | export function sendToProfound(request: Request, statusCode: number): void { |
| 90 | if (!isProfoundEnabled()) return |
| 91 | |
| 92 | try { |
| 93 | const url = new URL(request.url) |
| 94 | const queryParams: Record<string, string> = {} |
| 95 | url.searchParams.forEach((value, key) => { |
| 96 | queryParams[key] = value |
| 97 | }) |
| 98 | |
| 99 | buffer.push({ |
| 100 | timestamp: new Date().toISOString(), |
| 101 | method: request.method, |
| 102 | host: getBaseDomain(), |
| 103 | path: url.pathname, |
| 104 | status_code: statusCode, |
| 105 | ip: (() => { |
| 106 | const resolved = getClientIp(request) |
| 107 | return resolved === 'unknown' ? '0.0.0.0' : resolved |
| 108 | })(), |
| 109 | user_agent: request.headers.get('user-agent') || '', |
| 110 | ...(Object.keys(queryParams).length > 0 && { query_params: queryParams }), |
| 111 | ...(request.headers.get('referer') && { referer: request.headers.get('referer')! }), |
| 112 | }) |
| 113 | |
| 114 | ensureFlushTimer() |
| 115 | |
| 116 | if (buffer.length >= MAX_BATCH_SIZE) { |
| 117 | flush().catch(() => {}) |
| 118 | } |
| 119 | } catch (error) { |
| 120 | logger.error('Failed to enqueue log entry', error) |
| 121 | } |
| 122 | } |
no test coverage detected