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