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