[{"data":1,"prerenderedAt":2694},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-sveltekit":258,"-frameworks-sveltekit-surround":2689},[4,30,115,174,228,244],{"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},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"React Router","\u002Fframeworks\u002Freact-router","2.frameworks\u002F11.react-router","i-simple-icons-reactrouter",{"title":96,"path":97,"stem":98,"icon":99},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":101,"path":102,"stem":103,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F13.standalone","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":109},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F14.astro","i-simple-icons-astro",{"title":111,"path":112,"stem":113,"icon":114},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":116,"path":117,"stem":118,"children":119,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[120,125,130,135,140,145,150,154,159,164,169],{"title":121,"path":122,"stem":123,"icon":124},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":126,"path":127,"stem":128,"icon":129},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":131,"path":132,"stem":133,"icon":134},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F10.vite-plugin","i-custom-vite",{"title":136,"path":137,"stem":138,"icon":139},"AI SDK Integration","\u002Fcore-concepts\u002Fai-sdk","3.core-concepts\u002F11.ai-sdk","i-simple-icons-vercel",{"title":141,"path":142,"stem":143,"icon":144},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":146,"path":147,"stem":148,"icon":149},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":151,"path":152,"stem":153,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":155,"path":156,"stem":157,"icon":158},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":160,"path":161,"stem":162,"icon":163},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":165,"path":166,"stem":167,"icon":168},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":170,"path":171,"stem":172,"icon":173},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F8.performance","i-lucide-gauge",{"title":175,"path":176,"stem":177,"children":178,"page":29},"Adapters","\u002Fadapters","4.adapters",[179,183,188,193,198,203,208,213,218,223],{"title":36,"path":180,"stem":181,"icon":182},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":184,"path":185,"stem":186,"icon":187},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":189,"path":190,"stem":191,"icon":192},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":194,"path":195,"stem":196,"icon":197},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":199,"path":200,"stem":201,"icon":202},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":204,"path":205,"stem":206,"icon":207},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":209,"path":210,"stem":211,"icon":212},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":214,"path":215,"stem":216,"icon":217},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":219,"path":220,"stem":221,"icon":222},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":224,"path":225,"stem":226,"icon":227},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":229,"path":230,"stem":231,"children":232,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[233,236,240],{"title":36,"path":234,"stem":235,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":237,"path":238,"stem":239,"icon":114},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":241,"path":242,"stem":243,"icon":222},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":245,"path":246,"stem":247,"children":248,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[249,253],{"title":36,"path":250,"stem":251,"icon":252},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":254,"path":255,"stem":256,"icon":257},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":259,"title":51,"body":260,"description":2679,"extension":2680,"links":2681,"meta":2685,"navigation":2686,"path":52,"seo":2687,"stem":53,"__hash__":2688},"docs\u002F2.frameworks\u002F03.sveltekit.md",{"type":261,"value":262,"toc":2661},"minimark",[263,287,368,372,377,397,401,571,579,583,641,645,745,748,751,1097,1100,1165,1168,1174,1355,1486,1501,1505,1526,1788,1791,1848,1851,1861,1865,1868,2062,2066,2073,2292,2304,2308,2314,2427,2431,2441,2594,2598,2638,2647,2657],[264,265,266,267,271,272,275,276,279,280,275,283,286],"p",{},"The ",[268,269,270],"code",{},"evlog\u002Fsveltekit"," adapter provides ",[268,273,274],{},"handle"," and ",[268,277,278],{},"handleError"," hooks that auto-create a request-scoped logger accessible via ",[268,281,282],{},"event.locals.log",[268,284,285],{},"useLogger()",", emitting a wide event when the response completes.",[288,289,290],"code-collapse",{},[291,292,298],"pre",{"className":293,"code":294,"filename":295,"language":296,"meta":297,"style":297},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Set up evlog in my SvelteKit app.\n\n- Install evlog: pnpm add evlog\n- Add evlog\u002Fvite plugin to vite.config.ts with service name (handles auto-init, debug stripping)\n- Export handle and handleError from evlog\u002Fsveltekit in hooks.server.ts\n- Access the logger via event.locals.log or useLogger() in routes and services\n- Use log.set() to accumulate context, throw createError() for structured errors\n- Wide events are auto-emitted when each request completes\n\nDocs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fsveltekit\nAdapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n","Prompt","txt","",[268,299,300,308,315,321,327,333,339,345,351,356,362],{"__ignoreMap":297},[301,302,305],"span",{"class":303,"line":304},"line",1,[301,306,307],{},"Set up evlog in my SvelteKit app.\n",[301,309,311],{"class":303,"line":310},2,[301,312,314],{"emptyLinePlaceholder":313},true,"\n",[301,316,318],{"class":303,"line":317},3,[301,319,320],{},"- Install evlog: pnpm add evlog\n",[301,322,324],{"class":303,"line":323},4,[301,325,326],{},"- Add evlog\u002Fvite plugin to vite.config.ts with service name (handles auto-init, debug stripping)\n",[301,328,330],{"class":303,"line":329},5,[301,331,332],{},"- Export handle and handleError from evlog\u002Fsveltekit in hooks.server.ts\n",[301,334,336],{"class":303,"line":335},6,[301,337,338],{},"- Access the logger via event.locals.log or useLogger() in routes and services\n",[301,340,342],{"class":303,"line":341},7,[301,343,344],{},"- Use log.set() to accumulate context, throw createError() for structured errors\n",[301,346,348],{"class":303,"line":347},8,[301,349,350],{},"- Wide events are auto-emitted when each request completes\n",[301,352,354],{"class":303,"line":353},9,[301,355,314],{"emptyLinePlaceholder":313},[301,357,359],{"class":303,"line":358},10,[301,360,361],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fsveltekit\n",[301,363,365],{"class":303,"line":364},11,[301,366,367],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[369,370,20],"h2",{"id":371},"quick-start",[373,374,376],"h3",{"id":375},"_1-install","1. Install",[291,378,382],{"className":379,"code":380,"language":381,"meta":297,"style":297},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bun add evlog\n","bash",[268,383,384],{"__ignoreMap":297},[301,385,386,390,394],{"class":303,"line":304},[301,387,389],{"class":388},"sBMFI","bun",[301,391,393],{"class":392},"sfazB"," add",[301,395,396],{"class":392}," evlog\n",[373,398,400],{"id":399},"_2-add-the-vite-plugin","2. Add the Vite plugin",[291,402,407],{"className":403,"code":404,"filename":405,"language":406,"meta":297,"style":297},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { sveltekit } from '@sveltejs\u002Fkit\u002Fvite'\nimport evlog from 'evlog\u002Fvite'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n  plugins: [\n    sveltekit(),\n    evlog({\n      service: 'my-api',\n    }),\n  ],\n})\n","vite.config.ts","typescript",[268,408,409,438,455,475,479,496,508,519,528,545,555,562],{"__ignoreMap":297},[301,410,411,415,419,423,426,429,432,435],{"class":303,"line":304},[301,412,414],{"class":413},"s7zQu","import",[301,416,418],{"class":417},"sMK4o"," {",[301,420,422],{"class":421},"sTEyZ"," sveltekit",[301,424,425],{"class":417}," }",[301,427,428],{"class":413}," from",[301,430,431],{"class":417}," '",[301,433,434],{"class":392},"@sveltejs\u002Fkit\u002Fvite",[301,436,437],{"class":417},"'\n",[301,439,440,442,445,448,450,453],{"class":303,"line":310},[301,441,414],{"class":413},[301,443,444],{"class":421}," evlog ",[301,446,447],{"class":413},"from",[301,449,431],{"class":417},[301,451,452],{"class":392},"evlog\u002Fvite",[301,454,437],{"class":417},[301,456,457,459,461,464,466,468,470,473],{"class":303,"line":317},[301,458,414],{"class":413},[301,460,418],{"class":417},[301,462,463],{"class":421}," defineConfig",[301,465,425],{"class":417},[301,467,428],{"class":413},[301,469,431],{"class":417},[301,471,472],{"class":392},"vite",[301,474,437],{"class":417},[301,476,477],{"class":303,"line":323},[301,478,314],{"emptyLinePlaceholder":313},[301,480,481,484,487,490,493],{"class":303,"line":329},[301,482,483],{"class":413},"export",[301,485,486],{"class":413}," default",[301,488,463],{"class":489},"s2Zo4",[301,491,492],{"class":421},"(",[301,494,495],{"class":417},"{\n",[301,497,498,502,505],{"class":303,"line":335},[301,499,501],{"class":500},"swJcz","  plugins",[301,503,504],{"class":417},":",[301,506,507],{"class":421}," [\n",[301,509,510,513,516],{"class":303,"line":341},[301,511,512],{"class":489},"    sveltekit",[301,514,515],{"class":421},"()",[301,517,518],{"class":417},",\n",[301,520,521,524,526],{"class":303,"line":347},[301,522,523],{"class":489},"    evlog",[301,525,492],{"class":421},[301,527,495],{"class":417},[301,529,530,533,535,537,540,543],{"class":303,"line":353},[301,531,532],{"class":500},"      service",[301,534,504],{"class":417},[301,536,431],{"class":417},[301,538,539],{"class":392},"my-api",[301,541,542],{"class":417},"'",[301,544,518],{"class":417},[301,546,547,550,553],{"class":303,"line":358},[301,548,549],{"class":417},"    }",[301,551,552],{"class":421},")",[301,554,518],{"class":417},[301,556,557,560],{"class":303,"line":364},[301,558,559],{"class":421},"  ]",[301,561,518],{"class":417},[301,563,565,568],{"class":303,"line":564},12,[301,566,567],{"class":417},"}",[301,569,570],{"class":421},")\n",[264,572,573,574,578],{},"See the ",[575,576,577],"a",{"href":132},"Vite Plugin docs"," for all options.",[373,580,582],{"id":581},"_3-create-hooks","3. Create hooks",[291,584,587],{"className":403,"code":585,"filename":586,"language":406,"meta":297,"style":297},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\n\nexport const { handle, handleError } = createEvlogHooks()\n","src\u002Fhooks.server.ts",[268,588,589,608,612],{"__ignoreMap":297},[301,590,591,593,595,598,600,602,604,606],{"class":303,"line":304},[301,592,414],{"class":413},[301,594,418],{"class":417},[301,596,597],{"class":421}," createEvlogHooks",[301,599,425],{"class":417},[301,601,428],{"class":413},[301,603,431],{"class":417},[301,605,270],{"class":392},[301,607,437],{"class":417},[301,609,610],{"class":303,"line":310},[301,611,314],{"emptyLinePlaceholder":313},[301,613,614,616,620,622,625,628,631,633,636,638],{"class":303,"line":317},[301,615,483],{"class":413},[301,617,619],{"class":618},"spNyl"," const",[301,621,418],{"class":417},[301,623,624],{"class":421}," handle",[301,626,627],{"class":417},",",[301,629,630],{"class":421}," handleError ",[301,632,567],{"class":417},[301,634,635],{"class":417}," =",[301,637,597],{"class":489},[301,639,640],{"class":421},"()\n",[373,642,644],{"id":643},"_4-type-your-locals","4. Type your locals",[291,646,649],{"className":403,"code":647,"filename":648,"language":406,"meta":297,"style":297},"import type { RequestLogger } from 'evlog'\n\ndeclare global {\n  namespace App {\n    interface Locals {\n      log: RequestLogger\n    }\n  }\n}\n\nexport {}\n","src\u002Fapp.d.ts",[268,650,651,674,678,688,699,709,719,724,729,734,738],{"__ignoreMap":297},[301,652,653,655,658,660,663,665,667,669,672],{"class":303,"line":304},[301,654,414],{"class":413},[301,656,657],{"class":413}," type",[301,659,418],{"class":417},[301,661,662],{"class":421}," RequestLogger",[301,664,425],{"class":417},[301,666,428],{"class":413},[301,668,431],{"class":417},[301,670,671],{"class":392},"evlog",[301,673,437],{"class":417},[301,675,676],{"class":303,"line":310},[301,677,314],{"emptyLinePlaceholder":313},[301,679,680,683,686],{"class":303,"line":317},[301,681,682],{"class":618},"declare",[301,684,685],{"class":421}," global ",[301,687,495],{"class":417},[301,689,690,693,696],{"class":303,"line":323},[301,691,692],{"class":618},"  namespace",[301,694,695],{"class":388}," App",[301,697,698],{"class":417}," {\n",[301,700,701,704,707],{"class":303,"line":329},[301,702,703],{"class":618},"    interface",[301,705,706],{"class":388}," Locals",[301,708,698],{"class":417},[301,710,711,714,716],{"class":303,"line":335},[301,712,713],{"class":500},"      log",[301,715,504],{"class":417},[301,717,718],{"class":388}," RequestLogger\n",[301,720,721],{"class":303,"line":341},[301,722,723],{"class":417},"    }\n",[301,725,726],{"class":303,"line":347},[301,727,728],{"class":417},"  }\n",[301,730,731],{"class":303,"line":353},[301,732,733],{"class":417},"}\n",[301,735,736],{"class":303,"line":358},[301,737,314],{"emptyLinePlaceholder":313},[301,739,740,742],{"class":303,"line":364},[301,741,483],{"class":413},[301,743,744],{"class":417}," {}\n",[369,746,126],{"id":747},"wide-events",[264,749,750],{},"Build up context progressively through your handler. One request = one wide event:",[291,752,755],{"className":403,"code":753,"filename":754,"language":406,"meta":297,"style":297},"import { json } from '@sveltejs\u002Fkit'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const GET: RequestHandler = async ({ locals, params }) => {\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  const orders = await db.findOrders(params.id)\n  locals.log.set({ orders: { count: orders.length, totalRevenue: sum(orders) } })\n\n  return json({ user, orders })\n}\n","src\u002Froutes\u002Fapi\u002Fusers\u002F[id]\u002F+server.ts",[268,756,757,777,799,803,841,887,891,922,976,980,1008,1066,1070,1092],{"__ignoreMap":297},[301,758,759,761,763,766,768,770,772,775],{"class":303,"line":304},[301,760,414],{"class":413},[301,762,418],{"class":417},[301,764,765],{"class":421}," json",[301,767,425],{"class":417},[301,769,428],{"class":413},[301,771,431],{"class":417},[301,773,774],{"class":392},"@sveltejs\u002Fkit",[301,776,437],{"class":417},[301,778,779,781,783,785,788,790,792,794,797],{"class":303,"line":310},[301,780,414],{"class":413},[301,782,657],{"class":413},[301,784,418],{"class":417},[301,786,787],{"class":421}," RequestHandler",[301,789,425],{"class":417},[301,791,428],{"class":413},[301,793,431],{"class":417},[301,795,796],{"class":392},".\u002F$types",[301,798,437],{"class":417},[301,800,801],{"class":303,"line":317},[301,802,314],{"emptyLinePlaceholder":313},[301,804,805,807,809,812,814,816,818,821,824,828,830,833,836,839],{"class":303,"line":323},[301,806,483],{"class":413},[301,808,619],{"class":618},[301,810,811],{"class":421}," GET",[301,813,504],{"class":417},[301,815,787],{"class":388},[301,817,635],{"class":417},[301,819,820],{"class":618}," async",[301,822,823],{"class":417}," ({",[301,825,827],{"class":826},"sHdIc"," locals",[301,829,627],{"class":417},[301,831,832],{"class":826}," params",[301,834,835],{"class":417}," })",[301,837,838],{"class":618}," =>",[301,840,698],{"class":417},[301,842,843,846,849,852,854,857,859,862,865,867,869,872,874,876,878,881,883,885],{"class":303,"line":329},[301,844,845],{"class":421},"  locals",[301,847,848],{"class":417},".",[301,850,851],{"class":421},"log",[301,853,848],{"class":417},[301,855,856],{"class":489},"set",[301,858,492],{"class":500},[301,860,861],{"class":417},"{",[301,863,864],{"class":500}," user",[301,866,504],{"class":417},[301,868,418],{"class":417},[301,870,871],{"class":500}," id",[301,873,504],{"class":417},[301,875,832],{"class":421},[301,877,848],{"class":417},[301,879,880],{"class":421},"id",[301,882,425],{"class":417},[301,884,425],{"class":417},[301,886,570],{"class":500},[301,888,889],{"class":303,"line":335},[301,890,314],{"emptyLinePlaceholder":313},[301,892,893,896,898,900,903,906,908,911,913,916,918,920],{"class":303,"line":341},[301,894,895],{"class":618},"  const",[301,897,864],{"class":421},[301,899,635],{"class":417},[301,901,902],{"class":413}," await",[301,904,905],{"class":421}," db",[301,907,848],{"class":417},[301,909,910],{"class":489},"findUser",[301,912,492],{"class":500},[301,914,915],{"class":421},"params",[301,917,848],{"class":417},[301,919,880],{"class":421},[301,921,570],{"class":500},[301,923,924,926,928,930,932,934,936,938,940,942,944,947,949,951,953,956,958,961,963,965,967,970,972,974],{"class":303,"line":347},[301,925,845],{"class":421},[301,927,848],{"class":417},[301,929,851],{"class":421},[301,931,848],{"class":417},[301,933,856],{"class":489},[301,935,492],{"class":500},[301,937,861],{"class":417},[301,939,864],{"class":500},[301,941,504],{"class":417},[301,943,418],{"class":417},[301,945,946],{"class":500}," name",[301,948,504],{"class":417},[301,950,864],{"class":421},[301,952,848],{"class":417},[301,954,955],{"class":421},"name",[301,957,627],{"class":417},[301,959,960],{"class":500}," plan",[301,962,504],{"class":417},[301,964,864],{"class":421},[301,966,848],{"class":417},[301,968,969],{"class":421},"plan",[301,971,425],{"class":417},[301,973,425],{"class":417},[301,975,570],{"class":500},[301,977,978],{"class":303,"line":353},[301,979,314],{"emptyLinePlaceholder":313},[301,981,982,984,987,989,991,993,995,998,1000,1002,1004,1006],{"class":303,"line":358},[301,983,895],{"class":618},[301,985,986],{"class":421}," orders",[301,988,635],{"class":417},[301,990,902],{"class":413},[301,992,905],{"class":421},[301,994,848],{"class":417},[301,996,997],{"class":489},"findOrders",[301,999,492],{"class":500},[301,1001,915],{"class":421},[301,1003,848],{"class":417},[301,1005,880],{"class":421},[301,1007,570],{"class":500},[301,1009,1010,1012,1014,1016,1018,1020,1022,1024,1026,1028,1030,1033,1035,1037,1039,1042,1044,1047,1049,1052,1054,1057,1060,1062,1064],{"class":303,"line":364},[301,1011,845],{"class":421},[301,1013,848],{"class":417},[301,1015,851],{"class":421},[301,1017,848],{"class":417},[301,1019,856],{"class":489},[301,1021,492],{"class":500},[301,1023,861],{"class":417},[301,1025,986],{"class":500},[301,1027,504],{"class":417},[301,1029,418],{"class":417},[301,1031,1032],{"class":500}," count",[301,1034,504],{"class":417},[301,1036,986],{"class":421},[301,1038,848],{"class":417},[301,1040,1041],{"class":421},"length",[301,1043,627],{"class":417},[301,1045,1046],{"class":500}," totalRevenue",[301,1048,504],{"class":417},[301,1050,1051],{"class":489}," sum",[301,1053,492],{"class":500},[301,1055,1056],{"class":421},"orders",[301,1058,1059],{"class":500},") ",[301,1061,567],{"class":417},[301,1063,425],{"class":417},[301,1065,570],{"class":500},[301,1067,1068],{"class":303,"line":564},[301,1069,314],{"emptyLinePlaceholder":313},[301,1071,1073,1076,1078,1080,1082,1084,1086,1088,1090],{"class":303,"line":1072},13,[301,1074,1075],{"class":413},"  return",[301,1077,765],{"class":489},[301,1079,492],{"class":500},[301,1081,861],{"class":417},[301,1083,864],{"class":421},[301,1085,627],{"class":417},[301,1087,986],{"class":421},[301,1089,425],{"class":417},[301,1091,570],{"class":500},[301,1093,1095],{"class":303,"line":1094},14,[301,1096,733],{"class":417},[264,1098,1099],{},"All fields are merged into a single wide event emitted when the request completes:",[291,1101,1104],{"className":379,"code":1102,"filename":1103,"language":381,"meta":297,"style":297},"14:58:15 INFO [my-api] GET \u002Fapi\u002Fusers\u002Fusr_123 200 in 12ms\n  ├─ orders: count=2 totalRevenue=6298\n  ├─ user: id=usr_123 name=Alice plan=pro\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[268,1105,1106,1117,1138,1154],{"__ignoreMap":297},[301,1107,1108,1111,1114],{"class":303,"line":304},[301,1109,1110],{"class":388},"14:58:15",[301,1112,1113],{"class":392}," INFO",[301,1115,1116],{"class":421}," [my-api] GET \u002Fapi\u002Fusers\u002Fusr_123 200 in 12ms\n",[301,1118,1119,1122,1125,1128,1132,1135],{"class":303,"line":310},[301,1120,1121],{"class":388},"  ├─",[301,1123,1124],{"class":392}," orders:",[301,1126,1127],{"class":392}," count=",[301,1129,1131],{"class":1130},"sbssI","2",[301,1133,1134],{"class":392}," totalRevenue=",[301,1136,1137],{"class":1130},"6298\n",[301,1139,1140,1142,1145,1148,1151],{"class":303,"line":317},[301,1141,1121],{"class":388},[301,1143,1144],{"class":392}," user:",[301,1146,1147],{"class":392}," id=usr_123",[301,1149,1150],{"class":392}," name=Alice",[301,1152,1153],{"class":392}," plan=pro\n",[301,1155,1156,1159,1162],{"class":303,"line":323},[301,1157,1158],{"class":388},"  └─",[301,1160,1161],{"class":392}," requestId:",[301,1163,1164],{"class":392}," 4a8ff3a8-...\n",[369,1166,285],{"id":1167},"uselogger",[264,1169,1170,1171,1173],{},"Use ",[268,1172,285],{}," to access the request-scoped logger from anywhere in the call stack without passing locals through your service layer:",[291,1175,1178],{"className":403,"code":1176,"filename":1177,"language":406,"meta":297,"style":297},"import { useLogger } from 'evlog\u002Fsveltekit'\n\nexport async function findUser(id: string) {\n  const log = useLogger()\n  log.set({ user: { id } })\n\n  const user = await db.findUser(id)\n  log.set({ user: { name: user.name, plan: user.plan } })\n\n  return user\n}\n","src\u002Flib\u002Fservices\u002Fuser.ts",[268,1179,1180,1199,1203,1228,1241,1268,1272,1294,1340,1344,1351],{"__ignoreMap":297},[301,1181,1182,1184,1186,1189,1191,1193,1195,1197],{"class":303,"line":304},[301,1183,414],{"class":413},[301,1185,418],{"class":417},[301,1187,1188],{"class":421}," useLogger",[301,1190,425],{"class":417},[301,1192,428],{"class":413},[301,1194,431],{"class":417},[301,1196,270],{"class":392},[301,1198,437],{"class":417},[301,1200,1201],{"class":303,"line":310},[301,1202,314],{"emptyLinePlaceholder":313},[301,1204,1205,1207,1209,1212,1215,1217,1219,1221,1224,1226],{"class":303,"line":317},[301,1206,483],{"class":413},[301,1208,820],{"class":618},[301,1210,1211],{"class":618}," function",[301,1213,1214],{"class":489}," findUser",[301,1216,492],{"class":417},[301,1218,880],{"class":826},[301,1220,504],{"class":417},[301,1222,1223],{"class":388}," string",[301,1225,552],{"class":417},[301,1227,698],{"class":417},[301,1229,1230,1232,1235,1237,1239],{"class":303,"line":323},[301,1231,895],{"class":618},[301,1233,1234],{"class":421}," log",[301,1236,635],{"class":417},[301,1238,1188],{"class":489},[301,1240,640],{"class":500},[301,1242,1243,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266],{"class":303,"line":329},[301,1244,1245],{"class":421},"  log",[301,1247,848],{"class":417},[301,1249,856],{"class":489},[301,1251,492],{"class":500},[301,1253,861],{"class":417},[301,1255,864],{"class":500},[301,1257,504],{"class":417},[301,1259,418],{"class":417},[301,1261,871],{"class":421},[301,1263,425],{"class":417},[301,1265,425],{"class":417},[301,1267,570],{"class":500},[301,1269,1270],{"class":303,"line":335},[301,1271,314],{"emptyLinePlaceholder":313},[301,1273,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292],{"class":303,"line":341},[301,1275,895],{"class":618},[301,1277,864],{"class":421},[301,1279,635],{"class":417},[301,1281,902],{"class":413},[301,1283,905],{"class":421},[301,1285,848],{"class":417},[301,1287,910],{"class":489},[301,1289,492],{"class":500},[301,1291,880],{"class":421},[301,1293,570],{"class":500},[301,1295,1296,1298,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338],{"class":303,"line":347},[301,1297,1245],{"class":421},[301,1299,848],{"class":417},[301,1301,856],{"class":489},[301,1303,492],{"class":500},[301,1305,861],{"class":417},[301,1307,864],{"class":500},[301,1309,504],{"class":417},[301,1311,418],{"class":417},[301,1313,946],{"class":500},[301,1315,504],{"class":417},[301,1317,864],{"class":421},[301,1319,848],{"class":417},[301,1321,955],{"class":421},[301,1323,627],{"class":417},[301,1325,960],{"class":500},[301,1327,504],{"class":417},[301,1329,864],{"class":421},[301,1331,848],{"class":417},[301,1333,969],{"class":421},[301,1335,425],{"class":417},[301,1337,425],{"class":417},[301,1339,570],{"class":500},[301,1341,1342],{"class":303,"line":353},[301,1343,314],{"emptyLinePlaceholder":313},[301,1345,1346,1348],{"class":303,"line":358},[301,1347,1075],{"class":413},[301,1349,1350],{"class":421}," user\n",[301,1352,1353],{"class":303,"line":364},[301,1354,733],{"class":417},[291,1356,1358],{"className":403,"code":1357,"filename":754,"language":406,"meta":297,"style":297},"import { json } from '@sveltejs\u002Fkit'\nimport { findUser } from '$lib\u002Fservices\u002Fuser'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const GET: RequestHandler = async ({ params }) => {\n  const user = await findUser(params.id)\n  return json(user)\n}\n",[268,1359,1360,1378,1397,1417,1421,1447,1469,1482],{"__ignoreMap":297},[301,1361,1362,1364,1366,1368,1370,1372,1374,1376],{"class":303,"line":304},[301,1363,414],{"class":413},[301,1365,418],{"class":417},[301,1367,765],{"class":421},[301,1369,425],{"class":417},[301,1371,428],{"class":413},[301,1373,431],{"class":417},[301,1375,774],{"class":392},[301,1377,437],{"class":417},[301,1379,1380,1382,1384,1386,1388,1390,1392,1395],{"class":303,"line":310},[301,1381,414],{"class":413},[301,1383,418],{"class":417},[301,1385,1214],{"class":421},[301,1387,425],{"class":417},[301,1389,428],{"class":413},[301,1391,431],{"class":417},[301,1393,1394],{"class":392},"$lib\u002Fservices\u002Fuser",[301,1396,437],{"class":417},[301,1398,1399,1401,1403,1405,1407,1409,1411,1413,1415],{"class":303,"line":317},[301,1400,414],{"class":413},[301,1402,657],{"class":413},[301,1404,418],{"class":417},[301,1406,787],{"class":421},[301,1408,425],{"class":417},[301,1410,428],{"class":413},[301,1412,431],{"class":417},[301,1414,796],{"class":392},[301,1416,437],{"class":417},[301,1418,1419],{"class":303,"line":323},[301,1420,314],{"emptyLinePlaceholder":313},[301,1422,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445],{"class":303,"line":329},[301,1424,483],{"class":413},[301,1426,619],{"class":618},[301,1428,811],{"class":421},[301,1430,504],{"class":417},[301,1432,787],{"class":388},[301,1434,635],{"class":417},[301,1436,820],{"class":618},[301,1438,823],{"class":417},[301,1440,832],{"class":826},[301,1442,835],{"class":417},[301,1444,838],{"class":618},[301,1446,698],{"class":417},[301,1448,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467],{"class":303,"line":335},[301,1450,895],{"class":618},[301,1452,864],{"class":421},[301,1454,635],{"class":417},[301,1456,902],{"class":413},[301,1458,1214],{"class":489},[301,1460,492],{"class":500},[301,1462,915],{"class":421},[301,1464,848],{"class":417},[301,1466,880],{"class":421},[301,1468,570],{"class":500},[301,1470,1471,1473,1475,1477,1480],{"class":303,"line":341},[301,1472,1075],{"class":413},[301,1474,765],{"class":489},[301,1476,492],{"class":500},[301,1478,1479],{"class":421},"user",[301,1481,570],{"class":500},[301,1483,1484],{"class":303,"line":347},[301,1485,733],{"class":417},[264,1487,1488,1489,275,1491,1493,1494,1496,1497,1500],{},"Both ",[268,1490,282],{},[268,1492,285],{}," return the same logger instance. ",[268,1495,285],{}," uses ",[268,1498,1499],{},"AsyncLocalStorage"," to propagate the logger across async boundaries.",[369,1502,1504],{"id":1503},"error-handling","Error Handling",[264,1506,1170,1507,1510,1511,1514,1515,1518,1519,1522,1523,1525],{},[268,1508,1509],{},"createError"," for structured errors with ",[268,1512,1513],{},"why",", ",[268,1516,1517],{},"fix",", and ",[268,1520,1521],{},"link"," fields. The ",[268,1524,278],{}," hook captures thrown errors automatically:",[291,1527,1530],{"className":403,"code":1528,"filename":1529,"language":406,"meta":297,"style":297},"import { json } from '@sveltejs\u002Fkit'\nimport { createError } from 'evlog'\nimport type { RequestHandler } from '.\u002F$types'\n\nexport const POST: RequestHandler = async ({ locals, request }) => {\n  const { cartId } = await request.json()\n  locals.log.set({ cart: { id: cartId } })\n\n  throw createError({\n    message: 'Payment failed',\n    status: 402,\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n    link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n  })\n}\n","src\u002Froutes\u002Fapi\u002Fcheckout\u002F+server.ts",[268,1531,1532,1550,1569,1589,1593,1625,1649,1684,1688,1699,1715,1727,1743,1759,1775,1783],{"__ignoreMap":297},[301,1533,1534,1536,1538,1540,1542,1544,1546,1548],{"class":303,"line":304},[301,1535,414],{"class":413},[301,1537,418],{"class":417},[301,1539,765],{"class":421},[301,1541,425],{"class":417},[301,1543,428],{"class":413},[301,1545,431],{"class":417},[301,1547,774],{"class":392},[301,1549,437],{"class":417},[301,1551,1552,1554,1556,1559,1561,1563,1565,1567],{"class":303,"line":310},[301,1553,414],{"class":413},[301,1555,418],{"class":417},[301,1557,1558],{"class":421}," createError",[301,1560,425],{"class":417},[301,1562,428],{"class":413},[301,1564,431],{"class":417},[301,1566,671],{"class":392},[301,1568,437],{"class":417},[301,1570,1571,1573,1575,1577,1579,1581,1583,1585,1587],{"class":303,"line":317},[301,1572,414],{"class":413},[301,1574,657],{"class":413},[301,1576,418],{"class":417},[301,1578,787],{"class":421},[301,1580,425],{"class":417},[301,1582,428],{"class":413},[301,1584,431],{"class":417},[301,1586,796],{"class":392},[301,1588,437],{"class":417},[301,1590,1591],{"class":303,"line":323},[301,1592,314],{"emptyLinePlaceholder":313},[301,1594,1595,1597,1599,1602,1604,1606,1608,1610,1612,1614,1616,1619,1621,1623],{"class":303,"line":329},[301,1596,483],{"class":413},[301,1598,619],{"class":618},[301,1600,1601],{"class":421}," POST",[301,1603,504],{"class":417},[301,1605,787],{"class":388},[301,1607,635],{"class":417},[301,1609,820],{"class":618},[301,1611,823],{"class":417},[301,1613,827],{"class":826},[301,1615,627],{"class":417},[301,1617,1618],{"class":826}," request",[301,1620,835],{"class":417},[301,1622,838],{"class":618},[301,1624,698],{"class":417},[301,1626,1627,1629,1631,1634,1636,1638,1640,1642,1644,1647],{"class":303,"line":335},[301,1628,895],{"class":618},[301,1630,418],{"class":417},[301,1632,1633],{"class":421}," cartId",[301,1635,425],{"class":417},[301,1637,635],{"class":417},[301,1639,902],{"class":413},[301,1641,1618],{"class":421},[301,1643,848],{"class":417},[301,1645,1646],{"class":489},"json",[301,1648,640],{"class":500},[301,1650,1651,1653,1655,1657,1659,1661,1663,1665,1668,1670,1672,1674,1676,1678,1680,1682],{"class":303,"line":341},[301,1652,845],{"class":421},[301,1654,848],{"class":417},[301,1656,851],{"class":421},[301,1658,848],{"class":417},[301,1660,856],{"class":489},[301,1662,492],{"class":500},[301,1664,861],{"class":417},[301,1666,1667],{"class":500}," cart",[301,1669,504],{"class":417},[301,1671,418],{"class":417},[301,1673,871],{"class":500},[301,1675,504],{"class":417},[301,1677,1633],{"class":421},[301,1679,425],{"class":417},[301,1681,425],{"class":417},[301,1683,570],{"class":500},[301,1685,1686],{"class":303,"line":347},[301,1687,314],{"emptyLinePlaceholder":313},[301,1689,1690,1693,1695,1697],{"class":303,"line":353},[301,1691,1692],{"class":413},"  throw",[301,1694,1558],{"class":489},[301,1696,492],{"class":500},[301,1698,495],{"class":417},[301,1700,1701,1704,1706,1708,1711,1713],{"class":303,"line":358},[301,1702,1703],{"class":500},"    message",[301,1705,504],{"class":417},[301,1707,431],{"class":417},[301,1709,1710],{"class":392},"Payment failed",[301,1712,542],{"class":417},[301,1714,518],{"class":417},[301,1716,1717,1720,1722,1725],{"class":303,"line":364},[301,1718,1719],{"class":500},"    status",[301,1721,504],{"class":417},[301,1723,1724],{"class":1130}," 402",[301,1726,518],{"class":417},[301,1728,1729,1732,1734,1736,1739,1741],{"class":303,"line":564},[301,1730,1731],{"class":500},"    why",[301,1733,504],{"class":417},[301,1735,431],{"class":417},[301,1737,1738],{"class":392},"Card declined by issuer",[301,1740,542],{"class":417},[301,1742,518],{"class":417},[301,1744,1745,1748,1750,1752,1755,1757],{"class":303,"line":1072},[301,1746,1747],{"class":500},"    fix",[301,1749,504],{"class":417},[301,1751,431],{"class":417},[301,1753,1754],{"class":392},"Try a different payment method",[301,1756,542],{"class":417},[301,1758,518],{"class":417},[301,1760,1761,1764,1766,1768,1771,1773],{"class":303,"line":1094},[301,1762,1763],{"class":500},"    link",[301,1765,504],{"class":417},[301,1767,431],{"class":417},[301,1769,1770],{"class":392},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[301,1772,542],{"class":417},[301,1774,518],{"class":417},[301,1776,1778,1781],{"class":303,"line":1777},15,[301,1779,1780],{"class":417},"  }",[301,1782,570],{"class":500},[301,1784,1786],{"class":303,"line":1785},16,[301,1787,733],{"class":417},[264,1789,1790],{},"The error is captured and logged with both the custom context and structured error fields:",[291,1792,1794],{"className":379,"code":1793,"filename":1103,"language":381,"meta":297,"style":297},"14:58:20 ERROR [my-api] POST \u002Fapi\u002Fcheckout 402 in 3ms\n  ├─ error: name=EvlogError message=Payment failed status=402\n  ├─ cart: id=cart_456\n  └─ requestId: 880a50ac-...\n",[268,1795,1796,1807,1829,1839],{"__ignoreMap":297},[301,1797,1798,1801,1804],{"class":303,"line":304},[301,1799,1800],{"class":388},"14:58:20",[301,1802,1803],{"class":392}," ERROR",[301,1805,1806],{"class":421}," [my-api] POST \u002Fapi\u002Fcheckout 402 in 3ms\n",[301,1808,1809,1811,1814,1817,1820,1823,1826],{"class":303,"line":310},[301,1810,1121],{"class":388},[301,1812,1813],{"class":392}," error:",[301,1815,1816],{"class":392}," name=EvlogError",[301,1818,1819],{"class":392}," message=Payment",[301,1821,1822],{"class":392}," failed",[301,1824,1825],{"class":392}," status=",[301,1827,1828],{"class":1130},"402\n",[301,1830,1831,1833,1836],{"class":303,"line":317},[301,1832,1121],{"class":388},[301,1834,1835],{"class":392}," cart:",[301,1837,1838],{"class":392}," id=cart_456\n",[301,1840,1841,1843,1845],{"class":303,"line":323},[301,1842,1158],{"class":388},[301,1844,1161],{"class":392},[301,1846,1847],{"class":392}," 880a50ac-...\n",[369,1849,165],{"id":1850},"configuration",[264,1852,573,1853,1856,1857,1860],{},[575,1854,1855],{"href":166},"Configuration reference"," for all available options (",[268,1858,1859],{},"initLogger",", middleware options, sampling, silent mode, etc.).",[369,1862,1864],{"id":1863},"drain-enrichers","Drain & Enrichers",[264,1866,1867],{},"Configure drain adapters and enrichers directly in the hooks options:",[291,1869,1871],{"className":403,"code":1870,"filename":586,"language":406,"meta":297,"style":297},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createUserAgentEnricher } from 'evlog\u002Fenrichers'\n\nconst userAgent = createUserAgentEnricher()\n\nexport const { handle, handleError } = createEvlogHooks({\n  drain: createAxiomDrain(),\n  enrich: (ctx) => {\n    userAgent(ctx)\n    ctx.event.region = process.env.FLY_REGION\n  },\n})\n",[268,1872,1873,1891,1911,1931,1935,1950,1954,1978,1991,2010,2021,2051,2056],{"__ignoreMap":297},[301,1874,1875,1877,1879,1881,1883,1885,1887,1889],{"class":303,"line":304},[301,1876,414],{"class":413},[301,1878,418],{"class":417},[301,1880,597],{"class":421},[301,1882,425],{"class":417},[301,1884,428],{"class":413},[301,1886,431],{"class":417},[301,1888,270],{"class":392},[301,1890,437],{"class":417},[301,1892,1893,1895,1897,1900,1902,1904,1906,1909],{"class":303,"line":310},[301,1894,414],{"class":413},[301,1896,418],{"class":417},[301,1898,1899],{"class":421}," createAxiomDrain",[301,1901,425],{"class":417},[301,1903,428],{"class":413},[301,1905,431],{"class":417},[301,1907,1908],{"class":392},"evlog\u002Faxiom",[301,1910,437],{"class":417},[301,1912,1913,1915,1917,1920,1922,1924,1926,1929],{"class":303,"line":317},[301,1914,414],{"class":413},[301,1916,418],{"class":417},[301,1918,1919],{"class":421}," createUserAgentEnricher",[301,1921,425],{"class":417},[301,1923,428],{"class":413},[301,1925,431],{"class":417},[301,1927,1928],{"class":392},"evlog\u002Fenrichers",[301,1930,437],{"class":417},[301,1932,1933],{"class":303,"line":323},[301,1934,314],{"emptyLinePlaceholder":313},[301,1936,1937,1940,1943,1946,1948],{"class":303,"line":329},[301,1938,1939],{"class":618},"const",[301,1941,1942],{"class":421}," userAgent ",[301,1944,1945],{"class":417},"=",[301,1947,1919],{"class":489},[301,1949,640],{"class":421},[301,1951,1952],{"class":303,"line":335},[301,1953,314],{"emptyLinePlaceholder":313},[301,1955,1956,1958,1960,1962,1964,1966,1968,1970,1972,1974,1976],{"class":303,"line":341},[301,1957,483],{"class":413},[301,1959,619],{"class":618},[301,1961,418],{"class":417},[301,1963,624],{"class":421},[301,1965,627],{"class":417},[301,1967,630],{"class":421},[301,1969,567],{"class":417},[301,1971,635],{"class":417},[301,1973,597],{"class":489},[301,1975,492],{"class":421},[301,1977,495],{"class":417},[301,1979,1980,1983,1985,1987,1989],{"class":303,"line":347},[301,1981,1982],{"class":500},"  drain",[301,1984,504],{"class":417},[301,1986,1899],{"class":489},[301,1988,515],{"class":421},[301,1990,518],{"class":417},[301,1992,1993,1996,1998,2001,2004,2006,2008],{"class":303,"line":353},[301,1994,1995],{"class":489},"  enrich",[301,1997,504],{"class":417},[301,1999,2000],{"class":417}," (",[301,2002,2003],{"class":826},"ctx",[301,2005,552],{"class":417},[301,2007,838],{"class":618},[301,2009,698],{"class":417},[301,2011,2012,2015,2017,2019],{"class":303,"line":358},[301,2013,2014],{"class":489},"    userAgent",[301,2016,492],{"class":500},[301,2018,2003],{"class":421},[301,2020,570],{"class":500},[301,2022,2023,2026,2028,2031,2033,2036,2038,2041,2043,2046,2048],{"class":303,"line":364},[301,2024,2025],{"class":421},"    ctx",[301,2027,848],{"class":417},[301,2029,2030],{"class":421},"event",[301,2032,848],{"class":417},[301,2034,2035],{"class":421},"region",[301,2037,635],{"class":417},[301,2039,2040],{"class":421}," process",[301,2042,848],{"class":417},[301,2044,2045],{"class":421},"env",[301,2047,848],{"class":417},[301,2049,2050],{"class":421},"FLY_REGION\n",[301,2052,2053],{"class":303,"line":564},[301,2054,2055],{"class":417},"  },\n",[301,2057,2058,2060],{"class":303,"line":1072},[301,2059,567],{"class":417},[301,2061,570],{"class":421},[373,2063,2065],{"id":2064},"pipeline-batching-retry","Pipeline (Batching & Retry)",[264,2067,2068,2069,2072],{},"For production, wrap your adapter with ",[268,2070,2071],{},"createDrainPipeline"," to batch events and retry on failure:",[291,2074,2076],{"className":403,"code":2075,"filename":586,"language":406,"meta":297,"style":297},"import type { DrainContext } from 'evlog'\nimport { createEvlogHooks } from 'evlog\u002Fsveltekit'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\nexport const { handle, handleError } = createEvlogHooks({ drain })\n",[268,2077,2078,2099,2117,2135,2155,2159,2183,2213,2232,2238,2258,2262],{"__ignoreMap":297},[301,2079,2080,2082,2084,2086,2089,2091,2093,2095,2097],{"class":303,"line":304},[301,2081,414],{"class":413},[301,2083,657],{"class":413},[301,2085,418],{"class":417},[301,2087,2088],{"class":421}," DrainContext",[301,2090,425],{"class":417},[301,2092,428],{"class":413},[301,2094,431],{"class":417},[301,2096,671],{"class":392},[301,2098,437],{"class":417},[301,2100,2101,2103,2105,2107,2109,2111,2113,2115],{"class":303,"line":310},[301,2102,414],{"class":413},[301,2104,418],{"class":417},[301,2106,597],{"class":421},[301,2108,425],{"class":417},[301,2110,428],{"class":413},[301,2112,431],{"class":417},[301,2114,270],{"class":392},[301,2116,437],{"class":417},[301,2118,2119,2121,2123,2125,2127,2129,2131,2133],{"class":303,"line":317},[301,2120,414],{"class":413},[301,2122,418],{"class":417},[301,2124,1899],{"class":421},[301,2126,425],{"class":417},[301,2128,428],{"class":413},[301,2130,431],{"class":417},[301,2132,1908],{"class":392},[301,2134,437],{"class":417},[301,2136,2137,2139,2141,2144,2146,2148,2150,2153],{"class":303,"line":323},[301,2138,414],{"class":413},[301,2140,418],{"class":417},[301,2142,2143],{"class":421}," createDrainPipeline",[301,2145,425],{"class":417},[301,2147,428],{"class":413},[301,2149,431],{"class":417},[301,2151,2152],{"class":392},"evlog\u002Fpipeline",[301,2154,437],{"class":417},[301,2156,2157],{"class":303,"line":329},[301,2158,314],{"emptyLinePlaceholder":313},[301,2160,2161,2163,2166,2168,2170,2173,2176,2179,2181],{"class":303,"line":335},[301,2162,1939],{"class":618},[301,2164,2165],{"class":421}," pipeline ",[301,2167,1945],{"class":417},[301,2169,2143],{"class":489},[301,2171,2172],{"class":417},"\u003C",[301,2174,2175],{"class":388},"DrainContext",[301,2177,2178],{"class":417},">",[301,2180,492],{"class":421},[301,2182,495],{"class":417},[301,2184,2185,2188,2190,2192,2195,2197,2200,2202,2205,2207,2210],{"class":303,"line":341},[301,2186,2187],{"class":500},"  batch",[301,2189,504],{"class":417},[301,2191,418],{"class":417},[301,2193,2194],{"class":500}," size",[301,2196,504],{"class":417},[301,2198,2199],{"class":1130}," 50",[301,2201,627],{"class":417},[301,2203,2204],{"class":500}," intervalMs",[301,2206,504],{"class":417},[301,2208,2209],{"class":1130}," 5000",[301,2211,2212],{"class":417}," },\n",[301,2214,2215,2218,2220,2222,2225,2227,2230],{"class":303,"line":347},[301,2216,2217],{"class":500},"  retry",[301,2219,504],{"class":417},[301,2221,418],{"class":417},[301,2223,2224],{"class":500}," maxAttempts",[301,2226,504],{"class":417},[301,2228,2229],{"class":1130}," 3",[301,2231,2212],{"class":417},[301,2233,2234,2236],{"class":303,"line":353},[301,2235,567],{"class":417},[301,2237,570],{"class":421},[301,2239,2240,2242,2245,2247,2250,2252,2255],{"class":303,"line":358},[301,2241,1939],{"class":618},[301,2243,2244],{"class":421}," drain ",[301,2246,1945],{"class":417},[301,2248,2249],{"class":489}," pipeline",[301,2251,492],{"class":421},[301,2253,2254],{"class":489},"createAxiomDrain",[301,2256,2257],{"class":421},"())\n",[301,2259,2260],{"class":303,"line":364},[301,2261,314],{"emptyLinePlaceholder":313},[301,2263,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290],{"class":303,"line":564},[301,2265,483],{"class":413},[301,2267,619],{"class":618},[301,2269,418],{"class":417},[301,2271,624],{"class":421},[301,2273,627],{"class":417},[301,2275,630],{"class":421},[301,2277,567],{"class":417},[301,2279,635],{"class":417},[301,2281,597],{"class":489},[301,2283,492],{"class":421},[301,2285,861],{"class":417},[301,2287,2244],{"class":421},[301,2289,567],{"class":417},[301,2291,570],{"class":421},[2293,2294,2296,2297,2300,2301,578],"callout",{"color":2295,"icon":13},"info","Call ",[268,2298,2299],{},"drain.flush()"," on server shutdown to ensure all buffered events are sent. See the ",[575,2302,2303],{"href":225},"Pipeline docs",[369,2305,2307],{"id":2306},"tail-sampling","Tail Sampling",[264,2309,1170,2310,2313],{},[268,2311,2312],{},"keep"," to force-retain specific events regardless of head sampling:",[291,2315,2317],{"className":403,"code":2316,"filename":586,"language":406,"meta":297,"style":297},"export const { handle, handleError } = createEvlogHooks({\n  drain: createAxiomDrain(),\n  keep: (ctx) => {\n    if (ctx.duration && ctx.duration > 2000) ctx.shouldKeep = true\n  },\n})\n",[268,2318,2319,2343,2355,2372,2417,2421],{"__ignoreMap":297},[301,2320,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341],{"class":303,"line":304},[301,2322,483],{"class":413},[301,2324,619],{"class":618},[301,2326,418],{"class":417},[301,2328,624],{"class":421},[301,2330,627],{"class":417},[301,2332,630],{"class":421},[301,2334,567],{"class":417},[301,2336,635],{"class":417},[301,2338,597],{"class":489},[301,2340,492],{"class":421},[301,2342,495],{"class":417},[301,2344,2345,2347,2349,2351,2353],{"class":303,"line":310},[301,2346,1982],{"class":500},[301,2348,504],{"class":417},[301,2350,1899],{"class":489},[301,2352,515],{"class":421},[301,2354,518],{"class":417},[301,2356,2357,2360,2362,2364,2366,2368,2370],{"class":303,"line":317},[301,2358,2359],{"class":489},"  keep",[301,2361,504],{"class":417},[301,2363,2000],{"class":417},[301,2365,2003],{"class":826},[301,2367,552],{"class":417},[301,2369,838],{"class":618},[301,2371,698],{"class":417},[301,2373,2374,2377,2379,2381,2383,2386,2389,2392,2394,2396,2399,2402,2404,2406,2408,2411,2413],{"class":303,"line":323},[301,2375,2376],{"class":413},"    if",[301,2378,2000],{"class":500},[301,2380,2003],{"class":421},[301,2382,848],{"class":417},[301,2384,2385],{"class":421},"duration",[301,2387,2388],{"class":417}," &&",[301,2390,2391],{"class":421}," ctx",[301,2393,848],{"class":417},[301,2395,2385],{"class":421},[301,2397,2398],{"class":417}," >",[301,2400,2401],{"class":1130}," 2000",[301,2403,1059],{"class":500},[301,2405,2003],{"class":421},[301,2407,848],{"class":417},[301,2409,2410],{"class":421},"shouldKeep",[301,2412,635],{"class":417},[301,2414,2416],{"class":2415},"sfNiH"," true\n",[301,2418,2419],{"class":303,"line":329},[301,2420,2055],{"class":417},[301,2422,2423,2425],{"class":303,"line":335},[301,2424,567],{"class":417},[301,2426,570],{"class":421},[369,2428,2430],{"id":2429},"route-filtering","Route Filtering",[264,2432,2433,2434,275,2437,2440],{},"Control which routes are logged with ",[268,2435,2436],{},"include",[268,2438,2439],{},"exclude"," patterns:",[291,2442,2444],{"className":403,"code":2443,"filename":586,"language":406,"meta":297,"style":297},"export const { handle, handleError } = createEvlogHooks({\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002F_internal\u002F**', '\u002Fhealth'],\n  routes: {\n    '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n    '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n  },\n})\n",[268,2445,2446,2470,2492,2521,2530,2558,2584,2588],{"__ignoreMap":297},[301,2447,2448,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468],{"class":303,"line":304},[301,2449,483],{"class":413},[301,2451,619],{"class":618},[301,2453,418],{"class":417},[301,2455,624],{"class":421},[301,2457,627],{"class":417},[301,2459,630],{"class":421},[301,2461,567],{"class":417},[301,2463,635],{"class":417},[301,2465,597],{"class":489},[301,2467,492],{"class":421},[301,2469,495],{"class":417},[301,2471,2472,2475,2477,2480,2482,2485,2487,2490],{"class":303,"line":310},[301,2473,2474],{"class":500},"  include",[301,2476,504],{"class":417},[301,2478,2479],{"class":421}," [",[301,2481,542],{"class":417},[301,2483,2484],{"class":392},"\u002Fapi\u002F**",[301,2486,542],{"class":417},[301,2488,2489],{"class":421},"]",[301,2491,518],{"class":417},[301,2493,2494,2497,2499,2501,2503,2506,2508,2510,2512,2515,2517,2519],{"class":303,"line":317},[301,2495,2496],{"class":500},"  exclude",[301,2498,504],{"class":417},[301,2500,2479],{"class":421},[301,2502,542],{"class":417},[301,2504,2505],{"class":392},"\u002F_internal\u002F**",[301,2507,542],{"class":417},[301,2509,627],{"class":417},[301,2511,431],{"class":417},[301,2513,2514],{"class":392},"\u002Fhealth",[301,2516,542],{"class":417},[301,2518,2489],{"class":421},[301,2520,518],{"class":417},[301,2522,2523,2526,2528],{"class":303,"line":323},[301,2524,2525],{"class":500},"  routes",[301,2527,504],{"class":417},[301,2529,698],{"class":417},[301,2531,2532,2535,2538,2540,2542,2544,2547,2549,2551,2554,2556],{"class":303,"line":329},[301,2533,2534],{"class":417},"    '",[301,2536,2537],{"class":500},"\u002Fapi\u002Fauth\u002F**",[301,2539,542],{"class":417},[301,2541,504],{"class":417},[301,2543,418],{"class":417},[301,2545,2546],{"class":500}," service",[301,2548,504],{"class":417},[301,2550,431],{"class":417},[301,2552,2553],{"class":392},"auth-service",[301,2555,542],{"class":417},[301,2557,2212],{"class":417},[301,2559,2560,2562,2565,2567,2569,2571,2573,2575,2577,2580,2582],{"class":303,"line":335},[301,2561,2534],{"class":417},[301,2563,2564],{"class":500},"\u002Fapi\u002Fpayment\u002F**",[301,2566,542],{"class":417},[301,2568,504],{"class":417},[301,2570,418],{"class":417},[301,2572,2546],{"class":500},[301,2574,504],{"class":417},[301,2576,431],{"class":417},[301,2578,2579],{"class":392},"payment-service",[301,2581,542],{"class":417},[301,2583,2212],{"class":417},[301,2585,2586],{"class":303,"line":341},[301,2587,2055],{"class":417},[301,2589,2590,2592],{"class":303,"line":347},[301,2591,567],{"class":417},[301,2593,570],{"class":421},[369,2595,2597],{"id":2596},"run-locally","Run Locally",[291,2599,2601],{"className":379,"code":2600,"language":381,"meta":297,"style":297},"git clone https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog.git\ncd evlog\nbun install\nbun run example:sveltekit\n",[268,2602,2603,2614,2621,2628],{"__ignoreMap":297},[301,2604,2605,2608,2611],{"class":303,"line":304},[301,2606,2607],{"class":388},"git",[301,2609,2610],{"class":392}," clone",[301,2612,2613],{"class":392}," https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog.git\n",[301,2615,2616,2619],{"class":303,"line":310},[301,2617,2618],{"class":489},"cd",[301,2620,396],{"class":392},[301,2622,2623,2625],{"class":303,"line":317},[301,2624,389],{"class":388},[301,2626,2627],{"class":392}," install\n",[301,2629,2630,2632,2635],{"class":303,"line":323},[301,2631,389],{"class":388},[301,2633,2634],{"class":392}," run",[301,2636,2637],{"class":392}," example:sveltekit\n",[264,2639,2640,2641,2646],{},"Open ",[575,2642,2643],{"href":2643,"rel":2644},"http:\u002F\u002Flocalhost:5173",[2645],"nofollow"," to explore the interactive test UI.",[2648,2649,2650],"card-group",{},[2651,2652,2656],"card",{"icon":2653,"title":2654,"to":2655},"i-simple-icons-github","Source Code","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fsveltekit","Browse the complete SvelteKit example source on GitHub.",[2658,2659,2660],"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 .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":297,"searchDepth":310,"depth":310,"links":2662},[2663,2669,2670,2671,2672,2673,2676,2677,2678],{"id":371,"depth":310,"text":20,"children":2664},[2665,2666,2667,2668],{"id":375,"depth":317,"text":376},{"id":399,"depth":317,"text":400},{"id":581,"depth":317,"text":582},{"id":643,"depth":317,"text":644},{"id":747,"depth":310,"text":126},{"id":1167,"depth":310,"text":285},{"id":1503,"depth":310,"text":1504},{"id":1850,"depth":310,"text":165},{"id":1863,"depth":310,"text":1864,"children":2674},[2675],{"id":2064,"depth":317,"text":2065},{"id":2306,"depth":310,"text":2307},{"id":2429,"depth":310,"text":2430},{"id":2596,"depth":310,"text":2597},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in SvelteKit applications.","md",[2682],{"label":2654,"icon":2653,"to":2655,"color":2683,"variant":2684},"neutral","subtle",{},{"title":51,"icon":54},{"title":51,"description":2679},"YK-BawUoLllMxUwF44dA4oMvoqnjsOQrMaQCW1kXPuA",[2690,2692],{"title":46,"path":47,"stem":48,"description":2691,"icon":49,"children":-1},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.",{"title":56,"path":57,"stem":58,"description":2693,"icon":59,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Nitro v2 and v3 applications.",1774107143070]