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