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