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