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