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