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