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