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