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