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