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