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