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