MCPcopy
hub / github.com/firecrawl/firecrawl / logRequest

Function logRequest

apps/api/src/services/logging/log_job.ts:189–239  ·  view source on GitHub ↗
(request: LoggedRequest)

Source from the content-addressed store, hash-verified

187};
188
189export async function logRequest(request: LoggedRequest) {
190 const logger = _logger.child({
191 module: "log_job",
192 method: "logRequest",
193 requestId: request.id,
194 teamId: request.team_id,
195 zeroDataRetention: request.zeroDataRetention,
196 });
197
198 // Emit a one-time PostHog milestone the first time this team uses each
199 // surface (playground / sdk / mcp / cli / api / ...). Fire-and-forget.
200 // Skip zero-data-retention requests — don't send their metadata to PostHog.
201 if (!request.zeroDataRetention) {
202 trackFirstSurfaceUse({
203 teamId: request.team_id,
204 origin: request.origin,
205 kind: request.kind,
206 apiVersion: request.api_version,
207 apiKeyId: request.api_key_id,
208 });
209 }
210
211 // Sanitize user-provided fields (most likely sources of null bytes)
212 const sanitizedOrigin = sanitizeString(request.origin);
213 const sanitizedIntegration = sanitizeString(request.integration ?? null);
214 const sanitizedTargetHint = request.zeroDataRetention
215 ? "<redacted due to zero data retention>"
216 : sanitizeString(request.target_hint);
217
218 await robustInsert(
219 "requests",
220 {
221 id: request.id,
222 kind: request.kind,
223 api_version: request.api_version,
224 team_id:
225 request.team_id === "preview" || request.team_id?.startsWith("preview_")
226 ? previewTeamId
227 : request.team_id,
228 origin: sanitizedOrigin,
229 integration: sanitizedIntegration,
230 target_hint: sanitizedTargetHint,
231 dr_clean_by: request.zeroDataRetention
232 ? new Date(Date.now() + 24 * 60 * 60 * 1000)
233 : null,
234 api_key_id: request.api_key_id ?? null,
235 },
236 true,
237 logger,
238 );
239}
240
241export type LoggedScrape = {
242 id: string;

Callers 15

scrapeControllerFunction · 0.90
crawlControllerFunction · 0.90
searchControllerFunction · 0.90
crawlMonitorControllerFunction · 0.90
extractControllerFunction · 0.90
createSessionForScrapeFunction · 0.90
scrapeControllerFunction · 0.90
crawlControllerFunction · 0.90
mapControllerFunction · 0.90
browserCreateControllerFunction · 0.90
createResearchControllerFunction · 0.90
batchScrapeControllerFunction · 0.90

Calls 4

trackFirstSurfaceUseFunction · 0.90
sanitizeStringFunction · 0.85
robustInsertFunction · 0.85
childMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…