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