[{"data":1,"prerenderedAt":2204},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-astro":402,"-frameworks-astro-surround":2199},[4,35,159,201,289,299,386],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build On Top","\u002Fbuild-on-top","5.build-on-top",[294],{"title":295,"path":296,"stem":297,"icon":298},"FS reader","\u002Fbuild-on-top\u002Ffs-reader","5.build-on-top\u002F4.fs-reader","i-lucide-folder-search",{"title":300,"path":301,"stem":302,"children":303,"page":34},"Adapters","\u002Fadapters","6.adapters",[304,307,347,362],{"title":41,"path":305,"stem":306,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":308,"path":309,"stem":310,"children":311,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[312,317,322,327,332,337,342],{"title":313,"path":314,"stem":315,"icon":316},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":318,"path":319,"stem":320,"icon":321},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":323,"path":324,"stem":325,"icon":326},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":328,"path":329,"stem":330,"icon":331},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":333,"path":334,"stem":335,"icon":336},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":338,"path":339,"stem":340,"icon":341},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":343,"path":344,"stem":345,"icon":346},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":348,"path":349,"stem":350,"children":351,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[352,357],{"title":353,"path":354,"stem":355,"icon":356},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":358,"path":359,"stem":360,"icon":361},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":363,"path":364,"stem":365,"children":366,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[367,372,377,381],{"title":368,"path":369,"stem":370,"icon":371},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":373,"path":374,"stem":375,"icon":376},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":378,"path":379,"stem":380,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":382,"path":383,"stem":384,"icon":385},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":387,"path":388,"stem":389,"children":390,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[391,394,398],{"title":41,"path":392,"stem":393,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":399,"path":400,"stem":401,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":403,"title":275,"body":404,"description":2192,"extension":2193,"links":2194,"meta":2195,"navigation":2196,"path":276,"seo":2197,"stem":277,"__hash__":2198},"docs\u002F4.frameworks\u002F14.astro.md",{"type":405,"value":406,"toc":2180},"minimark",[407,416,460,469,545,549,554,625,629,1069,1073,1181,1184,1191,1459,1504,1508,1515,1894,1897,1907,1911,1917,2133,2138,2142,2176],[408,409,410,411,415],"p",{},"Astro doesn't have a dedicated evlog integration. Instead, use the core ",[412,413,414],"code",{},"evlog"," package with Astro's middleware to create request-scoped loggers manually.",[417,418,421,424,446],"prompt",{":actions":419,"description":420,"icon":278},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my Astro app",[408,422,423],{},"Set up evlog in my Astro app.",[425,426,427,431,434,437,440,443],"ul",{},[428,429,430],"li",{},"Install evlog: pnpm add evlog",[428,432,433],{},"Import initLogger and createRequestLogger from 'evlog'",[428,435,436],{},"Call initLogger({ env: { service: 'my-app' } }) in Astro middleware",[428,438,439],{},"Create a request logger with createRequestLogger({ method, path }) per request",[428,441,442],{},"Use log.set() in API routes and middleware to accumulate context",[428,444,445],{},"Call log.emit() before returning the response (no auto-emit lifecycle)",[408,447,448,449,455,456],{},"Docs: ",[450,451,452],"a",{"href":452,"rel":453},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fastro",[454],"nofollow","\nAdapters: ",[450,457,458],{"href":458,"rel":459},"https:\u002F\u002Fwww.evlog.dev\u002Fadapters",[454],[461,462,464,465,468],"callout",{"color":463,"icon":13},"info","This is a guide-level integration. It uses the generic ",[412,466,467],{},"createRequestLogger"," API rather than a framework-specific module.",[461,470,473,519,532],{"color":471,"icon":472},"warning","i-lucide-cloud",[408,474,475,476,479,480,483,484,487,488,490,491,494,495,500,501,506,507,510,511,518],{},"On ",[477,478,266],"strong",{}," (including Astro with ",[412,481,482],{},"@astrojs\u002Fcloudflare","), set ",[412,485,486],{},"waitUntil"," on ",[412,489,467],{}," to your ",[412,492,493],{},"ExecutionContext#waitUntil"," (properly bound), or use ",[450,496,497],{"href":267},[412,498,499],{},"defineWorkerFetch"," \u002F ",[450,502,503],{"href":267},[412,504,505],{},"createWorkersLogger"," with ",[412,508,509],{},"{ executionCtx }"," on a ",[477,512,513,514,517],{},"Worker ",[412,515,516],{},"fetch"," entry",". Otherwise async drains may never finish after the response is returned.",[408,520,521,522,525,526,528,529,531],{},"For Astro ",[477,523,524],{},"middleware"," (not the raw Worker handler), there is no ",[412,527,499],{},"; you still pass ",[412,530,486],{}," from the adapter-exposed context.",[408,533,534,535,538,539,544],{},"The exact way to read ",[412,536,537],{},"ctx"," from Astro middleware depends on your adapter version — check the ",[450,540,543],{"href":541,"rel":542},"https:\u002F\u002Fdocs.astro.build\u002Fen\u002Fguides\u002Fintegrations-guide\u002Fcloudflare\u002F",[454],"Cloudflare adapter docs",".",[546,547,20],"h2",{"id":548},"quick-start",[550,551,553],"h3",{"id":552},"_1-install","1. Install",[555,556,557,582,596,610],"code-group",{},[558,559,565],"pre",{"className":560,"code":561,"filename":562,"language":563,"meta":564,"style":564},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[412,566,567],{"__ignoreMap":564},[568,569,572,575,579],"span",{"class":570,"line":571},"line",1,[568,573,562],{"class":574},"sBMFI",[568,576,578],{"class":577},"sfazB"," add",[568,580,581],{"class":577}," evlog\n",[558,583,586],{"className":560,"code":584,"filename":585,"language":563,"meta":564,"style":564},"bun add evlog\n","bun",[412,587,588],{"__ignoreMap":564},[568,589,590,592,594],{"class":570,"line":571},[568,591,585],{"class":574},[568,593,578],{"class":577},[568,595,581],{"class":577},[558,597,600],{"className":560,"code":598,"filename":599,"language":563,"meta":564,"style":564},"yarn add evlog\n","yarn",[412,601,602],{"__ignoreMap":564},[568,603,604,606,608],{"class":570,"line":571},[568,605,599],{"class":574},[568,607,578],{"class":577},[568,609,581],{"class":577},[558,611,614],{"className":560,"code":612,"filename":613,"language":563,"meta":564,"style":564},"npm install evlog\n","npm",[412,615,616],{"__ignoreMap":564},[568,617,618,620,623],{"class":570,"line":571},[568,619,613],{"class":574},[568,621,622],{"class":577}," install",[568,624,581],{"class":577},[550,626,628],{"id":627},"_2-create-a-middleware","2. Create a middleware",[558,630,635],{"className":631,"code":632,"filename":633,"language":634,"meta":564,"style":564},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineMiddleware } from 'astro:middleware'\nimport { initLogger, createRequestLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-astro-app' },\n})\n\nexport const onRequest = defineMiddleware(async ({ request, locals }, next) => {\n  const url = new URL(request.url)\n\n  const log = createRequestLogger({\n    method: request.method,\n    path: url.pathname,\n  })\n\n  locals.log = log\n\n  try {\n    const response = await next()\n    log.emit()\n    return response\n  } catch (error) {\n    log.error(error instanceof Error ? error : new Error(String(error)))\n    log.emit()\n    throw error\n  }\n})\n","src\u002Fmiddleware.ts","typescript",[412,636,637,666,692,699,712,740,749,754,804,834,839,855,873,890,898,903,919,924,932,951,964,973,992,1036,1047,1056,1062],{"__ignoreMap":564},[568,638,639,643,647,651,654,657,660,663],{"class":570,"line":571},[568,640,642],{"class":641},"s7zQu","import",[568,644,646],{"class":645},"sMK4o"," {",[568,648,650],{"class":649},"sTEyZ"," defineMiddleware",[568,652,653],{"class":645}," }",[568,655,656],{"class":641}," from",[568,658,659],{"class":645}," '",[568,661,662],{"class":577},"astro:middleware",[568,664,665],{"class":645},"'\n",[568,667,669,671,673,676,679,682,684,686,688,690],{"class":570,"line":668},2,[568,670,642],{"class":641},[568,672,646],{"class":645},[568,674,675],{"class":649}," initLogger",[568,677,678],{"class":645},",",[568,680,681],{"class":649}," createRequestLogger",[568,683,653],{"class":645},[568,685,656],{"class":641},[568,687,659],{"class":645},[568,689,414],{"class":577},[568,691,665],{"class":645},[568,693,695],{"class":570,"line":694},3,[568,696,698],{"emptyLinePlaceholder":697},true,"\n",[568,700,702,706,709],{"class":570,"line":701},4,[568,703,705],{"class":704},"s2Zo4","initLogger",[568,707,708],{"class":649},"(",[568,710,711],{"class":645},"{\n",[568,713,715,719,722,724,727,729,731,734,737],{"class":570,"line":714},5,[568,716,718],{"class":717},"swJcz","  env",[568,720,721],{"class":645},":",[568,723,646],{"class":645},[568,725,726],{"class":717}," service",[568,728,721],{"class":645},[568,730,659],{"class":645},[568,732,733],{"class":577},"my-astro-app",[568,735,736],{"class":645},"'",[568,738,739],{"class":645}," },\n",[568,741,743,746],{"class":570,"line":742},6,[568,744,745],{"class":645},"}",[568,747,748],{"class":649},")\n",[568,750,752],{"class":570,"line":751},7,[568,753,698],{"emptyLinePlaceholder":697},[568,755,757,760,764,767,770,772,774,777,780,784,786,789,792,795,798,801],{"class":570,"line":756},8,[568,758,759],{"class":641},"export",[568,761,763],{"class":762},"spNyl"," const",[568,765,766],{"class":649}," onRequest ",[568,768,769],{"class":645},"=",[568,771,650],{"class":704},[568,773,708],{"class":649},[568,775,776],{"class":762},"async",[568,778,779],{"class":645}," ({",[568,781,783],{"class":782},"sHdIc"," request",[568,785,678],{"class":645},[568,787,788],{"class":782}," locals",[568,790,791],{"class":645}," },",[568,793,794],{"class":782}," next",[568,796,797],{"class":645},")",[568,799,800],{"class":762}," =>",[568,802,803],{"class":645}," {\n",[568,805,807,810,813,816,819,822,824,827,829,832],{"class":570,"line":806},9,[568,808,809],{"class":762},"  const",[568,811,812],{"class":649}," url",[568,814,815],{"class":645}," =",[568,817,818],{"class":645}," new",[568,820,821],{"class":704}," URL",[568,823,708],{"class":717},[568,825,826],{"class":649},"request",[568,828,544],{"class":645},[568,830,831],{"class":649},"url",[568,833,748],{"class":717},[568,835,837],{"class":570,"line":836},10,[568,838,698],{"emptyLinePlaceholder":697},[568,840,842,844,847,849,851,853],{"class":570,"line":841},11,[568,843,809],{"class":762},[568,845,846],{"class":649}," log",[568,848,815],{"class":645},[568,850,681],{"class":704},[568,852,708],{"class":717},[568,854,711],{"class":645},[568,856,858,861,863,865,867,870],{"class":570,"line":857},12,[568,859,860],{"class":717},"    method",[568,862,721],{"class":645},[568,864,783],{"class":649},[568,866,544],{"class":645},[568,868,869],{"class":649},"method",[568,871,872],{"class":645},",\n",[568,874,876,879,881,883,885,888],{"class":570,"line":875},13,[568,877,878],{"class":717},"    path",[568,880,721],{"class":645},[568,882,812],{"class":649},[568,884,544],{"class":645},[568,886,887],{"class":649},"pathname",[568,889,872],{"class":645},[568,891,893,896],{"class":570,"line":892},14,[568,894,895],{"class":645},"  }",[568,897,748],{"class":717},[568,899,901],{"class":570,"line":900},15,[568,902,698],{"emptyLinePlaceholder":697},[568,904,906,909,911,914,916],{"class":570,"line":905},16,[568,907,908],{"class":649},"  locals",[568,910,544],{"class":645},[568,912,913],{"class":649},"log",[568,915,815],{"class":645},[568,917,918],{"class":649}," log\n",[568,920,922],{"class":570,"line":921},17,[568,923,698],{"emptyLinePlaceholder":697},[568,925,927,930],{"class":570,"line":926},18,[568,928,929],{"class":641},"  try",[568,931,803],{"class":645},[568,933,935,938,941,943,946,948],{"class":570,"line":934},19,[568,936,937],{"class":762},"    const",[568,939,940],{"class":649}," response",[568,942,815],{"class":645},[568,944,945],{"class":641}," await",[568,947,794],{"class":704},[568,949,950],{"class":717},"()\n",[568,952,954,957,959,962],{"class":570,"line":953},20,[568,955,956],{"class":649},"    log",[568,958,544],{"class":645},[568,960,961],{"class":704},"emit",[568,963,950],{"class":717},[568,965,967,970],{"class":570,"line":966},21,[568,968,969],{"class":641},"    return",[568,971,972],{"class":649}," response\n",[568,974,976,978,981,984,987,990],{"class":570,"line":975},22,[568,977,895],{"class":645},[568,979,980],{"class":641}," catch",[568,982,983],{"class":717}," (",[568,985,986],{"class":649},"error",[568,988,989],{"class":717},") ",[568,991,711],{"class":645},[568,993,995,997,999,1001,1003,1005,1008,1011,1014,1017,1020,1022,1024,1026,1029,1031,1033],{"class":570,"line":994},23,[568,996,956],{"class":649},[568,998,544],{"class":645},[568,1000,986],{"class":704},[568,1002,708],{"class":717},[568,1004,986],{"class":649},[568,1006,1007],{"class":645}," instanceof",[568,1009,1010],{"class":574}," Error",[568,1012,1013],{"class":645}," ?",[568,1015,1016],{"class":649}," error",[568,1018,1019],{"class":645}," :",[568,1021,818],{"class":645},[568,1023,1010],{"class":704},[568,1025,708],{"class":717},[568,1027,1028],{"class":704},"String",[568,1030,708],{"class":717},[568,1032,986],{"class":649},[568,1034,1035],{"class":717},")))\n",[568,1037,1039,1041,1043,1045],{"class":570,"line":1038},24,[568,1040,956],{"class":649},[568,1042,544],{"class":645},[568,1044,961],{"class":704},[568,1046,950],{"class":717},[568,1048,1050,1053],{"class":570,"line":1049},25,[568,1051,1052],{"class":641},"    throw",[568,1054,1055],{"class":649}," error\n",[568,1057,1059],{"class":570,"line":1058},26,[568,1060,1061],{"class":645},"  }\n",[568,1063,1065,1067],{"class":570,"line":1064},27,[568,1066,745],{"class":645},[568,1068,748],{"class":649},[550,1070,1072],{"id":1071},"_3-type-your-locals","3. Type your locals",[558,1074,1077],{"className":631,"code":1075,"filename":1076,"language":634,"meta":564,"style":564},"\u002F\u002F\u002F \u003Creference types=\"astro\u002Fclient\" \u002F>\n\nimport type { RequestLogger } from 'evlog'\n\ndeclare namespace App {\n  interface Locals {\n    log: RequestLogger\n  }\n}\n","src\u002Fenv.d.ts",[412,1078,1079,1110,1114,1136,1140,1153,1163,1172,1176],{"__ignoreMap":564},[568,1080,1081,1085,1088,1092,1096,1098,1101,1105,1107],{"class":570,"line":571},[568,1082,1084],{"class":1083},"sHwdD","\u002F\u002F\u002F ",[568,1086,1087],{"class":641},"\u003C",[568,1089,1091],{"class":1090},"s5tWE","reference",[568,1093,1095],{"class":1094},"s6hCs"," types",[568,1097,769],{"class":641},[568,1099,1100],{"class":641},"\"",[568,1102,1104],{"class":1103},"smbvS","astro\u002Fclient",[568,1106,1100],{"class":641},[568,1108,1109],{"class":641}," \u002F>\n",[568,1111,1112],{"class":570,"line":668},[568,1113,698],{"emptyLinePlaceholder":697},[568,1115,1116,1118,1121,1123,1126,1128,1130,1132,1134],{"class":570,"line":694},[568,1117,642],{"class":641},[568,1119,1120],{"class":641}," type",[568,1122,646],{"class":645},[568,1124,1125],{"class":649}," RequestLogger",[568,1127,653],{"class":645},[568,1129,656],{"class":641},[568,1131,659],{"class":645},[568,1133,414],{"class":577},[568,1135,665],{"class":645},[568,1137,1138],{"class":570,"line":701},[568,1139,698],{"emptyLinePlaceholder":697},[568,1141,1142,1145,1148,1151],{"class":570,"line":714},[568,1143,1144],{"class":762},"declare",[568,1146,1147],{"class":762}," namespace",[568,1149,1150],{"class":574}," App",[568,1152,803],{"class":645},[568,1154,1155,1158,1161],{"class":570,"line":742},[568,1156,1157],{"class":762},"  interface",[568,1159,1160],{"class":574}," Locals",[568,1162,803],{"class":645},[568,1164,1165,1167,1169],{"class":570,"line":751},[568,1166,956],{"class":717},[568,1168,721],{"class":645},[568,1170,1171],{"class":574}," RequestLogger\n",[568,1173,1174],{"class":570,"line":756},[568,1175,1061],{"class":645},[568,1177,1178],{"class":570,"line":806},[568,1179,1180],{"class":645},"}\n",[546,1182,51],{"id":1183},"wide-events",[408,1185,1186,1187,1190],{},"Access the logger from ",[412,1188,1189],{},"Astro.locals"," in your pages and API routes:",[558,1192,1195],{"className":631,"code":1193,"filename":1194,"language":634,"meta":564,"style":564},"import type { APIRoute } from 'astro'\n\nexport const GET: APIRoute = async ({ params, locals }) => {\n  locals.log.set({ user: { id: params.id } })\n\n  const user = await db.findUser(params.id)\n  locals.log.set({ user: { name: user.name, plan: user.plan } })\n\n  return new Response(JSON.stringify(user), {\n    headers: { 'Content-Type': 'application\u002Fjson' },\n  })\n}\n","src\u002Fpages\u002Fapi\u002Fusers\u002F[id].ts",[412,1196,1197,1219,1223,1257,1300,1304,1333,1387,1391,1422,1449,1455],{"__ignoreMap":564},[568,1198,1199,1201,1203,1205,1208,1210,1212,1214,1217],{"class":570,"line":571},[568,1200,642],{"class":641},[568,1202,1120],{"class":641},[568,1204,646],{"class":645},[568,1206,1207],{"class":649}," APIRoute",[568,1209,653],{"class":645},[568,1211,656],{"class":641},[568,1213,659],{"class":645},[568,1215,1216],{"class":577},"astro",[568,1218,665],{"class":645},[568,1220,1221],{"class":570,"line":668},[568,1222,698],{"emptyLinePlaceholder":697},[568,1224,1225,1227,1229,1232,1234,1236,1238,1241,1243,1246,1248,1250,1253,1255],{"class":570,"line":694},[568,1226,759],{"class":641},[568,1228,763],{"class":762},[568,1230,1231],{"class":649}," GET",[568,1233,721],{"class":645},[568,1235,1207],{"class":574},[568,1237,815],{"class":645},[568,1239,1240],{"class":762}," async",[568,1242,779],{"class":645},[568,1244,1245],{"class":782}," params",[568,1247,678],{"class":645},[568,1249,788],{"class":782},[568,1251,1252],{"class":645}," })",[568,1254,800],{"class":762},[568,1256,803],{"class":645},[568,1258,1259,1261,1263,1265,1267,1270,1272,1275,1278,1280,1282,1285,1287,1289,1291,1294,1296,1298],{"class":570,"line":701},[568,1260,908],{"class":649},[568,1262,544],{"class":645},[568,1264,913],{"class":649},[568,1266,544],{"class":645},[568,1268,1269],{"class":704},"set",[568,1271,708],{"class":717},[568,1273,1274],{"class":645},"{",[568,1276,1277],{"class":717}," user",[568,1279,721],{"class":645},[568,1281,646],{"class":645},[568,1283,1284],{"class":717}," id",[568,1286,721],{"class":645},[568,1288,1245],{"class":649},[568,1290,544],{"class":645},[568,1292,1293],{"class":649},"id",[568,1295,653],{"class":645},[568,1297,653],{"class":645},[568,1299,748],{"class":717},[568,1301,1302],{"class":570,"line":714},[568,1303,698],{"emptyLinePlaceholder":697},[568,1305,1306,1308,1310,1312,1314,1317,1319,1322,1324,1327,1329,1331],{"class":570,"line":742},[568,1307,809],{"class":762},[568,1309,1277],{"class":649},[568,1311,815],{"class":645},[568,1313,945],{"class":641},[568,1315,1316],{"class":649}," db",[568,1318,544],{"class":645},[568,1320,1321],{"class":704},"findUser",[568,1323,708],{"class":717},[568,1325,1326],{"class":649},"params",[568,1328,544],{"class":645},[568,1330,1293],{"class":649},[568,1332,748],{"class":717},[568,1334,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1358,1360,1362,1364,1367,1369,1372,1374,1376,1378,1381,1383,1385],{"class":570,"line":751},[568,1336,908],{"class":649},[568,1338,544],{"class":645},[568,1340,913],{"class":649},[568,1342,544],{"class":645},[568,1344,1269],{"class":704},[568,1346,708],{"class":717},[568,1348,1274],{"class":645},[568,1350,1277],{"class":717},[568,1352,721],{"class":645},[568,1354,646],{"class":645},[568,1356,1357],{"class":717}," name",[568,1359,721],{"class":645},[568,1361,1277],{"class":649},[568,1363,544],{"class":645},[568,1365,1366],{"class":649},"name",[568,1368,678],{"class":645},[568,1370,1371],{"class":717}," plan",[568,1373,721],{"class":645},[568,1375,1277],{"class":649},[568,1377,544],{"class":645},[568,1379,1380],{"class":649},"plan",[568,1382,653],{"class":645},[568,1384,653],{"class":645},[568,1386,748],{"class":717},[568,1388,1389],{"class":570,"line":756},[568,1390,698],{"emptyLinePlaceholder":697},[568,1392,1393,1396,1398,1401,1403,1406,1408,1411,1413,1416,1418,1420],{"class":570,"line":806},[568,1394,1395],{"class":641},"  return",[568,1397,818],{"class":645},[568,1399,1400],{"class":704}," Response",[568,1402,708],{"class":717},[568,1404,1405],{"class":649},"JSON",[568,1407,544],{"class":645},[568,1409,1410],{"class":704},"stringify",[568,1412,708],{"class":717},[568,1414,1415],{"class":649},"user",[568,1417,797],{"class":717},[568,1419,678],{"class":645},[568,1421,803],{"class":645},[568,1423,1424,1427,1429,1431,1433,1436,1438,1440,1442,1445,1447],{"class":570,"line":836},[568,1425,1426],{"class":717},"    headers",[568,1428,721],{"class":645},[568,1430,646],{"class":645},[568,1432,659],{"class":645},[568,1434,1435],{"class":717},"Content-Type",[568,1437,736],{"class":645},[568,1439,721],{"class":645},[568,1441,659],{"class":645},[568,1443,1444],{"class":577},"application\u002Fjson",[568,1446,736],{"class":645},[568,1448,739],{"class":645},[568,1450,1451,1453],{"class":570,"line":841},[568,1452,895],{"class":645},[568,1454,748],{"class":717},[568,1456,1457],{"class":570,"line":857},[568,1458,1180],{"class":645},[558,1460,1463],{"className":560,"code":1461,"filename":1462,"language":563,"meta":564,"style":564},"14:58:15 INFO [my-astro-app] GET \u002Fapi\u002Fusers\u002Fusr_123\n  ├─ user: id=usr_123 name=Alice plan=pro\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[412,1464,1465,1476,1493],{"__ignoreMap":564},[568,1466,1467,1470,1473],{"class":570,"line":571},[568,1468,1469],{"class":574},"14:58:15",[568,1471,1472],{"class":577}," INFO",[568,1474,1475],{"class":649}," [my-astro-app] GET \u002Fapi\u002Fusers\u002Fusr_123\n",[568,1477,1478,1481,1484,1487,1490],{"class":570,"line":668},[568,1479,1480],{"class":574},"  ├─",[568,1482,1483],{"class":577}," user:",[568,1485,1486],{"class":577}," id=usr_123",[568,1488,1489],{"class":577}," name=Alice",[568,1491,1492],{"class":577}," plan=pro\n",[568,1494,1495,1498,1501],{"class":570,"line":694},[568,1496,1497],{"class":574},"  └─",[568,1499,1500],{"class":577}," requestId:",[568,1502,1503],{"class":577}," 4a8ff3a8-...\n",[546,1505,1507],{"id":1506},"error-handling","Error Handling",[408,1509,1510,1511,1514],{},"Use ",[412,1512,1513],{},"createError"," for structured errors:",[558,1516,1519],{"className":631,"code":1517,"filename":1518,"language":634,"meta":564,"style":564},"import type { APIRoute } from 'astro'\nimport { createError, parseError } from 'evlog'\n\nexport const POST: APIRoute = async ({ request, locals }) => {\n  const body = await request.json()\n  locals.log.set({ cart: { items: body.items } })\n\n  if (!body.paymentMethod) {\n    const error = createError({\n      status: 400,\n      message: 'Missing payment method',\n      why: 'No payment method was provided',\n      fix: 'Include a paymentMethod field in the request body',\n    })\n    locals.log.error(error)\n    const parsed = parseError(error)\n    return new Response(JSON.stringify(parsed), { status: parsed.status })\n  }\n\n  return new Response(JSON.stringify({ success: true }))\n}\n","src\u002Fpages\u002Fapi\u002Fcheckout.ts",[412,1520,1521,1541,1565,1569,1600,1620,1661,1665,1687,1701,1714,1730,1746,1762,1769,1788,1805,1848,1852,1856,1890],{"__ignoreMap":564},[568,1522,1523,1525,1527,1529,1531,1533,1535,1537,1539],{"class":570,"line":571},[568,1524,642],{"class":641},[568,1526,1120],{"class":641},[568,1528,646],{"class":645},[568,1530,1207],{"class":649},[568,1532,653],{"class":645},[568,1534,656],{"class":641},[568,1536,659],{"class":645},[568,1538,1216],{"class":577},[568,1540,665],{"class":645},[568,1542,1543,1545,1547,1550,1552,1555,1557,1559,1561,1563],{"class":570,"line":668},[568,1544,642],{"class":641},[568,1546,646],{"class":645},[568,1548,1549],{"class":649}," createError",[568,1551,678],{"class":645},[568,1553,1554],{"class":649}," parseError",[568,1556,653],{"class":645},[568,1558,656],{"class":641},[568,1560,659],{"class":645},[568,1562,414],{"class":577},[568,1564,665],{"class":645},[568,1566,1567],{"class":570,"line":694},[568,1568,698],{"emptyLinePlaceholder":697},[568,1570,1571,1573,1575,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598],{"class":570,"line":701},[568,1572,759],{"class":641},[568,1574,763],{"class":762},[568,1576,1577],{"class":649}," POST",[568,1579,721],{"class":645},[568,1581,1207],{"class":574},[568,1583,815],{"class":645},[568,1585,1240],{"class":762},[568,1587,779],{"class":645},[568,1589,783],{"class":782},[568,1591,678],{"class":645},[568,1593,788],{"class":782},[568,1595,1252],{"class":645},[568,1597,800],{"class":762},[568,1599,803],{"class":645},[568,1601,1602,1604,1607,1609,1611,1613,1615,1618],{"class":570,"line":714},[568,1603,809],{"class":762},[568,1605,1606],{"class":649}," body",[568,1608,815],{"class":645},[568,1610,945],{"class":641},[568,1612,783],{"class":649},[568,1614,544],{"class":645},[568,1616,1617],{"class":704},"json",[568,1619,950],{"class":717},[568,1621,1622,1624,1626,1628,1630,1632,1634,1636,1639,1641,1643,1646,1648,1650,1652,1655,1657,1659],{"class":570,"line":742},[568,1623,908],{"class":649},[568,1625,544],{"class":645},[568,1627,913],{"class":649},[568,1629,544],{"class":645},[568,1631,1269],{"class":704},[568,1633,708],{"class":717},[568,1635,1274],{"class":645},[568,1637,1638],{"class":717}," cart",[568,1640,721],{"class":645},[568,1642,646],{"class":645},[568,1644,1645],{"class":717}," items",[568,1647,721],{"class":645},[568,1649,1606],{"class":649},[568,1651,544],{"class":645},[568,1653,1654],{"class":649},"items",[568,1656,653],{"class":645},[568,1658,653],{"class":645},[568,1660,748],{"class":717},[568,1662,1663],{"class":570,"line":751},[568,1664,698],{"emptyLinePlaceholder":697},[568,1666,1667,1670,1672,1675,1678,1680,1683,1685],{"class":570,"line":756},[568,1668,1669],{"class":641},"  if",[568,1671,983],{"class":717},[568,1673,1674],{"class":645},"!",[568,1676,1677],{"class":649},"body",[568,1679,544],{"class":645},[568,1681,1682],{"class":649},"paymentMethod",[568,1684,989],{"class":717},[568,1686,711],{"class":645},[568,1688,1689,1691,1693,1695,1697,1699],{"class":570,"line":806},[568,1690,937],{"class":762},[568,1692,1016],{"class":649},[568,1694,815],{"class":645},[568,1696,1549],{"class":704},[568,1698,708],{"class":717},[568,1700,711],{"class":645},[568,1702,1703,1706,1708,1712],{"class":570,"line":836},[568,1704,1705],{"class":717},"      status",[568,1707,721],{"class":645},[568,1709,1711],{"class":1710},"sbssI"," 400",[568,1713,872],{"class":645},[568,1715,1716,1719,1721,1723,1726,1728],{"class":570,"line":841},[568,1717,1718],{"class":717},"      message",[568,1720,721],{"class":645},[568,1722,659],{"class":645},[568,1724,1725],{"class":577},"Missing payment method",[568,1727,736],{"class":645},[568,1729,872],{"class":645},[568,1731,1732,1735,1737,1739,1742,1744],{"class":570,"line":857},[568,1733,1734],{"class":717},"      why",[568,1736,721],{"class":645},[568,1738,659],{"class":645},[568,1740,1741],{"class":577},"No payment method was provided",[568,1743,736],{"class":645},[568,1745,872],{"class":645},[568,1747,1748,1751,1753,1755,1758,1760],{"class":570,"line":875},[568,1749,1750],{"class":717},"      fix",[568,1752,721],{"class":645},[568,1754,659],{"class":645},[568,1756,1757],{"class":577},"Include a paymentMethod field in the request body",[568,1759,736],{"class":645},[568,1761,872],{"class":645},[568,1763,1764,1767],{"class":570,"line":892},[568,1765,1766],{"class":645},"    }",[568,1768,748],{"class":717},[568,1770,1771,1774,1776,1778,1780,1782,1784,1786],{"class":570,"line":900},[568,1772,1773],{"class":649},"    locals",[568,1775,544],{"class":645},[568,1777,913],{"class":649},[568,1779,544],{"class":645},[568,1781,986],{"class":704},[568,1783,708],{"class":717},[568,1785,986],{"class":649},[568,1787,748],{"class":717},[568,1789,1790,1792,1795,1797,1799,1801,1803],{"class":570,"line":905},[568,1791,937],{"class":762},[568,1793,1794],{"class":649}," parsed",[568,1796,815],{"class":645},[568,1798,1554],{"class":704},[568,1800,708],{"class":717},[568,1802,986],{"class":649},[568,1804,748],{"class":717},[568,1806,1807,1809,1811,1813,1815,1817,1819,1821,1823,1826,1828,1830,1832,1835,1837,1839,1841,1844,1846],{"class":570,"line":921},[568,1808,969],{"class":641},[568,1810,818],{"class":645},[568,1812,1400],{"class":704},[568,1814,708],{"class":717},[568,1816,1405],{"class":649},[568,1818,544],{"class":645},[568,1820,1410],{"class":704},[568,1822,708],{"class":717},[568,1824,1825],{"class":649},"parsed",[568,1827,797],{"class":717},[568,1829,678],{"class":645},[568,1831,646],{"class":645},[568,1833,1834],{"class":717}," status",[568,1836,721],{"class":645},[568,1838,1794],{"class":649},[568,1840,544],{"class":645},[568,1842,1843],{"class":649},"status",[568,1845,653],{"class":645},[568,1847,748],{"class":717},[568,1849,1850],{"class":570,"line":926},[568,1851,1061],{"class":645},[568,1853,1854],{"class":570,"line":934},[568,1855,698],{"emptyLinePlaceholder":697},[568,1857,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1879,1881,1885,1887],{"class":570,"line":953},[568,1859,1395],{"class":641},[568,1861,818],{"class":645},[568,1863,1400],{"class":704},[568,1865,708],{"class":717},[568,1867,1405],{"class":649},[568,1869,544],{"class":645},[568,1871,1410],{"class":704},[568,1873,708],{"class":717},[568,1875,1274],{"class":645},[568,1877,1878],{"class":717}," success",[568,1880,721],{"class":645},[568,1882,1884],{"class":1883},"sfNiH"," true",[568,1886,653],{"class":645},[568,1888,1889],{"class":717},"))\n",[568,1891,1892],{"class":570,"line":966},[568,1893,1180],{"class":645},[546,1895,170],{"id":1896},"configuration",[408,1898,1899,1900,1903,1904,1906],{},"See the ",[450,1901,1902],{"href":171},"Configuration reference"," for all available options (",[412,1905,705],{},", middleware options, sampling, silent mode, etc.).",[546,1908,1910],{"id":1909},"drain","Drain",[408,1912,1913,1914,1916],{},"Configure drain in ",[412,1915,705],{}," inside your middleware:",[558,1918,1920],{"className":631,"code":1919,"filename":633,"language":634,"meta":564,"style":564},"import { initLogger, createRequestLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport type { DrainContext } from 'evlog'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n})\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({\n  env: { service: 'my-astro-app' },\n  drain,\n})\n",[412,1921,1922,1944,1964,1984,2005,2009,2033,2062,2068,2088,2092,2100,2120,2127],{"__ignoreMap":564},[568,1923,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942],{"class":570,"line":571},[568,1925,642],{"class":641},[568,1927,646],{"class":645},[568,1929,675],{"class":649},[568,1931,678],{"class":645},[568,1933,681],{"class":649},[568,1935,653],{"class":645},[568,1937,656],{"class":641},[568,1939,659],{"class":645},[568,1941,414],{"class":577},[568,1943,665],{"class":645},[568,1945,1946,1948,1950,1953,1955,1957,1959,1962],{"class":570,"line":668},[568,1947,642],{"class":641},[568,1949,646],{"class":645},[568,1951,1952],{"class":649}," createAxiomDrain",[568,1954,653],{"class":645},[568,1956,656],{"class":641},[568,1958,659],{"class":645},[568,1960,1961],{"class":577},"evlog\u002Faxiom",[568,1963,665],{"class":645},[568,1965,1966,1968,1970,1973,1975,1977,1979,1982],{"class":570,"line":694},[568,1967,642],{"class":641},[568,1969,646],{"class":645},[568,1971,1972],{"class":649}," createDrainPipeline",[568,1974,653],{"class":645},[568,1976,656],{"class":641},[568,1978,659],{"class":645},[568,1980,1981],{"class":577},"evlog\u002Fpipeline",[568,1983,665],{"class":645},[568,1985,1986,1988,1990,1992,1995,1997,1999,2001,2003],{"class":570,"line":701},[568,1987,642],{"class":641},[568,1989,1120],{"class":641},[568,1991,646],{"class":645},[568,1993,1994],{"class":649}," DrainContext",[568,1996,653],{"class":645},[568,1998,656],{"class":641},[568,2000,659],{"class":645},[568,2002,414],{"class":577},[568,2004,665],{"class":645},[568,2006,2007],{"class":570,"line":714},[568,2008,698],{"emptyLinePlaceholder":697},[568,2010,2011,2014,2017,2019,2021,2023,2026,2029,2031],{"class":570,"line":742},[568,2012,2013],{"class":762},"const",[568,2015,2016],{"class":649}," pipeline ",[568,2018,769],{"class":645},[568,2020,1972],{"class":704},[568,2022,1087],{"class":645},[568,2024,2025],{"class":574},"DrainContext",[568,2027,2028],{"class":645},">",[568,2030,708],{"class":649},[568,2032,711],{"class":645},[568,2034,2035,2038,2040,2042,2045,2047,2050,2052,2055,2057,2060],{"class":570,"line":751},[568,2036,2037],{"class":717},"  batch",[568,2039,721],{"class":645},[568,2041,646],{"class":645},[568,2043,2044],{"class":717}," size",[568,2046,721],{"class":645},[568,2048,2049],{"class":1710}," 50",[568,2051,678],{"class":645},[568,2053,2054],{"class":717}," intervalMs",[568,2056,721],{"class":645},[568,2058,2059],{"class":1710}," 5000",[568,2061,739],{"class":645},[568,2063,2064,2066],{"class":570,"line":756},[568,2065,745],{"class":645},[568,2067,748],{"class":649},[568,2069,2070,2072,2075,2077,2080,2082,2085],{"class":570,"line":806},[568,2071,2013],{"class":762},[568,2073,2074],{"class":649}," drain ",[568,2076,769],{"class":645},[568,2078,2079],{"class":704}," pipeline",[568,2081,708],{"class":649},[568,2083,2084],{"class":704},"createAxiomDrain",[568,2086,2087],{"class":649},"())\n",[568,2089,2090],{"class":570,"line":836},[568,2091,698],{"emptyLinePlaceholder":697},[568,2093,2094,2096,2098],{"class":570,"line":841},[568,2095,705],{"class":704},[568,2097,708],{"class":649},[568,2099,711],{"class":645},[568,2101,2102,2104,2106,2108,2110,2112,2114,2116,2118],{"class":570,"line":857},[568,2103,718],{"class":717},[568,2105,721],{"class":645},[568,2107,646],{"class":645},[568,2109,726],{"class":717},[568,2111,721],{"class":645},[568,2113,659],{"class":645},[568,2115,733],{"class":577},[568,2117,736],{"class":645},[568,2119,739],{"class":645},[568,2121,2122,2125],{"class":570,"line":875},[568,2123,2124],{"class":649},"  drain",[568,2126,872],{"class":645},[568,2128,2129,2131],{"class":570,"line":892},[568,2130,745],{"class":645},[568,2132,748],{"class":649},[461,2134,1899,2135,2137],{"color":463,"icon":13},[450,2136,300],{"href":305}," docs for all available drain adapters.",[546,2139,2141],{"id":2140},"next-steps","Next Steps",[425,2143,2144,2149,2154,2159],{},[428,2145,2146,2148],{},[450,2147,51],{"href":52},": Design comprehensive events with context layering",[428,2150,2151,2153],{},[450,2152,300],{"href":305},": Send logs to Axiom, Sentry, PostHog, and more",[428,2155,2156,2158],{},[450,2157,175],{"href":176},": Control log volume with head and tail sampling",[428,2160,2161,2163,2164,2167,2168,2171,2172,2175],{},[450,2162,56],{"href":57},": Throw errors with ",[412,2165,2166],{},"why",", ",[412,2169,2170],{},"fix",", and ",[412,2173,2174],{},"link"," fields",[2177,2178,2179],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s5tWE, html code.shiki .s5tWE{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#F07178;--shiki-default-font-style:italic;--shiki-dark:#F07178;--shiki-dark-font-style:italic}html pre.shiki code .s6hCs, html code.shiki .s6hCs{--shiki-light:#9C3EDA;--shiki-light-font-style:italic;--shiki-default:#C792EA;--shiki-default-font-style:italic;--shiki-dark:#C792EA;--shiki-dark-font-style:italic}html pre.shiki code .smbvS, html code.shiki .smbvS{--shiki-light:#91B859;--shiki-light-font-style:italic;--shiki-default:#C3E88D;--shiki-default-font-style:italic;--shiki-dark:#C3E88D;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":564,"searchDepth":668,"depth":668,"links":2181},[2182,2187,2188,2189,2190,2191],{"id":548,"depth":668,"text":20,"children":2183},[2184,2185,2186],{"id":552,"depth":694,"text":553},{"id":627,"depth":694,"text":628},{"id":1071,"depth":694,"text":1072},{"id":1183,"depth":668,"text":51},{"id":1506,"depth":668,"text":1507},{"id":1896,"depth":668,"text":170},{"id":1909,"depth":668,"text":1910},{"id":2140,"depth":668,"text":2141},"Wide events and structured errors in Astro server middleware.","md",null,{},{"title":275,"icon":278},{"title":275,"description":2192},"E7939_aGKUrqsF1ByohLGrWPiOe7Bpb4tIexst7sjRs",[2200,2202],{"title":271,"path":272,"stem":273,"description":2201,"icon":183,"children":-1},"Use evlog in standalone TypeScript scripts, CLI tools, queues, cron jobs, and any TypeScript process.",{"title":280,"path":281,"stem":282,"description":2203,"icon":283,"children":-1},"Wide events and structured logging in AWS Lambda functions, including SQS consumers and event-driven handlers.",1778325965947]