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