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