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