[{"data":1,"prerenderedAt":3254},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-sveltekit":534,"-integrate-frameworks-sveltekit-surround":3249},[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":3239,"extension":3240,"links":3241,"meta":3245,"navigation":3246,"path":241,"seo":3247,"stem":242,"__hash__":3248},"docs\u002F4.integrate\u002Fframeworks\u002F03.sveltekit.md",{"type":537,"value":538,"toc":3218},"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,1819,2021,2025,2046,2306,2309,2366,2369,2379,2383,2386,2580,2584,2591,2810,2822,2826,2832,2944,2948,2958,3111,3115,3156,3164,3174,3178,3185,3214],[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,1149],{},[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","Wide events — After emit",[620,1820,1823],{"className":693,"code":1821,"filename":1822,"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,1824,1825,1843,1863,1867,1894,1930,1943,1972,1979,2017],{"__ignoreMap":626},[630,1826,1827,1829,1831,1833,1835,1837,1839,1841],{"class":632,"line":633},[630,1828,704],{"class":703},[630,1830,708],{"class":707},[630,1832,1489],{"class":711},[630,1834,715],{"class":707},[630,1836,718],{"class":703},[630,1838,721],{"class":707},[630,1840,546],{"class":639},[630,1842,727],{"class":707},[630,1844,1845,1847,1849,1851,1853,1855,1857,1859,1861],{"class":632,"line":730},[630,1846,704],{"class":703},[630,1848,958],{"class":703},[630,1850,708],{"class":707},[630,1852,1088],{"class":711},[630,1854,715],{"class":707},[630,1856,718],{"class":703},[630,1858,721],{"class":707},[630,1860,1097],{"class":639},[630,1862,727],{"class":707},[630,1864,1865],{"class":632,"line":748},[630,1866,773],{"emptyLinePlaceholder":772},[630,1868,1869,1871,1873,1876,1878,1880,1882,1884,1886,1888,1890,1892],{"class":632,"line":769},[630,1870,779],{"class":703},[630,1872,920],{"class":919},[630,1874,1875],{"class":711}," POST",[630,1877,801],{"class":707},[630,1879,1088],{"class":636},[630,1881,936],{"class":707},[630,1883,1121],{"class":919},[630,1885,1124],{"class":707},[630,1887,1128],{"class":1127},[630,1889,1136],{"class":707},[630,1891,1139],{"class":919},[630,1893,999],{"class":707},[630,1895,1896,1898,1900,1902,1904,1907,1910,1912,1914,1917,1919,1921,1923,1926,1928],{"class":632,"line":776},[630,1897,1146],{"class":711},[630,1899,1149],{"class":707},[630,1901,1152],{"class":711},[630,1903,1149],{"class":707},[630,1905,1906],{"class":785},"fork",[630,1908,1909],{"class":707},"!",[630,1911,788],{"class":797},[630,1913,842],{"class":707},[630,1915,1916],{"class":639},"process",[630,1918,842],{"class":707},[630,1920,928],{"class":707},[630,1922,1121],{"class":919},[630,1924,1925],{"class":707}," ()",[630,1927,1139],{"class":919},[630,1929,999],{"class":707},[630,1931,1932,1935,1937,1939,1941],{"class":632,"line":794},[630,1933,1934],{"class":919},"    const",[630,1936,1535],{"class":711},[630,1938,936],{"class":707},[630,1940,1489],{"class":785},[630,1942,941],{"class":797},[630,1944,1945,1948,1950,1952,1954,1956,1959,1961,1963,1966,1968,1970],{"class":632,"line":807},[630,1946,1947],{"class":711},"    log",[630,1949,1149],{"class":707},[630,1951,1157],{"class":785},[630,1953,788],{"class":797},[630,1955,1162],{"class":707},[630,1957,1958],{"class":797}," step",[630,1960,801],{"class":707},[630,1962,721],{"class":707},[630,1964,1965],{"class":639},"done",[630,1967,842],{"class":707},[630,1969,715],{"class":707},[630,1971,872],{"class":797},[630,1973,1974,1977],{"class":632,"line":819},[630,1975,1976],{"class":707},"  }",[630,1978,872],{"class":797},[630,1980,1981,1983,1986,1989,1991,1994,1996,1999,2001,2003,2006,2008,2012,2014],{"class":632,"line":829},[630,1982,1376],{"class":703},[630,1984,1985],{"class":707}," new",[630,1987,1988],{"class":785}," Response",[630,1990,788],{"class":797},[630,1992,1993],{"class":711},"JSON",[630,1995,1149],{"class":707},[630,1997,1998],{"class":785},"stringify",[630,2000,788],{"class":797},[630,2002,1162],{"class":707},[630,2004,2005],{"class":797}," ok",[630,2007,801],{"class":707},[630,2009,2011],{"class":2010},"sfNiH"," true",[630,2013,715],{"class":707},[630,2015,2016],{"class":797},"))\n",[630,2018,2019],{"class":632,"line":847},[630,2020,1034],{"class":707},[608,2022,2024],{"id":2023},"error-handling","Error Handling",[540,2026,1471,2027,2030,2031,2034,2035,2038,2039,2042,2043,2045],{},[544,2028,2029],{},"createError"," for structured errors with ",[544,2032,2033],{},"why",", ",[544,2036,2037],{},"fix",", and ",[544,2040,2041],{},"link"," fields. The ",[544,2044,554],{}," hook captures thrown errors automatically:",[620,2047,2050],{"className":693,"code":2048,"filename":2049,"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,2051,2052,2070,2089,2109,2113,2144,2168,2203,2207,2218,2234,2246,2262,2278,2294,2301],{"__ignoreMap":626},[630,2053,2054,2056,2058,2060,2062,2064,2066,2068],{"class":632,"line":633},[630,2055,704],{"class":703},[630,2057,708],{"class":707},[630,2059,1066],{"class":711},[630,2061,715],{"class":707},[630,2063,718],{"class":703},[630,2065,721],{"class":707},[630,2067,1075],{"class":639},[630,2069,727],{"class":707},[630,2071,2072,2074,2076,2079,2081,2083,2085,2087],{"class":632,"line":730},[630,2073,704],{"class":703},[630,2075,708],{"class":707},[630,2077,2078],{"class":711}," createError",[630,2080,715],{"class":707},[630,2082,718],{"class":703},[630,2084,721],{"class":707},[630,2086,972],{"class":639},[630,2088,727],{"class":707},[630,2090,2091,2093,2095,2097,2099,2101,2103,2105,2107],{"class":632,"line":748},[630,2092,704],{"class":703},[630,2094,958],{"class":703},[630,2096,708],{"class":707},[630,2098,1088],{"class":711},[630,2100,715],{"class":707},[630,2102,718],{"class":703},[630,2104,721],{"class":707},[630,2106,1097],{"class":639},[630,2108,727],{"class":707},[630,2110,2111],{"class":632,"line":769},[630,2112,773],{"emptyLinePlaceholder":772},[630,2114,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2138,2140,2142],{"class":632,"line":776},[630,2116,779],{"class":703},[630,2118,920],{"class":919},[630,2120,1875],{"class":711},[630,2122,801],{"class":707},[630,2124,1088],{"class":636},[630,2126,936],{"class":707},[630,2128,1121],{"class":919},[630,2130,1124],{"class":707},[630,2132,1128],{"class":1127},[630,2134,928],{"class":707},[630,2136,2137],{"class":1127}," request",[630,2139,1136],{"class":707},[630,2141,1139],{"class":919},[630,2143,999],{"class":707},[630,2145,2146,2148,2150,2153,2155,2157,2159,2161,2163,2166],{"class":632,"line":794},[630,2147,1196],{"class":919},[630,2149,708],{"class":707},[630,2151,2152],{"class":711}," cartId",[630,2154,715],{"class":707},[630,2156,936],{"class":707},[630,2158,1203],{"class":703},[630,2160,2137],{"class":711},[630,2162,1149],{"class":707},[630,2164,2165],{"class":785},"json",[630,2167,941],{"class":797},[630,2169,2170,2172,2174,2176,2178,2180,2182,2184,2187,2189,2191,2193,2195,2197,2199,2201],{"class":632,"line":807},[630,2171,1146],{"class":711},[630,2173,1149],{"class":707},[630,2175,1152],{"class":711},[630,2177,1149],{"class":707},[630,2179,1157],{"class":785},[630,2181,788],{"class":797},[630,2183,1162],{"class":707},[630,2185,2186],{"class":797}," cart",[630,2188,801],{"class":707},[630,2190,708],{"class":707},[630,2192,1172],{"class":797},[630,2194,801],{"class":707},[630,2196,2152],{"class":711},[630,2198,715],{"class":707},[630,2200,715],{"class":707},[630,2202,872],{"class":797},[630,2204,2205],{"class":632,"line":819},[630,2206,773],{"emptyLinePlaceholder":772},[630,2208,2209,2212,2214,2216],{"class":632,"line":829},[630,2210,2211],{"class":703},"  throw",[630,2213,2078],{"class":785},[630,2215,788],{"class":797},[630,2217,791],{"class":707},[630,2219,2220,2223,2225,2227,2230,2232],{"class":632,"line":847},[630,2221,2222],{"class":797},"    message",[630,2224,801],{"class":707},[630,2226,721],{"class":707},[630,2228,2229],{"class":639},"Payment failed",[630,2231,842],{"class":707},[630,2233,816],{"class":707},[630,2235,2236,2239,2241,2244],{"class":632,"line":858},[630,2237,2238],{"class":797},"    status",[630,2240,801],{"class":707},[630,2242,2243],{"class":1431}," 402",[630,2245,816],{"class":707},[630,2247,2248,2251,2253,2255,2258,2260],{"class":632,"line":866},[630,2249,2250],{"class":797},"    why",[630,2252,801],{"class":707},[630,2254,721],{"class":707},[630,2256,2257],{"class":639},"Card declined by issuer",[630,2259,842],{"class":707},[630,2261,816],{"class":707},[630,2263,2264,2267,2269,2271,2274,2276],{"class":632,"line":1373},[630,2265,2266],{"class":797},"    fix",[630,2268,801],{"class":707},[630,2270,721],{"class":707},[630,2272,2273],{"class":639},"Try a different payment method",[630,2275,842],{"class":707},[630,2277,816],{"class":707},[630,2279,2280,2283,2285,2287,2290,2292],{"class":632,"line":1395},[630,2281,2282],{"class":797},"    link",[630,2284,801],{"class":707},[630,2286,721],{"class":707},[630,2288,2289],{"class":639},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[630,2291,842],{"class":707},[630,2293,816],{"class":707},[630,2295,2297,2299],{"class":632,"line":2296},15,[630,2298,1976],{"class":707},[630,2300,872],{"class":797},[630,2302,2304],{"class":632,"line":2303},16,[630,2305,1034],{"class":707},[540,2307,2308],{},"The error is captured and logged with both the custom context and structured error fields:",[620,2310,2312],{"className":622,"code":2311,"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,2313,2314,2325,2347,2357],{"__ignoreMap":626},[630,2315,2316,2319,2322],{"class":632,"line":633},[630,2317,2318],{"class":636},"14:58:20",[630,2320,2321],{"class":639}," ERROR",[630,2323,2324],{"class":711}," [my-api] POST \u002Fapi\u002Fcheckout 402 in 3ms\n",[630,2326,2327,2329,2332,2335,2338,2341,2344],{"class":632,"line":730},[630,2328,1422],{"class":636},[630,2330,2331],{"class":639}," error:",[630,2333,2334],{"class":639}," name=EvlogError",[630,2336,2337],{"class":639}," message=Payment",[630,2339,2340],{"class":639}," failed",[630,2342,2343],{"class":639}," status=",[630,2345,2346],{"class":1431},"402\n",[630,2348,2349,2351,2354],{"class":632,"line":748},[630,2350,1422],{"class":636},[630,2352,2353],{"class":639}," cart:",[630,2355,2356],{"class":639}," id=cart_456\n",[630,2358,2359,2361,2363],{"class":632,"line":769},[630,2360,1459],{"class":636},[630,2362,1462],{"class":639},[630,2364,2365],{"class":639}," 880a50ac-...\n",[608,2367,504],{"id":2368},"configuration",[540,2370,875,2371,2374,2375,2378],{},[597,2372,2373],{"href":505},"Configuration reference"," for all available options (",[544,2376,2377],{},"initLogger",", middleware options, sampling, silent mode, etc.).",[608,2380,2382],{"id":2381},"drain-enrichers","Drain & Enrichers",[540,2384,2385],{},"Configure drain adapters and enrichers directly in the hooks options:",[620,2387,2389],{"className":693,"code":2388,"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,2390,2391,2409,2429,2449,2453,2468,2472,2496,2509,2528,2539,2569,2574],{"__ignoreMap":626},[630,2392,2393,2395,2397,2399,2401,2403,2405,2407],{"class":632,"line":633},[630,2394,704],{"class":703},[630,2396,708],{"class":707},[630,2398,898],{"class":711},[630,2400,715],{"class":707},[630,2402,718],{"class":703},[630,2404,721],{"class":707},[630,2406,546],{"class":639},[630,2408,727],{"class":707},[630,2410,2411,2413,2415,2418,2420,2422,2424,2427],{"class":632,"line":730},[630,2412,704],{"class":703},[630,2414,708],{"class":707},[630,2416,2417],{"class":711}," createAxiomDrain",[630,2419,715],{"class":707},[630,2421,718],{"class":703},[630,2423,721],{"class":707},[630,2425,2426],{"class":639},"evlog\u002Faxiom",[630,2428,727],{"class":707},[630,2430,2431,2433,2435,2438,2440,2442,2444,2447],{"class":632,"line":748},[630,2432,704],{"class":703},[630,2434,708],{"class":707},[630,2436,2437],{"class":711}," createUserAgentEnricher",[630,2439,715],{"class":707},[630,2441,718],{"class":703},[630,2443,721],{"class":707},[630,2445,2446],{"class":639},"evlog\u002Fenrichers",[630,2448,727],{"class":707},[630,2450,2451],{"class":632,"line":769},[630,2452,773],{"emptyLinePlaceholder":772},[630,2454,2455,2458,2461,2464,2466],{"class":632,"line":776},[630,2456,2457],{"class":919},"const",[630,2459,2460],{"class":711}," userAgent ",[630,2462,2463],{"class":707},"=",[630,2465,2437],{"class":785},[630,2467,941],{"class":711},[630,2469,2470],{"class":632,"line":794},[630,2471,773],{"emptyLinePlaceholder":772},[630,2473,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494],{"class":632,"line":807},[630,2475,779],{"class":703},[630,2477,920],{"class":919},[630,2479,708],{"class":707},[630,2481,925],{"class":711},[630,2483,928],{"class":707},[630,2485,931],{"class":711},[630,2487,869],{"class":707},[630,2489,936],{"class":707},[630,2491,898],{"class":785},[630,2493,788],{"class":711},[630,2495,791],{"class":707},[630,2497,2498,2501,2503,2505,2507],{"class":632,"line":819},[630,2499,2500],{"class":797},"  drain",[630,2502,801],{"class":707},[630,2504,2417],{"class":785},[630,2506,813],{"class":711},[630,2508,816],{"class":707},[630,2510,2511,2514,2516,2519,2522,2524,2526],{"class":632,"line":829},[630,2512,2513],{"class":785},"  enrich",[630,2515,801],{"class":707},[630,2517,2518],{"class":707}," (",[630,2520,2521],{"class":1127},"ctx",[630,2523,853],{"class":707},[630,2525,1139],{"class":919},[630,2527,999],{"class":707},[630,2529,2530,2533,2535,2537],{"class":632,"line":847},[630,2531,2532],{"class":785},"    userAgent",[630,2534,788],{"class":797},[630,2536,2521],{"class":711},[630,2538,872],{"class":797},[630,2540,2541,2544,2546,2549,2551,2554,2556,2559,2561,2564,2566],{"class":632,"line":858},[630,2542,2543],{"class":711},"    ctx",[630,2545,1149],{"class":707},[630,2547,2548],{"class":711},"event",[630,2550,1149],{"class":707},[630,2552,2553],{"class":711},"region",[630,2555,936],{"class":707},[630,2557,2558],{"class":711}," process",[630,2560,1149],{"class":707},[630,2562,2563],{"class":711},"env",[630,2565,1149],{"class":707},[630,2567,2568],{"class":711},"FLY_REGION\n",[630,2570,2571],{"class":632,"line":866},[630,2572,2573],{"class":707},"  },\n",[630,2575,2576,2578],{"class":632,"line":1373},[630,2577,869],{"class":707},[630,2579,872],{"class":711},[612,2581,2583],{"id":2582},"pipeline-batching-retry","Pipeline (Batching & Retry)",[540,2585,2586,2587,2590],{},"For production, wrap your adapter with ",[544,2588,2589],{},"createDrainPipeline"," to batch events and retry on failure:",[620,2592,2594],{"className":693,"code":2593,"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,2595,2596,2617,2635,2653,2673,2677,2701,2731,2750,2756,2776,2780],{"__ignoreMap":626},[630,2597,2598,2600,2602,2604,2607,2609,2611,2613,2615],{"class":632,"line":633},[630,2599,704],{"class":703},[630,2601,958],{"class":703},[630,2603,708],{"class":707},[630,2605,2606],{"class":711}," DrainContext",[630,2608,715],{"class":707},[630,2610,718],{"class":703},[630,2612,721],{"class":707},[630,2614,972],{"class":639},[630,2616,727],{"class":707},[630,2618,2619,2621,2623,2625,2627,2629,2631,2633],{"class":632,"line":730},[630,2620,704],{"class":703},[630,2622,708],{"class":707},[630,2624,898],{"class":711},[630,2626,715],{"class":707},[630,2628,718],{"class":703},[630,2630,721],{"class":707},[630,2632,546],{"class":639},[630,2634,727],{"class":707},[630,2636,2637,2639,2641,2643,2645,2647,2649,2651],{"class":632,"line":748},[630,2638,704],{"class":703},[630,2640,708],{"class":707},[630,2642,2417],{"class":711},[630,2644,715],{"class":707},[630,2646,718],{"class":703},[630,2648,721],{"class":707},[630,2650,2426],{"class":639},[630,2652,727],{"class":707},[630,2654,2655,2657,2659,2662,2664,2666,2668,2671],{"class":632,"line":769},[630,2656,704],{"class":703},[630,2658,708],{"class":707},[630,2660,2661],{"class":711}," createDrainPipeline",[630,2663,715],{"class":707},[630,2665,718],{"class":703},[630,2667,721],{"class":707},[630,2669,2670],{"class":639},"evlog\u002Fpipeline",[630,2672,727],{"class":707},[630,2674,2675],{"class":632,"line":776},[630,2676,773],{"emptyLinePlaceholder":772},[630,2678,2679,2681,2684,2686,2688,2691,2694,2697,2699],{"class":632,"line":794},[630,2680,2457],{"class":919},[630,2682,2683],{"class":711}," pipeline ",[630,2685,2463],{"class":707},[630,2687,2661],{"class":785},[630,2689,2690],{"class":707},"\u003C",[630,2692,2693],{"class":636},"DrainContext",[630,2695,2696],{"class":707},">",[630,2698,788],{"class":711},[630,2700,791],{"class":707},[630,2702,2703,2706,2708,2710,2713,2715,2718,2720,2723,2725,2728],{"class":632,"line":807},[630,2704,2705],{"class":797},"  batch",[630,2707,801],{"class":707},[630,2709,708],{"class":707},[630,2711,2712],{"class":797}," size",[630,2714,801],{"class":707},[630,2716,2717],{"class":1431}," 50",[630,2719,928],{"class":707},[630,2721,2722],{"class":797}," intervalMs",[630,2724,801],{"class":707},[630,2726,2727],{"class":1431}," 5000",[630,2729,2730],{"class":707}," },\n",[630,2732,2733,2736,2738,2740,2743,2745,2748],{"class":632,"line":819},[630,2734,2735],{"class":797},"  retry",[630,2737,801],{"class":707},[630,2739,708],{"class":707},[630,2741,2742],{"class":797}," maxAttempts",[630,2744,801],{"class":707},[630,2746,2747],{"class":1431}," 3",[630,2749,2730],{"class":707},[630,2751,2752,2754],{"class":632,"line":829},[630,2753,869],{"class":707},[630,2755,872],{"class":711},[630,2757,2758,2760,2763,2765,2768,2770,2773],{"class":632,"line":847},[630,2759,2457],{"class":919},[630,2761,2762],{"class":711}," drain ",[630,2764,2463],{"class":707},[630,2766,2767],{"class":785}," pipeline",[630,2769,788],{"class":711},[630,2771,2772],{"class":785},"createAxiomDrain",[630,2774,2775],{"class":711},"())\n",[630,2777,2778],{"class":632,"line":858},[630,2779,773],{"emptyLinePlaceholder":772},[630,2781,2782,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808],{"class":632,"line":866},[630,2783,779],{"class":703},[630,2785,920],{"class":919},[630,2787,708],{"class":707},[630,2789,925],{"class":711},[630,2791,928],{"class":707},[630,2793,931],{"class":711},[630,2795,869],{"class":707},[630,2797,936],{"class":707},[630,2799,898],{"class":785},[630,2801,788],{"class":711},[630,2803,1162],{"class":707},[630,2805,2762],{"class":711},[630,2807,869],{"class":707},[630,2809,872],{"class":711},[2811,2812,2814,2815,2818,2819,879],"callout",{"color":2813,"icon":13},"info","Call ",[544,2816,2817],{},"drain.flush()"," on server shutdown to ensure all buffered events are sent. See the ",[597,2820,2821],{"href":496},"Pipeline docs",[608,2823,2825],{"id":2824},"tail-sampling","Tail Sampling",[540,2827,1471,2828,2831],{},[544,2829,2830],{},"keep"," to force-retain specific events regardless of head sampling:",[620,2833,2835],{"className":693,"code":2834,"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,2836,2837,2861,2873,2890,2934,2938],{"__ignoreMap":626},[630,2838,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859],{"class":632,"line":633},[630,2840,779],{"class":703},[630,2842,920],{"class":919},[630,2844,708],{"class":707},[630,2846,925],{"class":711},[630,2848,928],{"class":707},[630,2850,931],{"class":711},[630,2852,869],{"class":707},[630,2854,936],{"class":707},[630,2856,898],{"class":785},[630,2858,788],{"class":711},[630,2860,791],{"class":707},[630,2862,2863,2865,2867,2869,2871],{"class":632,"line":730},[630,2864,2500],{"class":797},[630,2866,801],{"class":707},[630,2868,2417],{"class":785},[630,2870,813],{"class":711},[630,2872,816],{"class":707},[630,2874,2875,2878,2880,2882,2884,2886,2888],{"class":632,"line":748},[630,2876,2877],{"class":785},"  keep",[630,2879,801],{"class":707},[630,2881,2518],{"class":707},[630,2883,2521],{"class":1127},[630,2885,853],{"class":707},[630,2887,1139],{"class":919},[630,2889,999],{"class":707},[630,2891,2892,2895,2897,2899,2901,2904,2907,2910,2912,2914,2917,2920,2922,2924,2926,2929,2931],{"class":632,"line":769},[630,2893,2894],{"class":703},"    if",[630,2896,2518],{"class":797},[630,2898,2521],{"class":711},[630,2900,1149],{"class":707},[630,2902,2903],{"class":711},"duration",[630,2905,2906],{"class":707}," &&",[630,2908,2909],{"class":711}," ctx",[630,2911,1149],{"class":707},[630,2913,2903],{"class":711},[630,2915,2916],{"class":707}," >",[630,2918,2919],{"class":1431}," 2000",[630,2921,1360],{"class":797},[630,2923,2521],{"class":711},[630,2925,1149],{"class":707},[630,2927,2928],{"class":711},"shouldKeep",[630,2930,936],{"class":707},[630,2932,2933],{"class":2010}," true\n",[630,2935,2936],{"class":632,"line":776},[630,2937,2573],{"class":707},[630,2939,2940,2942],{"class":632,"line":794},[630,2941,869],{"class":707},[630,2943,872],{"class":711},[608,2945,2947],{"id":2946},"route-filtering","Route Filtering",[540,2949,2950,2951,551,2954,2957],{},"Control which routes are logged with ",[544,2952,2953],{},"include",[544,2955,2956],{},"exclude"," patterns:",[620,2959,2961],{"className":693,"code":2960,"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,2962,2963,2987,3009,3038,3047,3075,3101,3105],{"__ignoreMap":626},[630,2964,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985],{"class":632,"line":633},[630,2966,779],{"class":703},[630,2968,920],{"class":919},[630,2970,708],{"class":707},[630,2972,925],{"class":711},[630,2974,928],{"class":707},[630,2976,931],{"class":711},[630,2978,869],{"class":707},[630,2980,936],{"class":707},[630,2982,898],{"class":785},[630,2984,788],{"class":711},[630,2986,791],{"class":707},[630,2988,2989,2992,2994,2997,2999,3002,3004,3007],{"class":632,"line":730},[630,2990,2991],{"class":797},"  include",[630,2993,801],{"class":707},[630,2995,2996],{"class":711}," [",[630,2998,842],{"class":707},[630,3000,3001],{"class":639},"\u002Fapi\u002F**",[630,3003,842],{"class":707},[630,3005,3006],{"class":711},"]",[630,3008,816],{"class":707},[630,3010,3011,3014,3016,3018,3020,3023,3025,3027,3029,3032,3034,3036],{"class":632,"line":748},[630,3012,3013],{"class":797},"  exclude",[630,3015,801],{"class":707},[630,3017,2996],{"class":711},[630,3019,842],{"class":707},[630,3021,3022],{"class":639},"\u002F_internal\u002F**",[630,3024,842],{"class":707},[630,3026,928],{"class":707},[630,3028,721],{"class":707},[630,3030,3031],{"class":639},"\u002Fhealth",[630,3033,842],{"class":707},[630,3035,3006],{"class":711},[630,3037,816],{"class":707},[630,3039,3040,3043,3045],{"class":632,"line":769},[630,3041,3042],{"class":797},"  routes",[630,3044,801],{"class":707},[630,3046,999],{"class":707},[630,3048,3049,3052,3055,3057,3059,3061,3064,3066,3068,3071,3073],{"class":632,"line":776},[630,3050,3051],{"class":707},"    '",[630,3053,3054],{"class":797},"\u002Fapi\u002Fauth\u002F**",[630,3056,842],{"class":707},[630,3058,801],{"class":707},[630,3060,708],{"class":707},[630,3062,3063],{"class":797}," service",[630,3065,801],{"class":707},[630,3067,721],{"class":707},[630,3069,3070],{"class":639},"auth-service",[630,3072,842],{"class":707},[630,3074,2730],{"class":707},[630,3076,3077,3079,3082,3084,3086,3088,3090,3092,3094,3097,3099],{"class":632,"line":794},[630,3078,3051],{"class":707},[630,3080,3081],{"class":797},"\u002Fapi\u002Fpayment\u002F**",[630,3083,842],{"class":707},[630,3085,801],{"class":707},[630,3087,708],{"class":707},[630,3089,3063],{"class":797},[630,3091,801],{"class":707},[630,3093,721],{"class":707},[630,3095,3096],{"class":639},"payment-service",[630,3098,842],{"class":707},[630,3100,2730],{"class":707},[630,3102,3103],{"class":632,"line":807},[630,3104,2573],{"class":707},[630,3106,3107,3109],{"class":632,"line":819},[630,3108,869],{"class":707},[630,3110,872],{"class":711},[608,3112,3114],{"id":3113},"run-locally","Run Locally",[620,3116,3119],{"className":622,"code":3117,"filename":3118,"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,3120,3121,3132,3139,3146],{"__ignoreMap":626},[630,3122,3123,3126,3129],{"class":632,"line":633},[630,3124,3125],{"class":636},"git",[630,3127,3128],{"class":639}," clone",[630,3130,3131],{"class":639}," https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\n",[630,3133,3134,3137],{"class":632,"line":730},[630,3135,3136],{"class":785},"cd",[630,3138,643],{"class":639},[630,3140,3141,3143],{"class":632,"line":748},[630,3142,624],{"class":636},[630,3144,3145],{"class":639}," install\n",[630,3147,3148,3150,3153],{"class":632,"line":769},[630,3149,624],{"class":636},[630,3151,3152],{"class":639}," example",[630,3154,3155],{"class":639}," sveltekit\n",[540,3157,3158,3159,3163],{},"Open ",[597,3160,3161],{"href":3161,"rel":3162},"http:\u002F\u002Flocalhost:5173",[601]," to explore the interactive test UI.",[3165,3166,3167],"card-group",{},[3168,3169,3173],"card",{"icon":3170,"title":3171,"to":3172},"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,3175,3177],{"id":3176},"next-steps","Next Steps",[540,3179,3180,3181,3184],{},"Deepen your ",[3182,3183,240],"strong",{}," integration:",[572,3186,3187,3192,3197,3202],{},[575,3188,3189,3191],{},[597,3190,46],{"href":47},": Design comprehensive events with context layering",[575,3193,3194,3196],{},[597,3195,138],{"href":143},": Send logs to Axiom, Sentry, PostHog, and more",[575,3198,3199,3201],{},[597,3200,61],{"href":62},": Control log volume with head and tail sampling",[575,3203,3204,3206,3207,2034,3209,2038,3211,3213],{},[597,3205,51],{"href":52},": Throw errors with ",[544,3208,2033],{},[544,3210,2037],{},[544,3212,2041],{}," fields",[3215,3216,3217],"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":3219},[3220,3226,3227,3228,3230,3231,3232,3235,3236,3237,3238],{"id":610,"depth":730,"text":25,"children":3221},[3222,3223,3224,3225],{"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":3229},"Background work (log.fork)",{"id":2023,"depth":730,"text":2024},{"id":2368,"depth":730,"text":504},{"id":2381,"depth":730,"text":2382,"children":3233},[3234],{"id":2582,"depth":748,"text":2583},{"id":2824,"depth":730,"text":2825},{"id":2946,"depth":730,"text":2947},{"id":3113,"depth":730,"text":3114},{"id":3176,"depth":730,"text":3177},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in SvelteKit applications.","md",[3242],{"label":3171,"icon":3170,"to":3172,"color":3243,"variant":3244},"neutral","subtle",{},{"title":240,"icon":243},{"title":240,"description":3239},"lEPev0LRrG6fOmUYCnvVqswEp6wZKek9j3tng55KSUo",[3250,3252],{"title":235,"path":236,"stem":237,"description":3251,"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":3253,"icon":248,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Nitro v2 and v3 applications.",1786743661026]