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