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