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