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