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