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