[{"data":1,"prerenderedAt":2684},["ShallowReactive",2],{"navigation_docs":3,"-use-cases-enrichers":534,"-use-cases-enrichers-surround":2679},[4,30,80,128,308,440,499],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"CLI","\u002Fcli","3.cli",[85,88,93,98,103,108,113,118,123],{"title":36,"path":86,"stem":87,"icon":44},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":89,"path":90,"stem":91,"icon":92},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":94,"path":95,"stem":96,"icon":97},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":99,"path":100,"stem":101,"icon":102},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":104,"path":105,"stem":106,"icon":107},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":109,"path":110,"stem":111,"icon":112},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":114,"path":115,"stem":116,"icon":117},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":119,"path":120,"stem":121,"icon":122},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":124,"path":125,"stem":126,"icon":127},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":129,"path":130,"stem":131,"children":132,"page":29},"Integrate","\u002Fintegrate","4.integrate",[133,137,220],{"title":36,"path":134,"stem":135,"icon":136},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[142,145,175,200],{"title":36,"path":143,"stem":144,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":146,"path":147,"stem":148,"children":149,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[150,155,160,165,170],{"title":151,"path":152,"stem":153,"icon":154},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":156,"path":157,"stem":158,"icon":159},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":161,"path":162,"stem":163,"icon":164},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":166,"path":167,"stem":168,"icon":169},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":171,"path":172,"stem":173,"icon":174},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[180,185,190,195],{"title":181,"path":182,"stem":183,"icon":184},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":186,"path":187,"stem":188,"icon":189},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":191,"path":192,"stem":193,"icon":194},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":196,"path":197,"stem":198,"icon":199},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":201,"path":202,"stem":203,"children":204,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[205,210,215],{"title":206,"path":207,"stem":208,"icon":209},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":211,"path":212,"stem":213,"icon":214},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":216,"path":217,"stem":218,"icon":219},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":221,"path":222,"stem":223,"children":224,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[225,229,234,239,244,249,254,259,264,269,274,279,284,289,293,298,303],{"title":36,"path":226,"stem":227,"icon":228},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":230,"path":231,"stem":232,"icon":233},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":235,"path":236,"stem":237,"icon":238},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":240,"path":241,"stem":242,"icon":243},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":245,"path":246,"stem":247,"icon":248},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":250,"path":251,"stem":252,"icon":253},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":255,"path":256,"stem":257,"icon":258},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":260,"path":261,"stem":262,"icon":263},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":265,"path":266,"stem":267,"icon":268},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":270,"path":271,"stem":272,"icon":273},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":275,"path":276,"stem":277,"icon":278},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":280,"path":281,"stem":282,"icon":283},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":285,"path":286,"stem":287,"icon":288},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":290,"path":291,"stem":292,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":294,"path":295,"stem":296,"icon":297},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":299,"path":300,"stem":301,"icon":302},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":304,"path":305,"stem":306,"icon":307},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":309,"path":310,"stem":311,"children":312,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[313,316,321,350,377,409,430,435],{"title":36,"path":314,"stem":315,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":317,"path":318,"stem":319,"icon":320},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":322,"icon":323,"path":324,"stem":325,"children":326,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[327,330,335,340,345],{"title":36,"path":328,"stem":329,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":331,"path":332,"stem":333,"icon":334},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":336,"path":337,"stem":338,"icon":339},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":341,"path":342,"stem":343,"icon":344},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":346,"path":347,"stem":348,"icon":349},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":351,"icon":352,"path":353,"stem":354,"children":355,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[356,359,364,369,373],{"title":36,"path":357,"stem":358,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":360,"path":361,"stem":362,"icon":363},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":365,"path":366,"stem":367,"icon":368},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":370,"path":371,"stem":372,"icon":320},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":374,"path":375,"stem":376,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[383,386,391,396,401,405],{"title":36,"path":384,"stem":385,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":387,"path":388,"stem":389,"icon":390},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":392,"path":393,"stem":394,"icon":395},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":397,"path":398,"stem":399,"icon":400},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":402,"path":403,"stem":404,"icon":379},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":406,"path":407,"stem":408,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":346,"icon":107,"path":410,"stem":411,"children":412,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[413,416,421,426],{"title":36,"path":414,"stem":415,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":417,"path":418,"stem":419,"icon":420},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":422,"path":423,"stem":424,"icon":425},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":427,"path":428,"stem":429,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":431,"path":432,"stem":433,"icon":434},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":436,"path":437,"stem":438,"icon":439},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":441,"path":442,"stem":443,"children":444,"page":29},"Extend","\u002Fextend","6.extend",[445,449,454,459,463,468,472,476,480,484,489,494],{"title":36,"path":446,"stem":447,"icon":448},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":450,"path":451,"stem":452,"icon":453},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":455,"path":456,"stem":457,"icon":458},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":460,"path":461,"stem":462,"icon":453},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":464,"path":465,"stem":466,"icon":467},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":406,"path":469,"stem":470,"icon":471},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":473,"path":474,"stem":475,"icon":448},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":477,"path":478,"stem":479,"icon":434},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":481,"path":482,"stem":483,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":485,"path":486,"stem":487,"icon":488},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":490,"path":491,"stem":492,"icon":493},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":495,"path":496,"stem":497,"icon":498},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":427,"path":500,"stem":501,"children":502,"page":29},"\u002Freference","7.reference",[503,508,511,516,520,525,529],{"title":504,"path":505,"stem":506,"icon":507},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":374,"path":509,"stem":510,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":512,"path":513,"stem":514,"icon":515},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":517,"path":518,"stem":519,"icon":379},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":521,"path":522,"stem":523,"icon":524},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":526,"path":527,"stem":528,"icon":434},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":530,"path":531,"stem":532,"icon":533},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"id":535,"title":431,"body":536,"description":2669,"extension":2670,"links":2671,"meta":2675,"navigation":2676,"path":432,"seo":2677,"stem":433,"__hash__":2678},"docs\u002F5.use-cases\u002F5.enrichers.md",{"type":537,"value":538,"toc":2660},"minimark",[539,543,560,600,675,680,687,811,822,826,833,843,862,867,1025,1030,1218,1224,1230,1234,1237,1244,1263,1267,1359,1364,1426,1462,1466,1473,1480,1499,1503,1546,1550,1611,1620,1624,1634,1647,1666,1670,1737,1741,1866,1873,1885,1889,1892,2639,2643,2656],[540,541,542],"p",{},"Enrichers add derived context to your wide events after they are emitted, before they reach your drain adapters. Use them to automatically extract useful information from request headers without cluttering your application code.",[540,544,545,546,550,551,554,555,559],{},"All built-in enrichers are exported from ",[547,548,549],"code",{},"evlog\u002Fenrichers",". Each enricher is a factory function that returns an ",[547,552,553],{},"(ctx: EnrichContext) => void"," callback. To write your own, see ",[556,557,558],"a",{"href":478},"Custom Enrichers",".",[561,562,565,568,587],"prompt",{":actions":563,"description":564,"icon":458},"[\"copy\",\"cursor\",\"claude\"]","Add all built-in evlog enrichers",[540,566,567],{},"Add all built-in enrichers to my evlog setup.",[569,570,571,575,578,581,584],"ol",{},[572,573,574],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[572,576,577],{},"Import createUserAgentEnricher, createGeoEnricher, createRequestSizeEnricher, and createTraceContextEnricher from 'evlog\u002Fenrichers'",[572,579,580],{},"Wire the enrichers into my framework's enrich configuration",[572,582,583],{},"Enrichers add userAgent, geo, requestSize, and traceContext fields to wide events",[572,585,586],{},"All enrichers accept { overwrite?: boolean } - defaults to false to preserve user-set data",[540,588,589,590,595,596],{},"Enricher docs: ",[556,591,592],{"href":592,"rel":593},"https:\u002F\u002Fwww.evlog.dev\u002Fuse-cases\u002Fenrichers",[594],"nofollow","\nFramework setup: ",[556,597,598],{"href":598,"rel":599},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[594],[601,602,608],"pre",{"className":603,"code":604,"filename":605,"language":606,"meta":607,"style":607},"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","",[547,609,610,623,633,641,649,657],{"__ignoreMap":607},[611,612,615,619],"span",{"class":613,"line":614},"line",1,[611,616,618],{"class":617},"s7zQu","import",[611,620,622],{"class":621},"sMK4o"," {\n",[611,624,626,630],{"class":613,"line":625},2,[611,627,629],{"class":628},"sTEyZ","  createUserAgentEnricher",[611,631,632],{"class":621},",\n",[611,634,636,639],{"class":613,"line":635},3,[611,637,638],{"class":628},"  createGeoEnricher",[611,640,632],{"class":621},[611,642,644,647],{"class":613,"line":643},4,[611,645,646],{"class":628},"  createRequestSizeEnricher",[611,648,632],{"class":621},[611,650,652,655],{"class":613,"line":651},5,[611,653,654],{"class":628},"  createTraceContextEnricher",[611,656,632],{"class":621},[611,658,660,663,666,669,672],{"class":613,"line":659},6,[611,661,662],{"class":621},"}",[611,664,665],{"class":617}," from",[611,667,668],{"class":621}," '",[611,670,549],{"class":671},"sfazB",[611,673,674],{"class":621},"'\n",[676,677,679],"h2",{"id":678},"all-built-in-enrichers","All built-in enrichers",[540,681,682,683,686],{},"Use ",[547,684,685],{},"createDefaultEnrichers()"," to compose user agent, geo, request size, and trace context in one call:",[601,688,690],{"className":603,"code":689,"filename":605,"language":606,"meta":607,"style":607},"import { createDefaultEnrichers } from 'evlog\u002Fenrichers'\n\nconst enrich = createDefaultEnrichers()\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:enrich', enrich)\n})\n",[547,691,692,713,719,737,741,769,804],{"__ignoreMap":607},[611,693,694,696,699,702,705,707,709,711],{"class":613,"line":614},[611,695,618],{"class":617},[611,697,698],{"class":621}," {",[611,700,701],{"class":628}," createDefaultEnrichers",[611,703,704],{"class":621}," }",[611,706,665],{"class":617},[611,708,668],{"class":621},[611,710,549],{"class":671},[611,712,674],{"class":621},[611,714,715],{"class":613,"line":625},[611,716,718],{"emptyLinePlaceholder":717},true,"\n",[611,720,721,725,728,731,734],{"class":613,"line":635},[611,722,724],{"class":723},"spNyl","const",[611,726,727],{"class":628}," enrich ",[611,729,730],{"class":621},"=",[611,732,701],{"class":733},"s2Zo4",[611,735,736],{"class":628},"()\n",[611,738,739],{"class":613,"line":643},[611,740,718],{"emptyLinePlaceholder":717},[611,742,743,746,749,752,755,757,761,764,767],{"class":613,"line":651},[611,744,745],{"class":617},"export",[611,747,748],{"class":617}," default",[611,750,751],{"class":733}," defineNitroPlugin",[611,753,754],{"class":628},"(",[611,756,754],{"class":621},[611,758,760],{"class":759},"sHdIc","nitroApp",[611,762,763],{"class":621},")",[611,765,766],{"class":723}," =>",[611,768,622],{"class":621},[611,770,771,774,776,779,781,784,787,790,793,795,798,801],{"class":613,"line":659},[611,772,773],{"class":628},"  nitroApp",[611,775,559],{"class":621},[611,777,778],{"class":628},"hooks",[611,780,559],{"class":621},[611,782,783],{"class":733},"hook",[611,785,754],{"class":786},"swJcz",[611,788,789],{"class":621},"'",[611,791,792],{"class":671},"evlog:enrich",[611,794,789],{"class":621},[611,796,797],{"class":621},",",[611,799,800],{"class":628}," enrich",[611,802,803],{"class":786},")\n",[611,805,807,809],{"class":613,"line":806},7,[611,808,662],{"class":621},[611,810,803],{"class":628},[540,812,813,814,817,818,821],{},"Each enricher accepts ",[547,815,816],{},"{ overwrite?: boolean }"," (default ",[547,819,820],{},"false",") so user-set fields are preserved.",[676,823,825],{"id":824},"user-agent","User Agent",[540,827,828,829,832],{},"Parse browser, OS, and device type from the ",[547,830,831],{},"User-Agent"," header.",[540,834,835,839,840],{},[836,837,838],"strong",{},"Sets:"," ",[547,841,842],{},"event.userAgent",[601,844,847],{"className":603,"code":845,"filename":846,"language":606,"meta":607,"style":607},"const enrich = createUserAgentEnricher()\n","user-agent-enricher.ts",[547,848,849],{"__ignoreMap":607},[611,850,851,853,855,857,860],{"class":613,"line":614},[611,852,724],{"class":723},[611,854,727],{"class":628},[611,856,730],{"class":621},[611,858,859],{"class":733}," createUserAgentEnricher",[611,861,736],{"class":628},[540,863,864],{},[836,865,866],{},"Output shape:",[601,868,871],{"className":603,"code":869,"filename":870,"language":606,"meta":607,"style":607},"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",[547,872,873,884,899,931,959,1020],{"__ignoreMap":607},[611,874,875,878,882],{"class":613,"line":614},[611,876,877],{"class":723},"interface",[611,879,881],{"class":880},"sBMFI"," UserAgentInfo",[611,883,622],{"class":621},[611,885,886,889,892,895],{"class":613,"line":625},[611,887,888],{"class":786},"  raw",[611,890,891],{"class":621},":",[611,893,894],{"class":880}," string",[611,896,898],{"class":897},"sHwdD","                                      \u002F\u002F Original User-Agent string\n",[611,900,901,904,907,909,912,914,916,919,922,924,926,928],{"class":613,"line":635},[611,902,903],{"class":786},"  browser",[611,905,906],{"class":621},"?:",[611,908,698],{"class":621},[611,910,911],{"class":786}," name",[611,913,891],{"class":621},[611,915,894],{"class":880},[611,917,918],{"class":621},";",[611,920,921],{"class":786}," version",[611,923,906],{"class":621},[611,925,894],{"class":880},[611,927,704],{"class":621},[611,929,930],{"class":897},"     \u002F\u002F Chrome, Firefox, Safari, Edge\n",[611,932,933,936,938,940,942,944,946,948,950,952,954,956],{"class":613,"line":643},[611,934,935],{"class":786},"  os",[611,937,906],{"class":621},[611,939,698],{"class":621},[611,941,911],{"class":786},[611,943,891],{"class":621},[611,945,894],{"class":880},[611,947,918],{"class":621},[611,949,921],{"class":786},[611,951,906],{"class":621},[611,953,894],{"class":880},[611,955,704],{"class":621},[611,957,958],{"class":897},"          \u002F\u002F Windows, macOS, iOS, Android, Linux\n",[611,960,961,964,966,968,971,973,975,978,980,983,985,988,990,992,994,997,999,1001,1003,1006,1008,1010,1012,1015,1017],{"class":613,"line":651},[611,962,963],{"class":786},"  device",[611,965,906],{"class":621},[611,967,698],{"class":621},[611,969,970],{"class":786}," type",[611,972,891],{"class":621},[611,974,668],{"class":621},[611,976,977],{"class":671},"mobile",[611,979,789],{"class":621},[611,981,982],{"class":621}," |",[611,984,668],{"class":621},[611,986,987],{"class":671},"tablet",[611,989,789],{"class":621},[611,991,982],{"class":621},[611,993,668],{"class":621},[611,995,996],{"class":671},"desktop",[611,998,789],{"class":621},[611,1000,982],{"class":621},[611,1002,668],{"class":621},[611,1004,1005],{"class":671},"bot",[611,1007,789],{"class":621},[611,1009,982],{"class":621},[611,1011,668],{"class":621},[611,1013,1014],{"class":671},"unknown",[611,1016,789],{"class":621},[611,1018,1019],{"class":621}," }\n",[611,1021,1022],{"class":613,"line":659},[611,1023,1024],{"class":621},"}\n",[540,1026,1027],{},[836,1028,1029],{},"Example output:",[601,1031,1036],{"className":1032,"code":1033,"filename":1034,"language":1035,"meta":607,"style":607},"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",[547,1037,1038,1043,1058,1080,1131,1178,1208,1213],{"__ignoreMap":607},[611,1039,1040],{"class":613,"line":614},[611,1041,1042],{"class":621},"{\n",[611,1044,1045,1048,1051,1054,1056],{"class":613,"line":625},[611,1046,1047],{"class":621},"  \"",[611,1049,1050],{"class":723},"userAgent",[611,1052,1053],{"class":621},"\"",[611,1055,891],{"class":621},[611,1057,622],{"class":621},[611,1059,1060,1063,1066,1068,1070,1073,1076,1078],{"class":613,"line":635},[611,1061,1062],{"class":621},"    \"",[611,1064,1065],{"class":880},"raw",[611,1067,1053],{"class":621},[611,1069,891],{"class":621},[611,1071,1072],{"class":621}," \"",[611,1074,1075],{"class":671},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0",[611,1077,1053],{"class":621},[611,1079,632],{"class":621},[611,1081,1082,1084,1087,1089,1091,1093,1095,1099,1101,1103,1105,1108,1110,1112,1114,1117,1119,1121,1123,1126,1128],{"class":613,"line":643},[611,1083,1062],{"class":621},[611,1085,1086],{"class":880},"browser",[611,1088,1053],{"class":621},[611,1090,891],{"class":621},[611,1092,698],{"class":621},[611,1094,1072],{"class":621},[611,1096,1098],{"class":1097},"sbssI","name",[611,1100,1053],{"class":621},[611,1102,891],{"class":621},[611,1104,1072],{"class":621},[611,1106,1107],{"class":671},"Chrome",[611,1109,1053],{"class":621},[611,1111,797],{"class":621},[611,1113,1072],{"class":621},[611,1115,1116],{"class":1097},"version",[611,1118,1053],{"class":621},[611,1120,891],{"class":621},[611,1122,1072],{"class":621},[611,1124,1125],{"class":671},"120.0.0.0",[611,1127,1053],{"class":621},[611,1129,1130],{"class":621}," },\n",[611,1132,1133,1135,1138,1140,1142,1144,1146,1148,1150,1152,1154,1157,1159,1161,1163,1165,1167,1169,1171,1174,1176],{"class":613,"line":651},[611,1134,1062],{"class":621},[611,1136,1137],{"class":880},"os",[611,1139,1053],{"class":621},[611,1141,891],{"class":621},[611,1143,698],{"class":621},[611,1145,1072],{"class":621},[611,1147,1098],{"class":1097},[611,1149,1053],{"class":621},[611,1151,891],{"class":621},[611,1153,1072],{"class":621},[611,1155,1156],{"class":671},"macOS",[611,1158,1053],{"class":621},[611,1160,797],{"class":621},[611,1162,1072],{"class":621},[611,1164,1116],{"class":1097},[611,1166,1053],{"class":621},[611,1168,891],{"class":621},[611,1170,1072],{"class":621},[611,1172,1173],{"class":671},"10.15.7",[611,1175,1053],{"class":621},[611,1177,1130],{"class":621},[611,1179,1180,1182,1185,1187,1189,1191,1193,1196,1198,1200,1202,1204,1206],{"class":613,"line":659},[611,1181,1062],{"class":621},[611,1183,1184],{"class":880},"device",[611,1186,1053],{"class":621},[611,1188,891],{"class":621},[611,1190,698],{"class":621},[611,1192,1072],{"class":621},[611,1194,1195],{"class":1097},"type",[611,1197,1053],{"class":621},[611,1199,891],{"class":621},[611,1201,1072],{"class":621},[611,1203,996],{"class":671},[611,1205,1053],{"class":621},[611,1207,1019],{"class":621},[611,1209,1210],{"class":613,"line":806},[611,1211,1212],{"class":621},"  }\n",[611,1214,1216],{"class":613,"line":1215},8,[611,1217,1024],{"class":621},[540,1219,1220,1223],{},[836,1221,1222],{},"Detected browsers:"," Edge, Chrome, Firefox, Safari (checked in order, Edge before Chrome to avoid false matches).",[540,1225,1226,1229],{},[836,1227,1228],{},"Detected devices:"," Bot (crawlers, spiders), Tablet (iPad), Mobile (iPhone, Android phones), Desktop (fallback).",[676,1231,1233],{"id":1232},"geo","Geo",[540,1235,1236],{},"Extract geographic data from platform-injected headers.",[540,1238,1239,839,1241],{},[836,1240,838],{},[547,1242,1243],{},"event.geo",[601,1245,1248],{"className":603,"code":1246,"filename":1247,"language":606,"meta":607,"style":607},"const enrich = createGeoEnricher()\n","geo-enricher.ts",[547,1249,1250],{"__ignoreMap":607},[611,1251,1252,1254,1256,1258,1261],{"class":613,"line":614},[611,1253,724],{"class":723},[611,1255,727],{"class":628},[611,1257,730],{"class":621},[611,1259,1260],{"class":733}," createGeoEnricher",[611,1262,736],{"class":628},[540,1264,1265],{},[836,1266,866],{},[601,1268,1271],{"className":603,"code":1269,"filename":1270,"language":606,"meta":607,"style":607},"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",[547,1272,1273,1282,1294,1306,1318,1330,1343,1355],{"__ignoreMap":607},[611,1274,1275,1277,1280],{"class":613,"line":614},[611,1276,877],{"class":723},[611,1278,1279],{"class":880}," GeoInfo",[611,1281,622],{"class":621},[611,1283,1284,1287,1289,1291],{"class":613,"line":625},[611,1285,1286],{"class":786},"  country",[611,1288,906],{"class":621},[611,1290,894],{"class":880},[611,1292,1293],{"class":897},"      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n",[611,1295,1296,1299,1301,1303],{"class":613,"line":635},[611,1297,1298],{"class":786},"  region",[611,1300,906],{"class":621},[611,1302,894],{"class":880},[611,1304,1305],{"class":897},"       \u002F\u002F Region\u002Fstate name\n",[611,1307,1308,1311,1313,1315],{"class":613,"line":643},[611,1309,1310],{"class":786},"  regionCode",[611,1312,906],{"class":621},[611,1314,894],{"class":880},[611,1316,1317],{"class":897},"   \u002F\u002F Region code\n",[611,1319,1320,1323,1325,1327],{"class":613,"line":651},[611,1321,1322],{"class":786},"  city",[611,1324,906],{"class":621},[611,1326,894],{"class":880},[611,1328,1329],{"class":897},"         \u002F\u002F City name\n",[611,1331,1332,1335,1337,1340],{"class":613,"line":659},[611,1333,1334],{"class":786},"  latitude",[611,1336,906],{"class":621},[611,1338,1339],{"class":880}," number",[611,1341,1342],{"class":897},"     \u002F\u002F Decimal latitude\n",[611,1344,1345,1348,1350,1352],{"class":613,"line":806},[611,1346,1347],{"class":786},"  longitude",[611,1349,906],{"class":621},[611,1351,1339],{"class":880},[611,1353,1354],{"class":897},"    \u002F\u002F Decimal longitude\n",[611,1356,1357],{"class":613,"line":1215},[611,1358,1024],{"class":621},[540,1360,1361],{},[836,1362,1363],{},"Supported platforms:",[1365,1366,1367,1383],"table",{},[1368,1369,1370],"thead",{},[1371,1372,1373,1377,1380],"tr",{},[1374,1375,1376],"th",{},"Platform",[1374,1378,1379],{},"Headers",[1374,1381,1382],{},"Coverage",[1384,1385,1386,1413],"tbody",{},[1371,1387,1388,1392,1410],{},[1389,1390,1391],"td",{},"Vercel",[1389,1393,1394,1397,1398,1397,1401,1397,1404,1397,1407],{},[547,1395,1396],{},"x-vercel-ip-country",", ",[547,1399,1400],{},"x-vercel-ip-country-region",[547,1402,1403],{},"x-vercel-ip-city",[547,1405,1406],{},"x-vercel-ip-latitude",[547,1408,1409],{},"x-vercel-ip-longitude",[1389,1411,1412],{},"Full",[1371,1414,1415,1418,1423],{},[1389,1416,1417],{},"Cloudflare",[1389,1419,1420],{},[547,1421,1422],{},"cf-ipcountry",[1389,1424,1425],{},"Country only",[1427,1428,1430,1433,1434,1436,1437,1397,1440,1397,1443,1446,1447,1450,1451,1454,1455,1457,1458,1461],"callout",{"color":1429,"icon":13},"info",[836,1431,1432],{},"Cloudflare note:"," Only ",[547,1435,1422],{}," is a standard Cloudflare HTTP header. Other geo fields (",[547,1438,1439],{},"city",[547,1441,1442],{},"region",[547,1444,1445],{},"latitude",", etc.) are properties of ",[547,1448,1449],{},"request.cf",", which is not exposed as headers. For full Cloudflare geo data, write a ",[556,1452,1453],{"href":478},"custom enricher"," that reads ",[547,1456,1449],{},", or use a Workers middleware to copy ",[547,1459,1460],{},"cf"," properties into custom headers.",[676,1463,1465],{"id":1464},"request-size","Request Size",[540,1467,1468,1469,1472],{},"Capture request and response payload sizes from ",[547,1470,1471],{},"Content-Length"," headers.",[540,1474,1475,839,1477],{},[836,1476,838],{},[547,1478,1479],{},"event.requestSize",[601,1481,1484],{"className":603,"code":1482,"filename":1483,"language":606,"meta":607,"style":607},"const enrich = createRequestSizeEnricher()\n","request-size-enricher.ts",[547,1485,1486],{"__ignoreMap":607},[611,1487,1488,1490,1492,1494,1497],{"class":613,"line":614},[611,1489,724],{"class":723},[611,1491,727],{"class":628},[611,1493,730],{"class":621},[611,1495,1496],{"class":733}," createRequestSizeEnricher",[611,1498,736],{"class":628},[540,1500,1501],{},[836,1502,866],{},[601,1504,1507],{"className":603,"code":1505,"filename":1506,"language":606,"meta":607,"style":607},"interface RequestSizeInfo {\n  requestBytes?: number    \u002F\u002F Request Content-Length\n  responseBytes?: number   \u002F\u002F Response Content-Length\n}\n","request-size-types.ts",[547,1508,1509,1518,1530,1542],{"__ignoreMap":607},[611,1510,1511,1513,1516],{"class":613,"line":614},[611,1512,877],{"class":723},[611,1514,1515],{"class":880}," RequestSizeInfo",[611,1517,622],{"class":621},[611,1519,1520,1523,1525,1527],{"class":613,"line":625},[611,1521,1522],{"class":786},"  requestBytes",[611,1524,906],{"class":621},[611,1526,1339],{"class":880},[611,1528,1529],{"class":897},"    \u002F\u002F Request Content-Length\n",[611,1531,1532,1535,1537,1539],{"class":613,"line":635},[611,1533,1534],{"class":786},"  responseBytes",[611,1536,906],{"class":621},[611,1538,1339],{"class":880},[611,1540,1541],{"class":897},"   \u002F\u002F Response Content-Length\n",[611,1543,1544],{"class":613,"line":643},[611,1545,1024],{"class":621},[540,1547,1548],{},[836,1549,1029],{},[601,1551,1554],{"className":1032,"code":1552,"filename":1553,"language":1035,"meta":607,"style":607},"{\n  \"requestSize\": {\n    \"requestBytes\": 1234,\n    \"responseBytes\": 5678\n  }\n}\n","Example wide event: requestSize",[547,1555,1556,1560,1573,1589,1603,1607],{"__ignoreMap":607},[611,1557,1558],{"class":613,"line":614},[611,1559,1042],{"class":621},[611,1561,1562,1564,1567,1569,1571],{"class":613,"line":625},[611,1563,1047],{"class":621},[611,1565,1566],{"class":723},"requestSize",[611,1568,1053],{"class":621},[611,1570,891],{"class":621},[611,1572,622],{"class":621},[611,1574,1575,1577,1580,1582,1584,1587],{"class":613,"line":635},[611,1576,1062],{"class":621},[611,1578,1579],{"class":880},"requestBytes",[611,1581,1053],{"class":621},[611,1583,891],{"class":621},[611,1585,1586],{"class":1097}," 1234",[611,1588,632],{"class":621},[611,1590,1591,1593,1596,1598,1600],{"class":613,"line":643},[611,1592,1062],{"class":621},[611,1594,1595],{"class":880},"responseBytes",[611,1597,1053],{"class":621},[611,1599,891],{"class":621},[611,1601,1602],{"class":1097}," 5678\n",[611,1604,1605],{"class":613,"line":651},[611,1606,1212],{"class":621},[611,1608,1609],{"class":613,"line":659},[611,1610,1024],{"class":621},[1427,1612,1613,1614,1616,1617,559],{"color":1429,"icon":13},"This enricher reads the ",[547,1615,1471],{}," header from both the request and response. If the header is missing (e.g., for chunked transfer encoding), the corresponding field will be ",[547,1618,1619],{},"undefined",[676,1621,1623],{"id":1622},"trace-context","Trace Context",[540,1625,1626,1627,1630,1631,1472],{},"Extract W3C trace context from the ",[547,1628,1629],{},"traceparent"," and ",[547,1632,1633],{},"tracestate",[540,1635,1636,839,1638,1397,1641,1397,1644],{},[836,1637,838],{},[547,1639,1640],{},"event.traceContext",[547,1642,1643],{},"event.traceId",[547,1645,1646],{},"event.spanId",[601,1648,1651],{"className":603,"code":1649,"filename":1650,"language":606,"meta":607,"style":607},"const enrich = createTraceContextEnricher()\n","trace-context-enricher.ts",[547,1652,1653],{"__ignoreMap":607},[611,1654,1655,1657,1659,1661,1664],{"class":613,"line":614},[611,1656,724],{"class":723},[611,1658,727],{"class":628},[611,1660,730],{"class":621},[611,1662,1663],{"class":733}," createTraceContextEnricher",[611,1665,736],{"class":628},[540,1667,1668],{},[836,1669,866],{},[601,1671,1674],{"className":603,"code":1672,"filename":1673,"language":606,"meta":607,"style":607},"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",[547,1675,1676,1685,1697,1709,1721,1733],{"__ignoreMap":607},[611,1677,1678,1680,1683],{"class":613,"line":614},[611,1679,877],{"class":723},[611,1681,1682],{"class":880}," TraceContextInfo",[611,1684,622],{"class":621},[611,1686,1687,1690,1692,1694],{"class":613,"line":625},[611,1688,1689],{"class":786},"  traceparent",[611,1691,906],{"class":621},[611,1693,894],{"class":880},[611,1695,1696],{"class":897},"   \u002F\u002F Full traceparent header value\n",[611,1698,1699,1702,1704,1706],{"class":613,"line":635},[611,1700,1701],{"class":786},"  tracestate",[611,1703,906],{"class":621},[611,1705,894],{"class":880},[611,1707,1708],{"class":897},"    \u002F\u002F Full tracestate header value\n",[611,1710,1711,1714,1716,1718],{"class":613,"line":643},[611,1712,1713],{"class":786},"  traceId",[611,1715,906],{"class":621},[611,1717,894],{"class":880},[611,1719,1720],{"class":897},"       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n",[611,1722,1723,1726,1728,1730],{"class":613,"line":651},[611,1724,1725],{"class":786},"  spanId",[611,1727,906],{"class":621},[611,1729,894],{"class":880},[611,1731,1732],{"class":897},"        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n",[611,1734,1735],{"class":613,"line":659},[611,1736,1024],{"class":621},[540,1738,1739],{},[836,1740,1029],{},[601,1742,1745],{"className":1032,"code":1743,"filename":1744,"language":1035,"meta":607,"style":607},"{\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",[547,1746,1747,1751,1764,1783,1803,1822,1827,1845,1861],{"__ignoreMap":607},[611,1748,1749],{"class":613,"line":614},[611,1750,1042],{"class":621},[611,1752,1753,1755,1758,1760,1762],{"class":613,"line":625},[611,1754,1047],{"class":621},[611,1756,1757],{"class":723},"traceContext",[611,1759,1053],{"class":621},[611,1761,891],{"class":621},[611,1763,622],{"class":621},[611,1765,1766,1768,1770,1772,1774,1776,1779,1781],{"class":613,"line":635},[611,1767,1062],{"class":621},[611,1769,1629],{"class":880},[611,1771,1053],{"class":621},[611,1773,891],{"class":621},[611,1775,1072],{"class":621},[611,1777,1778],{"class":671},"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",[611,1780,1053],{"class":621},[611,1782,632],{"class":621},[611,1784,1785,1787,1790,1792,1794,1796,1799,1801],{"class":613,"line":643},[611,1786,1062],{"class":621},[611,1788,1789],{"class":880},"traceId",[611,1791,1053],{"class":621},[611,1793,891],{"class":621},[611,1795,1072],{"class":621},[611,1797,1798],{"class":671},"4bf92f3577b34da6a3ce929d0e0e4736",[611,1800,1053],{"class":621},[611,1802,632],{"class":621},[611,1804,1805,1807,1810,1812,1814,1816,1819],{"class":613,"line":651},[611,1806,1062],{"class":621},[611,1808,1809],{"class":880},"spanId",[611,1811,1053],{"class":621},[611,1813,891],{"class":621},[611,1815,1072],{"class":621},[611,1817,1818],{"class":671},"00f067aa0ba902b7",[611,1820,1821],{"class":621},"\"\n",[611,1823,1824],{"class":613,"line":659},[611,1825,1826],{"class":621},"  },\n",[611,1828,1829,1831,1833,1835,1837,1839,1841,1843],{"class":613,"line":806},[611,1830,1047],{"class":621},[611,1832,1789],{"class":723},[611,1834,1053],{"class":621},[611,1836,891],{"class":621},[611,1838,1072],{"class":621},[611,1840,1798],{"class":671},[611,1842,1053],{"class":621},[611,1844,632],{"class":621},[611,1846,1847,1849,1851,1853,1855,1857,1859],{"class":613,"line":1215},[611,1848,1047],{"class":621},[611,1850,1809],{"class":723},[611,1852,1053],{"class":621},[611,1854,891],{"class":621},[611,1856,1072],{"class":621},[611,1858,1818],{"class":671},[611,1860,1821],{"class":621},[611,1862,1864],{"class":613,"line":1863},9,[611,1865,1024],{"class":621},[540,1867,1868,1630,1870,1872],{},[547,1869,1789],{},[547,1871,1809],{}," are also set at the top level of the event for easy querying and correlation.",[1427,1874,1875,1876,1881,1882,559],{"color":1429,"icon":13},"The traceparent format follows the ",[556,1877,1880],{"href":1878,"rel":1879},"https:\u002F\u002Fwww.w3.org\u002FTR\u002Ftrace-context\u002F",[594],"W3C Trace Context"," specification: ",[547,1883,1884],{},"{version}-{traceId}-{spanId}-{flags}",[676,1886,1888],{"id":1887},"full-setup-example","Full Setup Example",[540,1890,1891],{},"Use all built-in enrichers together. The list of enrichers is identical across frameworks — only the wiring changes.",[1893,1894,1895,2119,2353,2501],"code-group",{},[601,1896,1899],{"className":603,"code":1897,"filename":1898,"language":606,"meta":607,"style":607},"\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",[547,1900,1901,1906,1912,1918,1924,1930,1936,1948,1952,1972,1987,1998,2008,2018,2028,2034,2039,2074,2104,2112],{"__ignoreMap":607},[611,1902,1903],{"class":613,"line":614},[611,1904,1905],{"class":897},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\n",[611,1907,1908,1910],{"class":613,"line":625},[611,1909,618],{"class":617},[611,1911,622],{"class":621},[611,1913,1914,1916],{"class":613,"line":635},[611,1915,629],{"class":628},[611,1917,632],{"class":621},[611,1919,1920,1922],{"class":613,"line":643},[611,1921,638],{"class":628},[611,1923,632],{"class":621},[611,1925,1926,1928],{"class":613,"line":651},[611,1927,646],{"class":628},[611,1929,632],{"class":621},[611,1931,1932,1934],{"class":613,"line":659},[611,1933,654],{"class":628},[611,1935,632],{"class":621},[611,1937,1938,1940,1942,1944,1946],{"class":613,"line":806},[611,1939,662],{"class":621},[611,1941,665],{"class":617},[611,1943,668],{"class":621},[611,1945,549],{"class":671},[611,1947,674],{"class":621},[611,1949,1950],{"class":613,"line":1215},[611,1951,718],{"emptyLinePlaceholder":717},[611,1953,1954,1956,1958,1960,1962,1964,1966,1968,1970],{"class":613,"line":1863},[611,1955,745],{"class":617},[611,1957,748],{"class":617},[611,1959,751],{"class":733},[611,1961,754],{"class":628},[611,1963,754],{"class":621},[611,1965,760],{"class":759},[611,1967,763],{"class":621},[611,1969,766],{"class":723},[611,1971,622],{"class":621},[611,1973,1975,1978,1981,1984],{"class":613,"line":1974},10,[611,1976,1977],{"class":723},"  const",[611,1979,1980],{"class":628}," enrichers",[611,1982,1983],{"class":621}," =",[611,1985,1986],{"class":786}," [\n",[611,1988,1990,1993,1996],{"class":613,"line":1989},11,[611,1991,1992],{"class":733},"    createUserAgentEnricher",[611,1994,1995],{"class":786},"()",[611,1997,632],{"class":621},[611,1999,2001,2004,2006],{"class":613,"line":2000},12,[611,2002,2003],{"class":733},"    createGeoEnricher",[611,2005,1995],{"class":786},[611,2007,632],{"class":621},[611,2009,2011,2014,2016],{"class":613,"line":2010},13,[611,2012,2013],{"class":733},"    createRequestSizeEnricher",[611,2015,1995],{"class":786},[611,2017,632],{"class":621},[611,2019,2021,2024,2026],{"class":613,"line":2020},14,[611,2022,2023],{"class":733},"    createTraceContextEnricher",[611,2025,1995],{"class":786},[611,2027,632],{"class":621},[611,2029,2031],{"class":613,"line":2030},15,[611,2032,2033],{"class":786},"  ]\n",[611,2035,2037],{"class":613,"line":2036},16,[611,2038,718],{"emptyLinePlaceholder":717},[611,2040,2042,2044,2046,2048,2050,2052,2054,2056,2058,2060,2062,2065,2068,2070,2072],{"class":613,"line":2041},17,[611,2043,773],{"class":628},[611,2045,559],{"class":621},[611,2047,778],{"class":628},[611,2049,559],{"class":621},[611,2051,783],{"class":733},[611,2053,754],{"class":786},[611,2055,789],{"class":621},[611,2057,792],{"class":671},[611,2059,789],{"class":621},[611,2061,797],{"class":621},[611,2063,2064],{"class":621}," (",[611,2066,2067],{"class":759},"ctx",[611,2069,763],{"class":621},[611,2071,766],{"class":723},[611,2073,622],{"class":621},[611,2075,2077,2080,2082,2084,2087,2090,2092,2095,2098,2100,2102],{"class":613,"line":2076},18,[611,2078,2079],{"class":617},"    for",[611,2081,2064],{"class":786},[611,2083,724],{"class":723},[611,2085,2086],{"class":628}," enricher",[611,2088,2089],{"class":621}," of",[611,2091,1980],{"class":628},[611,2093,2094],{"class":786},") ",[611,2096,2097],{"class":733},"enricher",[611,2099,754],{"class":786},[611,2101,2067],{"class":628},[611,2103,803],{"class":786},[611,2105,2107,2110],{"class":613,"line":2106},19,[611,2108,2109],{"class":621},"  }",[611,2111,803],{"class":786},[611,2113,2115,2117],{"class":613,"line":2114},20,[611,2116,662],{"class":621},[611,2118,803],{"class":628},[601,2120,2122],{"className":603,"code":2121,"filename":235,"language":606,"meta":607,"style":607},"\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",[547,2123,2124,2129,2149,2155,2161,2167,2173,2179,2191,2195,2206,2214,2222,2230,2238,2243,2247,2284,2300,2317,2341,2346],{"__ignoreMap":607},[611,2125,2126],{"class":613,"line":614},[611,2127,2128],{"class":897},"\u002F\u002F lib\u002Fevlog.ts\n",[611,2130,2131,2133,2135,2138,2140,2142,2144,2147],{"class":613,"line":625},[611,2132,618],{"class":617},[611,2134,698],{"class":621},[611,2136,2137],{"class":628}," createEvlog",[611,2139,704],{"class":621},[611,2141,665],{"class":617},[611,2143,668],{"class":621},[611,2145,2146],{"class":671},"evlog\u002Fnext",[611,2148,674],{"class":621},[611,2150,2151,2153],{"class":613,"line":635},[611,2152,618],{"class":617},[611,2154,622],{"class":621},[611,2156,2157,2159],{"class":613,"line":643},[611,2158,629],{"class":628},[611,2160,632],{"class":621},[611,2162,2163,2165],{"class":613,"line":651},[611,2164,638],{"class":628},[611,2166,632],{"class":621},[611,2168,2169,2171],{"class":613,"line":659},[611,2170,646],{"class":628},[611,2172,632],{"class":621},[611,2174,2175,2177],{"class":613,"line":806},[611,2176,654],{"class":628},[611,2178,632],{"class":621},[611,2180,2181,2183,2185,2187,2189],{"class":613,"line":1215},[611,2182,662],{"class":621},[611,2184,665],{"class":617},[611,2186,668],{"class":621},[611,2188,549],{"class":671},[611,2190,674],{"class":621},[611,2192,2193],{"class":613,"line":1863},[611,2194,718],{"emptyLinePlaceholder":717},[611,2196,2197,2199,2202,2204],{"class":613,"line":1974},[611,2198,724],{"class":723},[611,2200,2201],{"class":628}," enrichers ",[611,2203,730],{"class":621},[611,2205,1986],{"class":628},[611,2207,2208,2210,2212],{"class":613,"line":1989},[611,2209,629],{"class":733},[611,2211,1995],{"class":628},[611,2213,632],{"class":621},[611,2215,2216,2218,2220],{"class":613,"line":2000},[611,2217,638],{"class":733},[611,2219,1995],{"class":628},[611,2221,632],{"class":621},[611,2223,2224,2226,2228],{"class":613,"line":2010},[611,2225,646],{"class":733},[611,2227,1995],{"class":628},[611,2229,632],{"class":621},[611,2231,2232,2234,2236],{"class":613,"line":2020},[611,2233,654],{"class":733},[611,2235,1995],{"class":628},[611,2237,632],{"class":621},[611,2239,2240],{"class":613,"line":2030},[611,2241,2242],{"class":628},"]\n",[611,2244,2245],{"class":613,"line":2036},[611,2246,718],{"emptyLinePlaceholder":717},[611,2248,2249,2251,2254,2256,2259,2261,2264,2266,2269,2271,2274,2276,2278,2280,2282],{"class":613,"line":2041},[611,2250,745],{"class":617},[611,2252,2253],{"class":723}," const",[611,2255,698],{"class":621},[611,2257,2258],{"class":628}," withEvlog",[611,2260,797],{"class":621},[611,2262,2263],{"class":628}," useLogger",[611,2265,797],{"class":621},[611,2267,2268],{"class":628}," log",[611,2270,797],{"class":621},[611,2272,2273],{"class":628}," createError ",[611,2275,662],{"class":621},[611,2277,1983],{"class":621},[611,2279,2137],{"class":733},[611,2281,754],{"class":628},[611,2283,1042],{"class":621},[611,2285,2286,2289,2291,2293,2296,2298],{"class":613,"line":2076},[611,2287,2288],{"class":786},"  service",[611,2290,891],{"class":621},[611,2292,668],{"class":621},[611,2294,2295],{"class":671},"my-app",[611,2297,789],{"class":621},[611,2299,632],{"class":621},[611,2301,2302,2305,2307,2309,2311,2313,2315],{"class":613,"line":2106},[611,2303,2304],{"class":733},"  enrich",[611,2306,891],{"class":621},[611,2308,2064],{"class":621},[611,2310,2067],{"class":759},[611,2312,763],{"class":621},[611,2314,766],{"class":723},[611,2316,622],{"class":621},[611,2318,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339],{"class":613,"line":2114},[611,2320,2079],{"class":617},[611,2322,2064],{"class":786},[611,2324,724],{"class":723},[611,2326,2086],{"class":628},[611,2328,2089],{"class":621},[611,2330,1980],{"class":628},[611,2332,2094],{"class":786},[611,2334,2097],{"class":733},[611,2336,754],{"class":786},[611,2338,2067],{"class":628},[611,2340,803],{"class":786},[611,2342,2344],{"class":613,"line":2343},21,[611,2345,1826],{"class":621},[611,2347,2349,2351],{"class":613,"line":2348},22,[611,2350,662],{"class":621},[611,2352,803],{"class":628},[601,2354,2357],{"className":603,"code":2355,"filename":2356,"language":606,"meta":607,"style":607},"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",[547,2358,2359,2365,2371,2377,2383,2389,2401,2405,2415,2423,2431,2439,2447,2451,2455,2485,2493],{"__ignoreMap":607},[611,2360,2361,2363],{"class":613,"line":614},[611,2362,618],{"class":617},[611,2364,622],{"class":621},[611,2366,2367,2369],{"class":613,"line":625},[611,2368,629],{"class":628},[611,2370,632],{"class":621},[611,2372,2373,2375],{"class":613,"line":635},[611,2374,638],{"class":628},[611,2376,632],{"class":621},[611,2378,2379,2381],{"class":613,"line":643},[611,2380,646],{"class":628},[611,2382,632],{"class":621},[611,2384,2385,2387],{"class":613,"line":651},[611,2386,654],{"class":628},[611,2388,632],{"class":621},[611,2390,2391,2393,2395,2397,2399],{"class":613,"line":659},[611,2392,662],{"class":621},[611,2394,665],{"class":617},[611,2396,668],{"class":621},[611,2398,549],{"class":671},[611,2400,674],{"class":621},[611,2402,2403],{"class":613,"line":806},[611,2404,718],{"emptyLinePlaceholder":717},[611,2406,2407,2409,2411,2413],{"class":613,"line":1215},[611,2408,724],{"class":723},[611,2410,2201],{"class":628},[611,2412,730],{"class":621},[611,2414,1986],{"class":628},[611,2416,2417,2419,2421],{"class":613,"line":1863},[611,2418,629],{"class":733},[611,2420,1995],{"class":628},[611,2422,632],{"class":621},[611,2424,2425,2427,2429],{"class":613,"line":1974},[611,2426,638],{"class":733},[611,2428,1995],{"class":628},[611,2430,632],{"class":621},[611,2432,2433,2435,2437],{"class":613,"line":1989},[611,2434,646],{"class":733},[611,2436,1995],{"class":628},[611,2438,632],{"class":621},[611,2440,2441,2443,2445],{"class":613,"line":2000},[611,2442,654],{"class":733},[611,2444,1995],{"class":628},[611,2446,632],{"class":621},[611,2448,2449],{"class":613,"line":2010},[611,2450,2242],{"class":628},[611,2452,2453],{"class":613,"line":2020},[611,2454,718],{"emptyLinePlaceholder":717},[611,2456,2457,2460,2462,2465,2467,2470,2472,2475,2477,2479,2482],{"class":613,"line":2030},[611,2458,2459],{"class":628},"app",[611,2461,559],{"class":621},[611,2463,2464],{"class":733},"use",[611,2466,754],{"class":628},[611,2468,2469],{"class":733},"evlog",[611,2471,754],{"class":628},[611,2473,2474],{"class":621},"{",[611,2476,2201],{"class":628},[611,2478,662],{"class":621},[611,2480,2481],{"class":628},")) ",[611,2483,2484],{"class":897},"\u002F\u002F Hono \u002F Express \u002F Elysia\n",[611,2486,2487,2490],{"class":613,"line":2036},[611,2488,2489],{"class":897},"\u002F\u002F await app.register(evlog, { enrichers })",[611,2491,2492],{"class":897}," \u002F\u002F Fastify\n",[611,2494,2495,2498],{"class":613,"line":2041},[611,2496,2497],{"class":897},"\u002F\u002F EvlogModule.forRoot({ enrichers })",[611,2499,2500],{"class":897}," \u002F\u002F NestJS\n",[601,2502,2504],{"className":603,"code":2503,"filename":290,"language":606,"meta":607,"style":607},"\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",[547,2505,2506,2511,2530,2536,2542,2548,2554,2560,2572,2576,2585,2594,2602,2610,2618,2626,2633],{"__ignoreMap":607},[611,2507,2508],{"class":613,"line":614},[611,2509,2510],{"class":897},"\u002F\u002F index.ts\n",[611,2512,2513,2515,2517,2520,2522,2524,2526,2528],{"class":613,"line":625},[611,2514,618],{"class":617},[611,2516,698],{"class":621},[611,2518,2519],{"class":628}," initLogger",[611,2521,704],{"class":621},[611,2523,665],{"class":617},[611,2525,668],{"class":621},[611,2527,2469],{"class":671},[611,2529,674],{"class":621},[611,2531,2532,2534],{"class":613,"line":635},[611,2533,618],{"class":617},[611,2535,622],{"class":621},[611,2537,2538,2540],{"class":613,"line":643},[611,2539,629],{"class":628},[611,2541,632],{"class":621},[611,2543,2544,2546],{"class":613,"line":651},[611,2545,638],{"class":628},[611,2547,632],{"class":621},[611,2549,2550,2552],{"class":613,"line":659},[611,2551,646],{"class":628},[611,2553,632],{"class":621},[611,2555,2556,2558],{"class":613,"line":806},[611,2557,654],{"class":628},[611,2559,632],{"class":621},[611,2561,2562,2564,2566,2568,2570],{"class":613,"line":1215},[611,2563,662],{"class":621},[611,2565,665],{"class":617},[611,2567,668],{"class":621},[611,2569,549],{"class":671},[611,2571,674],{"class":621},[611,2573,2574],{"class":613,"line":1863},[611,2575,718],{"emptyLinePlaceholder":717},[611,2577,2578,2581,2583],{"class":613,"line":1974},[611,2579,2580],{"class":733},"initLogger",[611,2582,754],{"class":628},[611,2584,1042],{"class":621},[611,2586,2587,2590,2592],{"class":613,"line":1989},[611,2588,2589],{"class":786},"  enrichers",[611,2591,891],{"class":621},[611,2593,1986],{"class":628},[611,2595,2596,2598,2600],{"class":613,"line":2000},[611,2597,1992],{"class":733},[611,2599,1995],{"class":628},[611,2601,632],{"class":621},[611,2603,2604,2606,2608],{"class":613,"line":2010},[611,2605,2003],{"class":733},[611,2607,1995],{"class":628},[611,2609,632],{"class":621},[611,2611,2612,2614,2616],{"class":613,"line":2020},[611,2613,2013],{"class":733},[611,2615,1995],{"class":628},[611,2617,632],{"class":621},[611,2619,2620,2622,2624],{"class":613,"line":2030},[611,2621,2023],{"class":733},[611,2623,1995],{"class":628},[611,2625,632],{"class":621},[611,2627,2628,2631],{"class":613,"line":2036},[611,2629,2630],{"class":628},"  ]",[611,2632,632],{"class":621},[611,2634,2635,2637],{"class":613,"line":2041},[611,2636,662],{"class":621},[611,2638,803],{"class":628},[676,2640,2642],{"id":2641},"next-steps","Next Steps",[2644,2645,2646,2651],"ul",{},[572,2647,2648,2650],{},[556,2649,558],{"href":478}," - Write your own enricher",[572,2652,2653,2655],{},[556,2654,138],{"href":143}," - Send enriched events to external services",[2657,2658,2659],"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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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}",{"title":607,"searchDepth":625,"depth":625,"links":2661},[2662,2663,2664,2665,2666,2667,2668],{"id":678,"depth":625,"text":679},{"id":824,"depth":625,"text":825},{"id":1232,"depth":625,"text":1233},{"id":1464,"depth":625,"text":1465},{"id":1622,"depth":625,"text":1623},{"id":1887,"depth":625,"text":1888},{"id":2641,"depth":625,"text":2642},"Add derived context to every wide event automatically — user agent, geo, request size, and trace context. Built-in enrichers from evlog\u002Fenrichers, plus how to compose them with your own.","md",[2672],{"label":558,"icon":334,"to":478,"color":2673,"variant":2674},"neutral","subtle",{},{"title":431,"icon":434},{"title":431,"description":2669},"AGGc0NeRlAw_tCIf58oiQocSRoW8YsL9Ba6BxysRiE4",[2680,2682],{"title":427,"path":428,"stem":429,"description":2681,"icon":79,"children":-1},"RunEvent envelope, extending the schema with collect and custom fields, privacy rules, TELEMETRY.md disclosure, and consent \u002F outbox reliability.",{"title":436,"path":437,"stem":438,"description":2683,"icon":439,"children":-1},"Export one evlog wide event per eve agent turn — token usage, tool executions, business context, drains, enrichers, and tail sampling alongside Agent Runs and OpenTelemetry.",1786743654602]