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