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