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