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