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