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