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