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