[{"data":1,"prerenderedAt":2575},["ShallowReactive",2],{"navigation_docs":3,"-enrichers-built-in":547,"-enrichers-built-in-surround":2570},[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":549,"body":550,"description":2558,"extension":2559,"links":2560,"meta":2566,"navigation":2567,"path":541,"seo":2568,"stem":542,"__hash__":2569},"docs\u002F7.enrichers\u002F2.built-in.md","Built-in Enrichers",{"type":551,"value":552,"toc":2550},"minimark",[553,566,607,682,687,694,704,729,734,896,901,1091,1097,1103,1107,1110,1117,1136,1140,1232,1237,1299,1335,1339,1346,1353,1372,1376,1419,1423,1484,1494,1498,1508,1521,1540,1544,1611,1615,1740,1747,1759,1763,1766,2528,2532,2546],[554,555,556,557,561,562,565],"p",{},"All built-in enrichers are exported from ",[558,559,560],"code",{},"evlog\u002Fenrichers",". Each enricher is a factory function that returns an ",[558,563,564],{},"(ctx: EnrichContext) => void"," callback.",[567,568,571,574,593],"prompt",{":actions":569,"description":570,"icon":288},"[\"copy\",\"cursor\",\"windsurf\"]","Add all built-in evlog enrichers",[554,572,573],{},"Add all built-in enrichers to my evlog setup.",[575,576,577,581,584,587,590],"ol",{},[578,579,580],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[578,582,583],{},"Import createUserAgentEnricher, createGeoEnricher, createRequestSizeEnricher, and createTraceContextEnricher from 'evlog\u002Fenrichers'",[578,585,586],{},"Wire the enrichers into my framework's enrich configuration",[578,588,589],{},"Enrichers add userAgent, geo, requestSize, and traceContext fields to wide events",[578,591,592],{},"All enrichers accept { overwrite?: boolean } - defaults to false to preserve user-set data",[554,594,595,596,602,603],{},"Enricher docs: ",[597,598,599],"a",{"href":599,"rel":600},"https:\u002F\u002Fwww.evlog.dev\u002Fenrichers\u002Fbuilt-in",[601],"nofollow","\nFramework setup: ",[597,604,605],{"href":605,"rel":606},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks",[601],[608,609,615],"pre",{"className":610,"code":611,"filename":612,"language":613,"meta":614,"style":614},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n","server\u002Fplugins\u002Fevlog-enrich.ts","typescript","",[558,616,617,630,640,648,656,664],{"__ignoreMap":614},[618,619,622,626],"span",{"class":620,"line":621},"line",1,[618,623,625],{"class":624},"s7zQu","import",[618,627,629],{"class":628},"sMK4o"," {\n",[618,631,633,637],{"class":620,"line":632},2,[618,634,636],{"class":635},"sTEyZ","  createUserAgentEnricher",[618,638,639],{"class":628},",\n",[618,641,643,646],{"class":620,"line":642},3,[618,644,645],{"class":635},"  createGeoEnricher",[618,647,639],{"class":628},[618,649,651,654],{"class":620,"line":650},4,[618,652,653],{"class":635},"  createRequestSizeEnricher",[618,655,639],{"class":628},[618,657,659,662],{"class":620,"line":658},5,[618,660,661],{"class":635},"  createTraceContextEnricher",[618,663,639],{"class":628},[618,665,667,670,673,676,679],{"class":620,"line":666},6,[618,668,669],{"class":628},"}",[618,671,672],{"class":624}," from",[618,674,675],{"class":628}," '",[618,677,560],{"class":678},"sfazB",[618,680,681],{"class":628},"'\n",[683,684,686],"h2",{"id":685},"user-agent","User Agent",[554,688,689,690,693],{},"Parse browser, OS, and device type from the ",[558,691,692],{},"User-Agent"," header.",[554,695,696,700,701],{},[697,698,699],"strong",{},"Sets:"," ",[558,702,703],{},"event.userAgent",[608,705,708],{"className":610,"code":706,"filename":707,"language":613,"meta":614,"style":614},"const enrich = createUserAgentEnricher()\n","user-agent-enricher.ts",[558,709,710],{"__ignoreMap":614},[618,711,712,716,719,722,726],{"class":620,"line":621},[618,713,715],{"class":714},"spNyl","const",[618,717,718],{"class":635}," enrich ",[618,720,721],{"class":628},"=",[618,723,725],{"class":724},"s2Zo4"," createUserAgentEnricher",[618,727,728],{"class":635},"()\n",[554,730,731],{},[697,732,733],{},"Output shape:",[608,735,738],{"className":610,"code":736,"filename":737,"language":613,"meta":614,"style":614},"interface UserAgentInfo {\n  raw: string                                      \u002F\u002F Original User-Agent string\n  browser?: { name: string; version?: string }     \u002F\u002F Chrome, Firefox, Safari, Edge\n  os?: { name: string; version?: string }          \u002F\u002F Windows, macOS, iOS, Android, Linux\n  device?: { type: 'mobile' | 'tablet' | 'desktop' | 'bot' | 'unknown' }\n}\n","user-agent-types.ts",[558,739,740,751,767,801,829,891],{"__ignoreMap":614},[618,741,742,745,749],{"class":620,"line":621},[618,743,744],{"class":714},"interface",[618,746,748],{"class":747},"sBMFI"," UserAgentInfo",[618,750,629],{"class":628},[618,752,753,757,760,763],{"class":620,"line":632},[618,754,756],{"class":755},"swJcz","  raw",[618,758,759],{"class":628},":",[618,761,762],{"class":747}," string",[618,764,766],{"class":765},"sHwdD","                                      \u002F\u002F Original User-Agent string\n",[618,768,769,772,775,778,781,783,785,788,791,793,795,798],{"class":620,"line":642},[618,770,771],{"class":755},"  browser",[618,773,774],{"class":628},"?:",[618,776,777],{"class":628}," {",[618,779,780],{"class":755}," name",[618,782,759],{"class":628},[618,784,762],{"class":747},[618,786,787],{"class":628},";",[618,789,790],{"class":755}," version",[618,792,774],{"class":628},[618,794,762],{"class":747},[618,796,797],{"class":628}," }",[618,799,800],{"class":765},"     \u002F\u002F Chrome, Firefox, Safari, Edge\n",[618,802,803,806,808,810,812,814,816,818,820,822,824,826],{"class":620,"line":650},[618,804,805],{"class":755},"  os",[618,807,774],{"class":628},[618,809,777],{"class":628},[618,811,780],{"class":755},[618,813,759],{"class":628},[618,815,762],{"class":747},[618,817,787],{"class":628},[618,819,790],{"class":755},[618,821,774],{"class":628},[618,823,762],{"class":747},[618,825,797],{"class":628},[618,827,828],{"class":765},"          \u002F\u002F Windows, macOS, iOS, Android, Linux\n",[618,830,831,834,836,838,841,843,845,848,851,854,856,859,861,863,865,868,870,872,874,877,879,881,883,886,888],{"class":620,"line":658},[618,832,833],{"class":755},"  device",[618,835,774],{"class":628},[618,837,777],{"class":628},[618,839,840],{"class":755}," type",[618,842,759],{"class":628},[618,844,675],{"class":628},[618,846,847],{"class":678},"mobile",[618,849,850],{"class":628},"'",[618,852,853],{"class":628}," |",[618,855,675],{"class":628},[618,857,858],{"class":678},"tablet",[618,860,850],{"class":628},[618,862,853],{"class":628},[618,864,675],{"class":628},[618,866,867],{"class":678},"desktop",[618,869,850],{"class":628},[618,871,853],{"class":628},[618,873,675],{"class":628},[618,875,876],{"class":678},"bot",[618,878,850],{"class":628},[618,880,853],{"class":628},[618,882,675],{"class":628},[618,884,885],{"class":678},"unknown",[618,887,850],{"class":628},[618,889,890],{"class":628}," }\n",[618,892,893],{"class":620,"line":666},[618,894,895],{"class":628},"}\n",[554,897,898],{},[697,899,900],{},"Example output:",[608,902,907],{"className":903,"code":904,"filename":905,"language":906,"meta":614,"style":614},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"userAgent\": {\n    \"raw\": \"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0\",\n    \"browser\": { \"name\": \"Chrome\", \"version\": \"120.0.0.0\" },\n    \"os\": { \"name\": \"macOS\", \"version\": \"10.15.7\" },\n    \"device\": { \"type\": \"desktop\" }\n  }\n}\n","Example wide event: userAgent","json",[558,908,909,914,929,951,1003,1050,1080,1086],{"__ignoreMap":614},[618,910,911],{"class":620,"line":621},[618,912,913],{"class":628},"{\n",[618,915,916,919,922,925,927],{"class":620,"line":632},[618,917,918],{"class":628},"  \"",[618,920,921],{"class":714},"userAgent",[618,923,924],{"class":628},"\"",[618,926,759],{"class":628},[618,928,629],{"class":628},[618,930,931,934,937,939,941,944,947,949],{"class":620,"line":642},[618,932,933],{"class":628},"    \"",[618,935,936],{"class":747},"raw",[618,938,924],{"class":628},[618,940,759],{"class":628},[618,942,943],{"class":628}," \"",[618,945,946],{"class":678},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0",[618,948,924],{"class":628},[618,950,639],{"class":628},[618,952,953,955,958,960,962,964,966,970,972,974,976,979,981,984,986,989,991,993,995,998,1000],{"class":620,"line":650},[618,954,933],{"class":628},[618,956,957],{"class":747},"browser",[618,959,924],{"class":628},[618,961,759],{"class":628},[618,963,777],{"class":628},[618,965,943],{"class":628},[618,967,969],{"class":968},"sbssI","name",[618,971,924],{"class":628},[618,973,759],{"class":628},[618,975,943],{"class":628},[618,977,978],{"class":678},"Chrome",[618,980,924],{"class":628},[618,982,983],{"class":628},",",[618,985,943],{"class":628},[618,987,988],{"class":968},"version",[618,990,924],{"class":628},[618,992,759],{"class":628},[618,994,943],{"class":628},[618,996,997],{"class":678},"120.0.0.0",[618,999,924],{"class":628},[618,1001,1002],{"class":628}," },\n",[618,1004,1005,1007,1010,1012,1014,1016,1018,1020,1022,1024,1026,1029,1031,1033,1035,1037,1039,1041,1043,1046,1048],{"class":620,"line":658},[618,1006,933],{"class":628},[618,1008,1009],{"class":747},"os",[618,1011,924],{"class":628},[618,1013,759],{"class":628},[618,1015,777],{"class":628},[618,1017,943],{"class":628},[618,1019,969],{"class":968},[618,1021,924],{"class":628},[618,1023,759],{"class":628},[618,1025,943],{"class":628},[618,1027,1028],{"class":678},"macOS",[618,1030,924],{"class":628},[618,1032,983],{"class":628},[618,1034,943],{"class":628},[618,1036,988],{"class":968},[618,1038,924],{"class":628},[618,1040,759],{"class":628},[618,1042,943],{"class":628},[618,1044,1045],{"class":678},"10.15.7",[618,1047,924],{"class":628},[618,1049,1002],{"class":628},[618,1051,1052,1054,1057,1059,1061,1063,1065,1068,1070,1072,1074,1076,1078],{"class":620,"line":666},[618,1053,933],{"class":628},[618,1055,1056],{"class":747},"device",[618,1058,924],{"class":628},[618,1060,759],{"class":628},[618,1062,777],{"class":628},[618,1064,943],{"class":628},[618,1066,1067],{"class":968},"type",[618,1069,924],{"class":628},[618,1071,759],{"class":628},[618,1073,943],{"class":628},[618,1075,867],{"class":678},[618,1077,924],{"class":628},[618,1079,890],{"class":628},[618,1081,1083],{"class":620,"line":1082},7,[618,1084,1085],{"class":628},"  }\n",[618,1087,1089],{"class":620,"line":1088},8,[618,1090,895],{"class":628},[554,1092,1093,1096],{},[697,1094,1095],{},"Detected browsers:"," Edge, Chrome, Firefox, Safari (checked in order, Edge before Chrome to avoid false matches).",[554,1098,1099,1102],{},[697,1100,1101],{},"Detected devices:"," Bot (crawlers, spiders), Tablet (iPad), Mobile (iPhone, Android phones), Desktop (fallback).",[683,1104,1106],{"id":1105},"geo","Geo",[554,1108,1109],{},"Extract geographic data from platform-injected headers.",[554,1111,1112,700,1114],{},[697,1113,699],{},[558,1115,1116],{},"event.geo",[608,1118,1121],{"className":610,"code":1119,"filename":1120,"language":613,"meta":614,"style":614},"const enrich = createGeoEnricher()\n","geo-enricher.ts",[558,1122,1123],{"__ignoreMap":614},[618,1124,1125,1127,1129,1131,1134],{"class":620,"line":621},[618,1126,715],{"class":714},[618,1128,718],{"class":635},[618,1130,721],{"class":628},[618,1132,1133],{"class":724}," createGeoEnricher",[618,1135,728],{"class":635},[554,1137,1138],{},[697,1139,733],{},[608,1141,1144],{"className":610,"code":1142,"filename":1143,"language":613,"meta":614,"style":614},"interface GeoInfo {\n  country?: string      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n  region?: string       \u002F\u002F Region\u002Fstate name\n  regionCode?: string   \u002F\u002F Region code\n  city?: string         \u002F\u002F City name\n  latitude?: number     \u002F\u002F Decimal latitude\n  longitude?: number    \u002F\u002F Decimal longitude\n}\n","geo-types.ts",[558,1145,1146,1155,1167,1179,1191,1203,1216,1228],{"__ignoreMap":614},[618,1147,1148,1150,1153],{"class":620,"line":621},[618,1149,744],{"class":714},[618,1151,1152],{"class":747}," GeoInfo",[618,1154,629],{"class":628},[618,1156,1157,1160,1162,1164],{"class":620,"line":632},[618,1158,1159],{"class":755},"  country",[618,1161,774],{"class":628},[618,1163,762],{"class":747},[618,1165,1166],{"class":765},"      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n",[618,1168,1169,1172,1174,1176],{"class":620,"line":642},[618,1170,1171],{"class":755},"  region",[618,1173,774],{"class":628},[618,1175,762],{"class":747},[618,1177,1178],{"class":765},"       \u002F\u002F Region\u002Fstate name\n",[618,1180,1181,1184,1186,1188],{"class":620,"line":650},[618,1182,1183],{"class":755},"  regionCode",[618,1185,774],{"class":628},[618,1187,762],{"class":747},[618,1189,1190],{"class":765},"   \u002F\u002F Region code\n",[618,1192,1193,1196,1198,1200],{"class":620,"line":658},[618,1194,1195],{"class":755},"  city",[618,1197,774],{"class":628},[618,1199,762],{"class":747},[618,1201,1202],{"class":765},"         \u002F\u002F City name\n",[618,1204,1205,1208,1210,1213],{"class":620,"line":666},[618,1206,1207],{"class":755},"  latitude",[618,1209,774],{"class":628},[618,1211,1212],{"class":747}," number",[618,1214,1215],{"class":765},"     \u002F\u002F Decimal latitude\n",[618,1217,1218,1221,1223,1225],{"class":620,"line":1082},[618,1219,1220],{"class":755},"  longitude",[618,1222,774],{"class":628},[618,1224,1212],{"class":747},[618,1226,1227],{"class":765},"    \u002F\u002F Decimal longitude\n",[618,1229,1230],{"class":620,"line":1088},[618,1231,895],{"class":628},[554,1233,1234],{},[697,1235,1236],{},"Supported platforms:",[1238,1239,1240,1256],"table",{},[1241,1242,1243],"thead",{},[1244,1245,1246,1250,1253],"tr",{},[1247,1248,1249],"th",{},"Platform",[1247,1251,1252],{},"Headers",[1247,1254,1255],{},"Coverage",[1257,1258,1259,1286],"tbody",{},[1244,1260,1261,1265,1283],{},[1262,1263,1264],"td",{},"Vercel",[1262,1266,1267,1270,1271,1270,1274,1270,1277,1270,1280],{},[558,1268,1269],{},"x-vercel-ip-country",", ",[558,1272,1273],{},"x-vercel-ip-country-region",[558,1275,1276],{},"x-vercel-ip-city",[558,1278,1279],{},"x-vercel-ip-latitude",[558,1281,1282],{},"x-vercel-ip-longitude",[1262,1284,1285],{},"Full",[1244,1287,1288,1291,1296],{},[1262,1289,1290],{},"Cloudflare",[1262,1292,1293],{},[558,1294,1295],{},"cf-ipcountry",[1262,1297,1298],{},"Country only",[1300,1301,1303,1306,1307,1309,1310,1270,1313,1270,1316,1319,1320,1323,1324,1327,1328,1330,1331,1334],"callout",{"color":1302,"icon":13},"info",[697,1304,1305],{},"Cloudflare note:"," Only ",[558,1308,1295],{}," is a standard Cloudflare HTTP header. Other geo fields (",[558,1311,1312],{},"city",[558,1314,1315],{},"region",[558,1317,1318],{},"latitude",", etc.) are properties of ",[558,1321,1322],{},"request.cf",", which is not exposed as headers. For full Cloudflare geo data, write a ",[597,1325,1326],{"href":545},"custom enricher"," that reads ",[558,1329,1322],{},", or use a Workers middleware to copy ",[558,1332,1333],{},"cf"," properties into custom headers.",[683,1336,1338],{"id":1337},"request-size","Request Size",[554,1340,1341,1342,1345],{},"Capture request and response payload sizes from ",[558,1343,1344],{},"Content-Length"," headers.",[554,1347,1348,700,1350],{},[697,1349,699],{},[558,1351,1352],{},"event.requestSize",[608,1354,1357],{"className":610,"code":1355,"filename":1356,"language":613,"meta":614,"style":614},"const enrich = createRequestSizeEnricher()\n","request-size-enricher.ts",[558,1358,1359],{"__ignoreMap":614},[618,1360,1361,1363,1365,1367,1370],{"class":620,"line":621},[618,1362,715],{"class":714},[618,1364,718],{"class":635},[618,1366,721],{"class":628},[618,1368,1369],{"class":724}," createRequestSizeEnricher",[618,1371,728],{"class":635},[554,1373,1374],{},[697,1375,733],{},[608,1377,1380],{"className":610,"code":1378,"filename":1379,"language":613,"meta":614,"style":614},"interface RequestSizeInfo {\n  requestBytes?: number    \u002F\u002F Request Content-Length\n  responseBytes?: number   \u002F\u002F Response Content-Length\n}\n","request-size-types.ts",[558,1381,1382,1391,1403,1415],{"__ignoreMap":614},[618,1383,1384,1386,1389],{"class":620,"line":621},[618,1385,744],{"class":714},[618,1387,1388],{"class":747}," RequestSizeInfo",[618,1390,629],{"class":628},[618,1392,1393,1396,1398,1400],{"class":620,"line":632},[618,1394,1395],{"class":755},"  requestBytes",[618,1397,774],{"class":628},[618,1399,1212],{"class":747},[618,1401,1402],{"class":765},"    \u002F\u002F Request Content-Length\n",[618,1404,1405,1408,1410,1412],{"class":620,"line":642},[618,1406,1407],{"class":755},"  responseBytes",[618,1409,774],{"class":628},[618,1411,1212],{"class":747},[618,1413,1414],{"class":765},"   \u002F\u002F Response Content-Length\n",[618,1416,1417],{"class":620,"line":650},[618,1418,895],{"class":628},[554,1420,1421],{},[697,1422,900],{},[608,1424,1427],{"className":903,"code":1425,"filename":1426,"language":906,"meta":614,"style":614},"{\n  \"requestSize\": {\n    \"requestBytes\": 1234,\n    \"responseBytes\": 5678\n  }\n}\n","Example wide event: requestSize",[558,1428,1429,1433,1446,1462,1476,1480],{"__ignoreMap":614},[618,1430,1431],{"class":620,"line":621},[618,1432,913],{"class":628},[618,1434,1435,1437,1440,1442,1444],{"class":620,"line":632},[618,1436,918],{"class":628},[618,1438,1439],{"class":714},"requestSize",[618,1441,924],{"class":628},[618,1443,759],{"class":628},[618,1445,629],{"class":628},[618,1447,1448,1450,1453,1455,1457,1460],{"class":620,"line":642},[618,1449,933],{"class":628},[618,1451,1452],{"class":747},"requestBytes",[618,1454,924],{"class":628},[618,1456,759],{"class":628},[618,1458,1459],{"class":968}," 1234",[618,1461,639],{"class":628},[618,1463,1464,1466,1469,1471,1473],{"class":620,"line":650},[618,1465,933],{"class":628},[618,1467,1468],{"class":747},"responseBytes",[618,1470,924],{"class":628},[618,1472,759],{"class":628},[618,1474,1475],{"class":968}," 5678\n",[618,1477,1478],{"class":620,"line":658},[618,1479,1085],{"class":628},[618,1481,1482],{"class":620,"line":666},[618,1483,895],{"class":628},[1300,1485,1486,1487,1489,1490,1493],{"color":1302,"icon":13},"This enricher reads the ",[558,1488,1344],{}," header from both the request and response. If the header is missing (e.g., for chunked transfer encoding), the corresponding field will be ",[558,1491,1492],{},"undefined",".",[683,1495,1497],{"id":1496},"trace-context","Trace Context",[554,1499,1500,1501,1504,1505,1345],{},"Extract W3C trace context from the ",[558,1502,1503],{},"traceparent"," and ",[558,1506,1507],{},"tracestate",[554,1509,1510,700,1512,1270,1515,1270,1518],{},[697,1511,699],{},[558,1513,1514],{},"event.traceContext",[558,1516,1517],{},"event.traceId",[558,1519,1520],{},"event.spanId",[608,1522,1525],{"className":610,"code":1523,"filename":1524,"language":613,"meta":614,"style":614},"const enrich = createTraceContextEnricher()\n","trace-context-enricher.ts",[558,1526,1527],{"__ignoreMap":614},[618,1528,1529,1531,1533,1535,1538],{"class":620,"line":621},[618,1530,715],{"class":714},[618,1532,718],{"class":635},[618,1534,721],{"class":628},[618,1536,1537],{"class":724}," createTraceContextEnricher",[618,1539,728],{"class":635},[554,1541,1542],{},[697,1543,733],{},[608,1545,1548],{"className":610,"code":1546,"filename":1547,"language":613,"meta":614,"style":614},"interface TraceContextInfo {\n  traceparent?: string   \u002F\u002F Full traceparent header value\n  tracestate?: string    \u002F\u002F Full tracestate header value\n  traceId?: string       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n  spanId?: string        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n}\n","trace-context-types.ts",[558,1549,1550,1559,1571,1583,1595,1607],{"__ignoreMap":614},[618,1551,1552,1554,1557],{"class":620,"line":621},[618,1553,744],{"class":714},[618,1555,1556],{"class":747}," TraceContextInfo",[618,1558,629],{"class":628},[618,1560,1561,1564,1566,1568],{"class":620,"line":632},[618,1562,1563],{"class":755},"  traceparent",[618,1565,774],{"class":628},[618,1567,762],{"class":747},[618,1569,1570],{"class":765},"   \u002F\u002F Full traceparent header value\n",[618,1572,1573,1576,1578,1580],{"class":620,"line":642},[618,1574,1575],{"class":755},"  tracestate",[618,1577,774],{"class":628},[618,1579,762],{"class":747},[618,1581,1582],{"class":765},"    \u002F\u002F Full tracestate header value\n",[618,1584,1585,1588,1590,1592],{"class":620,"line":650},[618,1586,1587],{"class":755},"  traceId",[618,1589,774],{"class":628},[618,1591,762],{"class":747},[618,1593,1594],{"class":765},"       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n",[618,1596,1597,1600,1602,1604],{"class":620,"line":658},[618,1598,1599],{"class":755},"  spanId",[618,1601,774],{"class":628},[618,1603,762],{"class":747},[618,1605,1606],{"class":765},"        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n",[618,1608,1609],{"class":620,"line":666},[618,1610,895],{"class":628},[554,1612,1613],{},[697,1614,900],{},[608,1616,1619],{"className":903,"code":1617,"filename":1618,"language":906,"meta":614,"style":614},"{\n  \"traceContext\": {\n    \"traceparent\": \"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"spanId\": \"00f067aa0ba902b7\"\n  },\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spanId\": \"00f067aa0ba902b7\"\n}\n","Example wide event: traceContext",[558,1620,1621,1625,1638,1657,1677,1696,1701,1719,1735],{"__ignoreMap":614},[618,1622,1623],{"class":620,"line":621},[618,1624,913],{"class":628},[618,1626,1627,1629,1632,1634,1636],{"class":620,"line":632},[618,1628,918],{"class":628},[618,1630,1631],{"class":714},"traceContext",[618,1633,924],{"class":628},[618,1635,759],{"class":628},[618,1637,629],{"class":628},[618,1639,1640,1642,1644,1646,1648,1650,1653,1655],{"class":620,"line":642},[618,1641,933],{"class":628},[618,1643,1503],{"class":747},[618,1645,924],{"class":628},[618,1647,759],{"class":628},[618,1649,943],{"class":628},[618,1651,1652],{"class":678},"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",[618,1654,924],{"class":628},[618,1656,639],{"class":628},[618,1658,1659,1661,1664,1666,1668,1670,1673,1675],{"class":620,"line":650},[618,1660,933],{"class":628},[618,1662,1663],{"class":747},"traceId",[618,1665,924],{"class":628},[618,1667,759],{"class":628},[618,1669,943],{"class":628},[618,1671,1672],{"class":678},"4bf92f3577b34da6a3ce929d0e0e4736",[618,1674,924],{"class":628},[618,1676,639],{"class":628},[618,1678,1679,1681,1684,1686,1688,1690,1693],{"class":620,"line":658},[618,1680,933],{"class":628},[618,1682,1683],{"class":747},"spanId",[618,1685,924],{"class":628},[618,1687,759],{"class":628},[618,1689,943],{"class":628},[618,1691,1692],{"class":678},"00f067aa0ba902b7",[618,1694,1695],{"class":628},"\"\n",[618,1697,1698],{"class":620,"line":666},[618,1699,1700],{"class":628},"  },\n",[618,1702,1703,1705,1707,1709,1711,1713,1715,1717],{"class":620,"line":1082},[618,1704,918],{"class":628},[618,1706,1663],{"class":714},[618,1708,924],{"class":628},[618,1710,759],{"class":628},[618,1712,943],{"class":628},[618,1714,1672],{"class":678},[618,1716,924],{"class":628},[618,1718,639],{"class":628},[618,1720,1721,1723,1725,1727,1729,1731,1733],{"class":620,"line":1088},[618,1722,918],{"class":628},[618,1724,1683],{"class":714},[618,1726,924],{"class":628},[618,1728,759],{"class":628},[618,1730,943],{"class":628},[618,1732,1692],{"class":678},[618,1734,1695],{"class":628},[618,1736,1738],{"class":620,"line":1737},9,[618,1739,895],{"class":628},[554,1741,1742,1504,1744,1746],{},[558,1743,1663],{},[558,1745,1683],{}," are also set at the top level of the event for easy querying and correlation.",[1300,1748,1749,1750,1755,1756,1493],{"color":1302,"icon":13},"The traceparent format follows the ",[597,1751,1754],{"href":1752,"rel":1753},"https:\u002F\u002Fwww.w3.org\u002FTR\u002Ftrace-context\u002F",[601],"W3C Trace Context"," specification: ",[558,1757,1758],{},"{version}-{traceId}-{spanId}-{flags}",[683,1760,1762],{"id":1761},"full-setup-example","Full Setup Example",[554,1764,1765],{},"Use all built-in enrichers together. The list of enrichers is identical across frameworks — only the wiring changes.",[1767,1768,1769,2008,2242,2390],"code-group",{},[608,1770,1773],{"className":610,"code":1771,"filename":1772,"language":613,"meta":614,"style":614},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const enrichers = [\n    createUserAgentEnricher(),\n    createGeoEnricher(),\n    createRequestSizeEnricher(),\n    createTraceContextEnricher(),\n  ]\n\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","Nuxt \u002F Nitro",[558,1774,1775,1780,1786,1792,1798,1804,1810,1822,1828,1856,1871,1882,1892,1902,1912,1918,1923,1962,1993,2001],{"__ignoreMap":614},[618,1776,1777],{"class":620,"line":621},[618,1778,1779],{"class":765},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\n",[618,1781,1782,1784],{"class":620,"line":632},[618,1783,625],{"class":624},[618,1785,629],{"class":628},[618,1787,1788,1790],{"class":620,"line":642},[618,1789,636],{"class":635},[618,1791,639],{"class":628},[618,1793,1794,1796],{"class":620,"line":650},[618,1795,645],{"class":635},[618,1797,639],{"class":628},[618,1799,1800,1802],{"class":620,"line":658},[618,1801,653],{"class":635},[618,1803,639],{"class":628},[618,1805,1806,1808],{"class":620,"line":666},[618,1807,661],{"class":635},[618,1809,639],{"class":628},[618,1811,1812,1814,1816,1818,1820],{"class":620,"line":1082},[618,1813,669],{"class":628},[618,1815,672],{"class":624},[618,1817,675],{"class":628},[618,1819,560],{"class":678},[618,1821,681],{"class":628},[618,1823,1824],{"class":620,"line":1088},[618,1825,1827],{"emptyLinePlaceholder":1826},true,"\n",[618,1829,1830,1833,1836,1839,1842,1844,1848,1851,1854],{"class":620,"line":1737},[618,1831,1832],{"class":624},"export",[618,1834,1835],{"class":624}," default",[618,1837,1838],{"class":724}," defineNitroPlugin",[618,1840,1841],{"class":635},"(",[618,1843,1841],{"class":628},[618,1845,1847],{"class":1846},"sHdIc","nitroApp",[618,1849,1850],{"class":628},")",[618,1852,1853],{"class":714}," =>",[618,1855,629],{"class":628},[618,1857,1859,1862,1865,1868],{"class":620,"line":1858},10,[618,1860,1861],{"class":714},"  const",[618,1863,1864],{"class":635}," enrichers",[618,1866,1867],{"class":628}," =",[618,1869,1870],{"class":755}," [\n",[618,1872,1874,1877,1880],{"class":620,"line":1873},11,[618,1875,1876],{"class":724},"    createUserAgentEnricher",[618,1878,1879],{"class":755},"()",[618,1881,639],{"class":628},[618,1883,1885,1888,1890],{"class":620,"line":1884},12,[618,1886,1887],{"class":724},"    createGeoEnricher",[618,1889,1879],{"class":755},[618,1891,639],{"class":628},[618,1893,1895,1898,1900],{"class":620,"line":1894},13,[618,1896,1897],{"class":724},"    createRequestSizeEnricher",[618,1899,1879],{"class":755},[618,1901,639],{"class":628},[618,1903,1905,1908,1910],{"class":620,"line":1904},14,[618,1906,1907],{"class":724},"    createTraceContextEnricher",[618,1909,1879],{"class":755},[618,1911,639],{"class":628},[618,1913,1915],{"class":620,"line":1914},15,[618,1916,1917],{"class":755},"  ]\n",[618,1919,1921],{"class":620,"line":1920},16,[618,1922,1827],{"emptyLinePlaceholder":1826},[618,1924,1926,1929,1931,1934,1936,1939,1941,1943,1946,1948,1950,1953,1956,1958,1960],{"class":620,"line":1925},17,[618,1927,1928],{"class":635},"  nitroApp",[618,1930,1493],{"class":628},[618,1932,1933],{"class":635},"hooks",[618,1935,1493],{"class":628},[618,1937,1938],{"class":724},"hook",[618,1940,1841],{"class":755},[618,1942,850],{"class":628},[618,1944,1945],{"class":678},"evlog:enrich",[618,1947,850],{"class":628},[618,1949,983],{"class":628},[618,1951,1952],{"class":628}," (",[618,1954,1955],{"class":1846},"ctx",[618,1957,1850],{"class":628},[618,1959,1853],{"class":714},[618,1961,629],{"class":628},[618,1963,1965,1968,1970,1972,1975,1978,1980,1983,1986,1988,1990],{"class":620,"line":1964},18,[618,1966,1967],{"class":624},"    for",[618,1969,1952],{"class":755},[618,1971,715],{"class":714},[618,1973,1974],{"class":635}," enricher",[618,1976,1977],{"class":628}," of",[618,1979,1864],{"class":635},[618,1981,1982],{"class":755},") ",[618,1984,1985],{"class":724},"enricher",[618,1987,1841],{"class":755},[618,1989,1955],{"class":635},[618,1991,1992],{"class":755},")\n",[618,1994,1996,1999],{"class":620,"line":1995},19,[618,1997,1998],{"class":628},"  }",[618,2000,1992],{"class":755},[618,2002,2004,2006],{"class":620,"line":2003},20,[618,2005,669],{"class":628},[618,2007,1992],{"class":635},[608,2009,2011],{"className":610,"code":2010,"filename":216,"language":613,"meta":614,"style":614},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  enrich: (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  },\n})\n",[558,2012,2013,2018,2038,2044,2050,2056,2062,2068,2080,2084,2095,2103,2111,2119,2127,2132,2136,2173,2189,2206,2230,2235],{"__ignoreMap":614},[618,2014,2015],{"class":620,"line":621},[618,2016,2017],{"class":765},"\u002F\u002F lib\u002Fevlog.ts\n",[618,2019,2020,2022,2024,2027,2029,2031,2033,2036],{"class":620,"line":632},[618,2021,625],{"class":624},[618,2023,777],{"class":628},[618,2025,2026],{"class":635}," createEvlog",[618,2028,797],{"class":628},[618,2030,672],{"class":624},[618,2032,675],{"class":628},[618,2034,2035],{"class":678},"evlog\u002Fnext",[618,2037,681],{"class":628},[618,2039,2040,2042],{"class":620,"line":642},[618,2041,625],{"class":624},[618,2043,629],{"class":628},[618,2045,2046,2048],{"class":620,"line":650},[618,2047,636],{"class":635},[618,2049,639],{"class":628},[618,2051,2052,2054],{"class":620,"line":658},[618,2053,645],{"class":635},[618,2055,639],{"class":628},[618,2057,2058,2060],{"class":620,"line":666},[618,2059,653],{"class":635},[618,2061,639],{"class":628},[618,2063,2064,2066],{"class":620,"line":1082},[618,2065,661],{"class":635},[618,2067,639],{"class":628},[618,2069,2070,2072,2074,2076,2078],{"class":620,"line":1088},[618,2071,669],{"class":628},[618,2073,672],{"class":624},[618,2075,675],{"class":628},[618,2077,560],{"class":678},[618,2079,681],{"class":628},[618,2081,2082],{"class":620,"line":1737},[618,2083,1827],{"emptyLinePlaceholder":1826},[618,2085,2086,2088,2091,2093],{"class":620,"line":1858},[618,2087,715],{"class":714},[618,2089,2090],{"class":635}," enrichers ",[618,2092,721],{"class":628},[618,2094,1870],{"class":635},[618,2096,2097,2099,2101],{"class":620,"line":1873},[618,2098,636],{"class":724},[618,2100,1879],{"class":635},[618,2102,639],{"class":628},[618,2104,2105,2107,2109],{"class":620,"line":1884},[618,2106,645],{"class":724},[618,2108,1879],{"class":635},[618,2110,639],{"class":628},[618,2112,2113,2115,2117],{"class":620,"line":1894},[618,2114,653],{"class":724},[618,2116,1879],{"class":635},[618,2118,639],{"class":628},[618,2120,2121,2123,2125],{"class":620,"line":1904},[618,2122,661],{"class":724},[618,2124,1879],{"class":635},[618,2126,639],{"class":628},[618,2128,2129],{"class":620,"line":1914},[618,2130,2131],{"class":635},"]\n",[618,2133,2134],{"class":620,"line":1920},[618,2135,1827],{"emptyLinePlaceholder":1826},[618,2137,2138,2140,2143,2145,2148,2150,2153,2155,2158,2160,2163,2165,2167,2169,2171],{"class":620,"line":1925},[618,2139,1832],{"class":624},[618,2141,2142],{"class":714}," const",[618,2144,777],{"class":628},[618,2146,2147],{"class":635}," withEvlog",[618,2149,983],{"class":628},[618,2151,2152],{"class":635}," useLogger",[618,2154,983],{"class":628},[618,2156,2157],{"class":635}," log",[618,2159,983],{"class":628},[618,2161,2162],{"class":635}," createError ",[618,2164,669],{"class":628},[618,2166,1867],{"class":628},[618,2168,2026],{"class":724},[618,2170,1841],{"class":635},[618,2172,913],{"class":628},[618,2174,2175,2178,2180,2182,2185,2187],{"class":620,"line":1964},[618,2176,2177],{"class":755},"  service",[618,2179,759],{"class":628},[618,2181,675],{"class":628},[618,2183,2184],{"class":678},"my-app",[618,2186,850],{"class":628},[618,2188,639],{"class":628},[618,2190,2191,2194,2196,2198,2200,2202,2204],{"class":620,"line":1995},[618,2192,2193],{"class":724},"  enrich",[618,2195,759],{"class":628},[618,2197,1952],{"class":628},[618,2199,1955],{"class":1846},[618,2201,1850],{"class":628},[618,2203,1853],{"class":714},[618,2205,629],{"class":628},[618,2207,2208,2210,2212,2214,2216,2218,2220,2222,2224,2226,2228],{"class":620,"line":2003},[618,2209,1967],{"class":624},[618,2211,1952],{"class":755},[618,2213,715],{"class":714},[618,2215,1974],{"class":635},[618,2217,1977],{"class":628},[618,2219,1864],{"class":635},[618,2221,1982],{"class":755},[618,2223,1985],{"class":724},[618,2225,1841],{"class":755},[618,2227,1955],{"class":635},[618,2229,1992],{"class":755},[618,2231,2233],{"class":620,"line":2232},21,[618,2234,1700],{"class":628},[618,2236,2238,2240],{"class":620,"line":2237},22,[618,2239,669],{"class":628},[618,2241,1992],{"class":635},[608,2243,2246],{"className":610,"code":2244,"filename":2245,"language":613,"meta":614,"style":614},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\napp.use(evlog({ enrichers })) \u002F\u002F Hono \u002F Express \u002F Elysia\n\u002F\u002F await app.register(evlog, { enrichers }) \u002F\u002F Fastify\n\u002F\u002F EvlogModule.forRoot({ enrichers }) \u002F\u002F NestJS\n","Hono \u002F Express \u002F Fastify \u002F Elysia \u002F NestJS",[558,2247,2248,2254,2260,2266,2272,2278,2290,2294,2304,2312,2320,2328,2336,2340,2344,2374,2382],{"__ignoreMap":614},[618,2249,2250,2252],{"class":620,"line":621},[618,2251,625],{"class":624},[618,2253,629],{"class":628},[618,2255,2256,2258],{"class":620,"line":632},[618,2257,636],{"class":635},[618,2259,639],{"class":628},[618,2261,2262,2264],{"class":620,"line":642},[618,2263,645],{"class":635},[618,2265,639],{"class":628},[618,2267,2268,2270],{"class":620,"line":650},[618,2269,653],{"class":635},[618,2271,639],{"class":628},[618,2273,2274,2276],{"class":620,"line":658},[618,2275,661],{"class":635},[618,2277,639],{"class":628},[618,2279,2280,2282,2284,2286,2288],{"class":620,"line":666},[618,2281,669],{"class":628},[618,2283,672],{"class":624},[618,2285,675],{"class":628},[618,2287,560],{"class":678},[618,2289,681],{"class":628},[618,2291,2292],{"class":620,"line":1082},[618,2293,1827],{"emptyLinePlaceholder":1826},[618,2295,2296,2298,2300,2302],{"class":620,"line":1088},[618,2297,715],{"class":714},[618,2299,2090],{"class":635},[618,2301,721],{"class":628},[618,2303,1870],{"class":635},[618,2305,2306,2308,2310],{"class":620,"line":1737},[618,2307,636],{"class":724},[618,2309,1879],{"class":635},[618,2311,639],{"class":628},[618,2313,2314,2316,2318],{"class":620,"line":1858},[618,2315,645],{"class":724},[618,2317,1879],{"class":635},[618,2319,639],{"class":628},[618,2321,2322,2324,2326],{"class":620,"line":1873},[618,2323,653],{"class":724},[618,2325,1879],{"class":635},[618,2327,639],{"class":628},[618,2329,2330,2332,2334],{"class":620,"line":1884},[618,2331,661],{"class":724},[618,2333,1879],{"class":635},[618,2335,639],{"class":628},[618,2337,2338],{"class":620,"line":1894},[618,2339,2131],{"class":635},[618,2341,2342],{"class":620,"line":1904},[618,2343,1827],{"emptyLinePlaceholder":1826},[618,2345,2346,2349,2351,2354,2356,2359,2361,2364,2366,2368,2371],{"class":620,"line":1914},[618,2347,2348],{"class":635},"app",[618,2350,1493],{"class":628},[618,2352,2353],{"class":724},"use",[618,2355,1841],{"class":635},[618,2357,2358],{"class":724},"evlog",[618,2360,1841],{"class":635},[618,2362,2363],{"class":628},"{",[618,2365,2090],{"class":635},[618,2367,669],{"class":628},[618,2369,2370],{"class":635},")) ",[618,2372,2373],{"class":765},"\u002F\u002F Hono \u002F Express \u002F Elysia\n",[618,2375,2376,2379],{"class":620,"line":1920},[618,2377,2378],{"class":765},"\u002F\u002F await app.register(evlog, { enrichers })",[618,2380,2381],{"class":765}," \u002F\u002F Fastify\n",[618,2383,2384,2387],{"class":620,"line":1925},[618,2385,2386],{"class":765},"\u002F\u002F EvlogModule.forRoot({ enrichers })",[618,2388,2389],{"class":765}," \u002F\u002F NestJS\n",[608,2391,2393],{"className":610,"code":2392,"filename":271,"language":613,"meta":614,"style":614},"\u002F\u002F index.ts\nimport { initLogger } from 'evlog'\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\ninitLogger({\n  enrichers: [\n    createUserAgentEnricher(),\n    createGeoEnricher(),\n    createRequestSizeEnricher(),\n    createTraceContextEnricher(),\n  ],\n})\n",[558,2394,2395,2400,2419,2425,2431,2437,2443,2449,2461,2465,2474,2483,2491,2499,2507,2515,2522],{"__ignoreMap":614},[618,2396,2397],{"class":620,"line":621},[618,2398,2399],{"class":765},"\u002F\u002F index.ts\n",[618,2401,2402,2404,2406,2409,2411,2413,2415,2417],{"class":620,"line":632},[618,2403,625],{"class":624},[618,2405,777],{"class":628},[618,2407,2408],{"class":635}," initLogger",[618,2410,797],{"class":628},[618,2412,672],{"class":624},[618,2414,675],{"class":628},[618,2416,2358],{"class":678},[618,2418,681],{"class":628},[618,2420,2421,2423],{"class":620,"line":642},[618,2422,625],{"class":624},[618,2424,629],{"class":628},[618,2426,2427,2429],{"class":620,"line":650},[618,2428,636],{"class":635},[618,2430,639],{"class":628},[618,2432,2433,2435],{"class":620,"line":658},[618,2434,645],{"class":635},[618,2436,639],{"class":628},[618,2438,2439,2441],{"class":620,"line":666},[618,2440,653],{"class":635},[618,2442,639],{"class":628},[618,2444,2445,2447],{"class":620,"line":1082},[618,2446,661],{"class":635},[618,2448,639],{"class":628},[618,2450,2451,2453,2455,2457,2459],{"class":620,"line":1088},[618,2452,669],{"class":628},[618,2454,672],{"class":624},[618,2456,675],{"class":628},[618,2458,560],{"class":678},[618,2460,681],{"class":628},[618,2462,2463],{"class":620,"line":1737},[618,2464,1827],{"emptyLinePlaceholder":1826},[618,2466,2467,2470,2472],{"class":620,"line":1858},[618,2468,2469],{"class":724},"initLogger",[618,2471,1841],{"class":635},[618,2473,913],{"class":628},[618,2475,2476,2479,2481],{"class":620,"line":1873},[618,2477,2478],{"class":755},"  enrichers",[618,2480,759],{"class":628},[618,2482,1870],{"class":635},[618,2484,2485,2487,2489],{"class":620,"line":1884},[618,2486,1876],{"class":724},[618,2488,1879],{"class":635},[618,2490,639],{"class":628},[618,2492,2493,2495,2497],{"class":620,"line":1894},[618,2494,1887],{"class":724},[618,2496,1879],{"class":635},[618,2498,639],{"class":628},[618,2500,2501,2503,2505],{"class":620,"line":1904},[618,2502,1897],{"class":724},[618,2504,1879],{"class":635},[618,2506,639],{"class":628},[618,2508,2509,2511,2513],{"class":620,"line":1914},[618,2510,1907],{"class":724},[618,2512,1879],{"class":635},[618,2514,639],{"class":628},[618,2516,2517,2520],{"class":620,"line":1920},[618,2518,2519],{"class":635},"  ]",[618,2521,639],{"class":628},[618,2523,2524,2526],{"class":620,"line":1925},[618,2525,669],{"class":628},[618,2527,1992],{"class":635},[683,2529,2531],{"id":2530},"next-steps","Next Steps",[2533,2534,2535,2541],"ul",{},[578,2536,2537,2540],{},[597,2538,2539],{"href":545},"Custom Enrichers"," - Write your own enricher",[578,2542,2543,2545],{},[597,2544,447],{"href":452}," - Send enriched events to external services",[2547,2548,2549],"style",{},"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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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":614,"searchDepth":632,"depth":632,"links":2551},[2552,2553,2554,2555,2556,2557],{"id":685,"depth":632,"text":686},{"id":1105,"depth":632,"text":1106},{"id":1337,"depth":632,"text":1338},{"id":1496,"depth":632,"text":1497},{"id":1761,"depth":632,"text":1762},{"id":2530,"depth":632,"text":2531},"Reference for all built-in evlog enrichers. Parse user agents, extract geo data, measure request sizes, and capture trace context automatically.","md",[2561,2564],{"label":2539,"icon":83,"to":545,"color":2562,"variant":2563},"neutral","subtle",{"label":2565,"icon":28,"to":537,"color":2562,"variant":2563},"Enrichers Overview",{},{"title":540,"icon":288},{"title":549,"description":2558},"oIfcu4acgTrvfEW9kACIk9rtXj3mnjGgufVHWD3rMPA",[2571,2573],{"title":41,"path":537,"stem":538,"description":2572,"icon":28,"children":-1},"Enrich your wide events with derived context like user agent, geo data, request size, and trace context. Built-in enrichers and custom enricher support.",{"title":544,"path":545,"stem":546,"description":2574,"icon":83,"children":-1},"Write custom enrichers to add derived context to your wide events. Add deployment metadata, tenant IDs, feature flags, or any computed data.",1778338252128]