[{"data":1,"prerenderedAt":1668},["ShallowReactive",2],{"navigation_docs":3,"-enrichers-built-in":219,"-enrichers-built-in-surround":1663},[4,30,105,139,188,205],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/getting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","/getting-started/agent-skills","1.getting-started/4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","/frameworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100],{"title":36,"path":37,"stem":38,"icon":39},"Overview","/frameworks/overview","2.frameworks/00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","/frameworks/nuxt","2.frameworks/01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","/frameworks/nextjs","2.frameworks/02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","/frameworks/sveltekit","2.frameworks/03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","/frameworks/nitro","2.frameworks/04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","/frameworks/tanstack-start","2.frameworks/05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","/frameworks/nestjs","2.frameworks/06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","/frameworks/express","2.frameworks/07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","/frameworks/hono","2.frameworks/08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","/frameworks/fastify","2.frameworks/09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","/frameworks/elysia","2.frameworks/10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","/frameworks/cloudflare-workers","2.frameworks/11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","/frameworks/standalone","2.frameworks/12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","/frameworks/astro","2.frameworks/13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Core Concepts","/core-concepts","3.core-concepts",[110,115,120,125,129,134],{"title":111,"path":112,"stem":113,"icon":114},"Wide Events","/core-concepts/wide-events","3.core-concepts/1.wide-events","i-lucide-layers",{"title":116,"path":117,"stem":118,"icon":119},"Structured Errors","/core-concepts/structured-errors","3.core-concepts/2.structured-errors","i-lucide-shield-alert",{"title":121,"path":122,"stem":123,"icon":124},"Best Practices","/core-concepts/best-practices","3.core-concepts/3.best-practices","i-lucide-shield-check",{"title":126,"path":127,"stem":128,"icon":99},"Typed Fields","/core-concepts/typed-fields","3.core-concepts/4.typed-fields",{"title":130,"path":131,"stem":132,"icon":133},"Sampling","/core-concepts/sampling","3.core-concepts/5.sampling","i-lucide-filter",{"title":135,"path":136,"stem":137,"icon":138},"Client Logging","/core-concepts/client-logging","3.core-concepts/6.client-logging","i-lucide-monitor",{"title":140,"path":141,"stem":142,"children":143,"page":29},"Adapters","/adapters","4.adapters",[144,148,153,158,163,168,173,178,183],{"title":36,"path":145,"stem":146,"icon":147},"/adapters/overview","4.adapters/1.overview","i-custom-plug",{"title":149,"path":150,"stem":151,"icon":152},"Axiom","/adapters/axiom","4.adapters/2.axiom","i-custom-axiom",{"title":154,"path":155,"stem":156,"icon":157},"OTLP","/adapters/otlp","4.adapters/3.otlp","i-simple-icons-opentelemetry",{"title":159,"path":160,"stem":161,"icon":162},"PostHog","/adapters/posthog","4.adapters/4.posthog","i-simple-icons-posthog",{"title":164,"path":165,"stem":166,"icon":167},"Sentry","/adapters/sentry","4.adapters/5.sentry","i-simple-icons-sentry",{"title":169,"path":170,"stem":171,"icon":172},"Better Stack","/adapters/better-stack","4.adapters/6.better-stack","i-simple-icons-betterstack",{"title":174,"path":175,"stem":176,"icon":177},"Custom Adapters","/adapters/custom","4.adapters/7.custom","i-lucide-code",{"title":179,"path":180,"stem":181,"icon":182},"Pipeline","/adapters/pipeline","4.adapters/8.pipeline","i-lucide-workflow",{"title":184,"path":185,"stem":186,"icon":187},"Browser","/adapters/browser","4.adapters/9.browser","i-lucide-globe",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Enrichers","/enrichers","5.enrichers",[193,196,201],{"title":36,"path":194,"stem":195,"icon":28},"/enrichers/overview","5.enrichers/1.overview",{"title":197,"path":198,"stem":199,"icon":200},"Built-in","/enrichers/built-in","5.enrichers/2.built-in","i-lucide-puzzle",{"title":202,"path":203,"stem":204,"icon":177},"Custom","/enrichers/custom","5.enrichers/3.custom",{"title":206,"path":207,"stem":208,"children":209,"page":29},"NuxtHub","/nuxthub","6.nuxthub",[210,214],{"title":36,"path":211,"stem":212,"icon":213},"/nuxthub/overview","6.nuxthub/1.overview","i-lucide-database",{"title":215,"path":216,"stem":217,"icon":218},"Retention","/nuxthub/retention","6.nuxthub/2.retention","i-lucide-clock",{"id":220,"title":221,"body":222,"description":1651,"extension":1652,"links":1653,"meta":1659,"navigation":1660,"path":198,"seo":1661,"stem":199,"__hash__":1662},"docs/5.enrichers/2.built-in.md","Built-in Enrichers",{"type":223,"value":224,"toc":1643},"minimark",[225,238,312,317,324,334,358,363,524,529,718,724,730,734,737,744,762,766,857,862,924,961,965,972,979,997,1001,1043,1047,1107,1117,1121,1131,1144,1162,1166,1232,1236,1360,1367,1380,1384,1387,1620,1624,1639],[226,227,228,229,233,234,237],"p",{},"All built-in enrichers are exported from ",[230,231,232],"code",{},"evlog/enrichers",". Each enricher is a factory function that returns an ",[230,235,236],{},"(ctx: EnrichContext) => void"," callback.",[239,240,245],"pre",{"className":241,"code":242,"language":243,"meta":244,"style":244},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog/enrichers'\n","typescript","",[230,246,247,260,270,278,286,294],{"__ignoreMap":244},[248,249,252,256],"span",{"class":250,"line":251},"line",1,[248,253,255],{"class":254},"s7zQu","import",[248,257,259],{"class":258},"sMK4o"," {\n",[248,261,263,267],{"class":250,"line":262},2,[248,264,266],{"class":265},"sTEyZ","  createUserAgentEnricher",[248,268,269],{"class":258},",\n",[248,271,273,276],{"class":250,"line":272},3,[248,274,275],{"class":265},"  createGeoEnricher",[248,277,269],{"class":258},[248,279,281,284],{"class":250,"line":280},4,[248,282,283],{"class":265},"  createRequestSizeEnricher",[248,285,269],{"class":258},[248,287,289,292],{"class":250,"line":288},5,[248,290,291],{"class":265},"  createTraceContextEnricher",[248,293,269],{"class":258},[248,295,297,300,303,306,309],{"class":250,"line":296},6,[248,298,299],{"class":258},"}",[248,301,302],{"class":254}," from",[248,304,305],{"class":258}," '",[248,307,232],{"class":308},"sfazB",[248,310,311],{"class":258},"'\n",[313,314,316],"h2",{"id":315},"user-agent","User Agent",[226,318,319,320,323],{},"Parse browser, OS, and device type from the ",[230,321,322],{},"User-Agent"," header.",[226,325,326,330,331],{},[327,328,329],"strong",{},"Sets:"," ",[230,332,333],{},"event.userAgent",[239,335,337],{"className":241,"code":336,"language":243,"meta":244,"style":244},"const enrich = createUserAgentEnricher()\n",[230,338,339],{"__ignoreMap":244},[248,340,341,345,348,351,355],{"class":250,"line":251},[248,342,344],{"class":343},"spNyl","const",[248,346,347],{"class":265}," enrich ",[248,349,350],{"class":258},"=",[248,352,354],{"class":353},"s2Zo4"," createUserAgentEnricher",[248,356,357],{"class":265},"()\n",[226,359,360],{},[327,361,362],{},"Output shape:",[239,364,366],{"className":241,"code":365,"language":243,"meta":244,"style":244},"interface UserAgentInfo {\n  raw: string                                      // Original User-Agent string\n  browser?: { name: string; version?: string }     // Chrome, Firefox, Safari, Edge\n  os?: { name: string; version?: string }          // Windows, macOS, iOS, Android, Linux\n  device?: { type: 'mobile' | 'tablet' | 'desktop' | 'bot' | 'unknown' }\n}\n",[230,367,368,379,395,429,457,519],{"__ignoreMap":244},[248,369,370,373,377],{"class":250,"line":251},[248,371,372],{"class":343},"interface",[248,374,376],{"class":375},"sBMFI"," UserAgentInfo",[248,378,259],{"class":258},[248,380,381,385,388,391],{"class":250,"line":262},[248,382,384],{"class":383},"swJcz","  raw",[248,386,387],{"class":258},":",[248,389,390],{"class":375}," string",[248,392,394],{"class":393},"sHwdD","                                      // Original User-Agent string\n",[248,396,397,400,403,406,409,411,413,416,419,421,423,426],{"class":250,"line":272},[248,398,399],{"class":383},"  browser",[248,401,402],{"class":258},"?:",[248,404,405],{"class":258}," {",[248,407,408],{"class":383}," name",[248,410,387],{"class":258},[248,412,390],{"class":375},[248,414,415],{"class":258},";",[248,417,418],{"class":383}," version",[248,420,402],{"class":258},[248,422,390],{"class":375},[248,424,425],{"class":258}," }",[248,427,428],{"class":393},"     // Chrome, Firefox, Safari, Edge\n",[248,430,431,434,436,438,440,442,444,446,448,450,452,454],{"class":250,"line":280},[248,432,433],{"class":383},"  os",[248,435,402],{"class":258},[248,437,405],{"class":258},[248,439,408],{"class":383},[248,441,387],{"class":258},[248,443,390],{"class":375},[248,445,415],{"class":258},[248,447,418],{"class":383},[248,449,402],{"class":258},[248,451,390],{"class":375},[248,453,425],{"class":258},[248,455,456],{"class":393},"          // Windows, macOS, iOS, Android, Linux\n",[248,458,459,462,464,466,469,471,473,476,479,482,484,487,489,491,493,496,498,500,502,505,507,509,511,514,516],{"class":250,"line":288},[248,460,461],{"class":383},"  device",[248,463,402],{"class":258},[248,465,405],{"class":258},[248,467,468],{"class":383}," type",[248,470,387],{"class":258},[248,472,305],{"class":258},[248,474,475],{"class":308},"mobile",[248,477,478],{"class":258},"'",[248,480,481],{"class":258}," |",[248,483,305],{"class":258},[248,485,486],{"class":308},"tablet",[248,488,478],{"class":258},[248,490,481],{"class":258},[248,492,305],{"class":258},[248,494,495],{"class":308},"desktop",[248,497,478],{"class":258},[248,499,481],{"class":258},[248,501,305],{"class":258},[248,503,504],{"class":308},"bot",[248,506,478],{"class":258},[248,508,481],{"class":258},[248,510,305],{"class":258},[248,512,513],{"class":308},"unknown",[248,515,478],{"class":258},[248,517,518],{"class":258}," }\n",[248,520,521],{"class":250,"line":296},[248,522,523],{"class":258},"}\n",[226,525,526],{},[327,527,528],{},"Example output:",[239,530,534],{"className":531,"code":532,"language":533,"meta":244,"style":244},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"userAgent\": {\n    \"raw\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/120.0.0.0\",\n    \"browser\": { \"name\": \"Chrome\", \"version\": \"120.0.0.0\" },\n    \"os\": { \"name\": \"macOS\", \"version\": \"10.15.7\" },\n    \"device\": { \"type\": \"desktop\" }\n  }\n}\n","json",[230,535,536,541,556,578,630,677,707,713],{"__ignoreMap":244},[248,537,538],{"class":250,"line":251},[248,539,540],{"class":258},"{\n",[248,542,543,546,549,552,554],{"class":250,"line":262},[248,544,545],{"class":258},"  \"",[248,547,548],{"class":343},"userAgent",[248,550,551],{"class":258},"\"",[248,553,387],{"class":258},[248,555,259],{"class":258},[248,557,558,561,564,566,568,571,574,576],{"class":250,"line":272},[248,559,560],{"class":258},"    \"",[248,562,563],{"class":375},"raw",[248,565,551],{"class":258},[248,567,387],{"class":258},[248,569,570],{"class":258}," \"",[248,572,573],{"class":308},"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/120.0.0.0",[248,575,551],{"class":258},[248,577,269],{"class":258},[248,579,580,582,585,587,589,591,593,597,599,601,603,606,608,611,613,616,618,620,622,625,627],{"class":250,"line":280},[248,581,560],{"class":258},[248,583,584],{"class":375},"browser",[248,586,551],{"class":258},[248,588,387],{"class":258},[248,590,405],{"class":258},[248,592,570],{"class":258},[248,594,596],{"class":595},"sbssI","name",[248,598,551],{"class":258},[248,600,387],{"class":258},[248,602,570],{"class":258},[248,604,605],{"class":308},"Chrome",[248,607,551],{"class":258},[248,609,610],{"class":258},",",[248,612,570],{"class":258},[248,614,615],{"class":595},"version",[248,617,551],{"class":258},[248,619,387],{"class":258},[248,621,570],{"class":258},[248,623,624],{"class":308},"120.0.0.0",[248,626,551],{"class":258},[248,628,629],{"class":258}," },\n",[248,631,632,634,637,639,641,643,645,647,649,651,653,656,658,660,662,664,666,668,670,673,675],{"class":250,"line":288},[248,633,560],{"class":258},[248,635,636],{"class":375},"os",[248,638,551],{"class":258},[248,640,387],{"class":258},[248,642,405],{"class":258},[248,644,570],{"class":258},[248,646,596],{"class":595},[248,648,551],{"class":258},[248,650,387],{"class":258},[248,652,570],{"class":258},[248,654,655],{"class":308},"macOS",[248,657,551],{"class":258},[248,659,610],{"class":258},[248,661,570],{"class":258},[248,663,615],{"class":595},[248,665,551],{"class":258},[248,667,387],{"class":258},[248,669,570],{"class":258},[248,671,672],{"class":308},"10.15.7",[248,674,551],{"class":258},[248,676,629],{"class":258},[248,678,679,681,684,686,688,690,692,695,697,699,701,703,705],{"class":250,"line":296},[248,680,560],{"class":258},[248,682,683],{"class":375},"device",[248,685,551],{"class":258},[248,687,387],{"class":258},[248,689,405],{"class":258},[248,691,570],{"class":258},[248,693,694],{"class":595},"type",[248,696,551],{"class":258},[248,698,387],{"class":258},[248,700,570],{"class":258},[248,702,495],{"class":308},[248,704,551],{"class":258},[248,706,518],{"class":258},[248,708,710],{"class":250,"line":709},7,[248,711,712],{"class":258},"  }\n",[248,714,716],{"class":250,"line":715},8,[248,717,523],{"class":258},[226,719,720,723],{},[327,721,722],{},"Detected browsers:"," Edge, Chrome, Firefox, Safari (checked in order, Edge before Chrome to avoid false matches).",[226,725,726,729],{},[327,727,728],{},"Detected devices:"," Bot (crawlers, spiders), Tablet (iPad), Mobile (iPhone, Android phones), Desktop (fallback).",[313,731,733],{"id":732},"geo","Geo",[226,735,736],{},"Extract geographic data from platform-injected headers.",[226,738,739,330,741],{},[327,740,329],{},[230,742,743],{},"event.geo",[239,745,747],{"className":241,"code":746,"language":243,"meta":244,"style":244},"const enrich = createGeoEnricher()\n",[230,748,749],{"__ignoreMap":244},[248,750,751,753,755,757,760],{"class":250,"line":251},[248,752,344],{"class":343},[248,754,347],{"class":265},[248,756,350],{"class":258},[248,758,759],{"class":353}," createGeoEnricher",[248,761,357],{"class":265},[226,763,764],{},[327,765,362],{},[239,767,769],{"className":241,"code":768,"language":243,"meta":244,"style":244},"interface GeoInfo {\n  country?: string      // ISO country code (e.g., \"US\", \"FR\")\n  region?: string       // Region/state name\n  regionCode?: string   // Region code\n  city?: string         // City name\n  latitude?: number     // Decimal latitude\n  longitude?: number    // Decimal longitude\n}\n",[230,770,771,780,792,804,816,828,841,853],{"__ignoreMap":244},[248,772,773,775,778],{"class":250,"line":251},[248,774,372],{"class":343},[248,776,777],{"class":375}," GeoInfo",[248,779,259],{"class":258},[248,781,782,785,787,789],{"class":250,"line":262},[248,783,784],{"class":383},"  country",[248,786,402],{"class":258},[248,788,390],{"class":375},[248,790,791],{"class":393},"      // ISO country code (e.g., \"US\", \"FR\")\n",[248,793,794,797,799,801],{"class":250,"line":272},[248,795,796],{"class":383},"  region",[248,798,402],{"class":258},[248,800,390],{"class":375},[248,802,803],{"class":393},"       // Region/state name\n",[248,805,806,809,811,813],{"class":250,"line":280},[248,807,808],{"class":383},"  regionCode",[248,810,402],{"class":258},[248,812,390],{"class":375},[248,814,815],{"class":393},"   // Region code\n",[248,817,818,821,823,825],{"class":250,"line":288},[248,819,820],{"class":383},"  city",[248,822,402],{"class":258},[248,824,390],{"class":375},[248,826,827],{"class":393},"         // City name\n",[248,829,830,833,835,838],{"class":250,"line":296},[248,831,832],{"class":383},"  latitude",[248,834,402],{"class":258},[248,836,837],{"class":375}," number",[248,839,840],{"class":393},"     // Decimal latitude\n",[248,842,843,846,848,850],{"class":250,"line":709},[248,844,845],{"class":383},"  longitude",[248,847,402],{"class":258},[248,849,837],{"class":375},[248,851,852],{"class":393},"    // Decimal longitude\n",[248,854,855],{"class":250,"line":715},[248,856,523],{"class":258},[226,858,859],{},[327,860,861],{},"Supported platforms:",[863,864,865,881],"table",{},[866,867,868],"thead",{},[869,870,871,875,878],"tr",{},[872,873,874],"th",{},"Platform",[872,876,877],{},"Headers",[872,879,880],{},"Coverage",[882,883,884,911],"tbody",{},[869,885,886,890,908],{},[887,888,889],"td",{},"Vercel",[887,891,892,895,896,895,899,895,902,895,905],{},[230,893,894],{},"x-vercel-ip-country",", ",[230,897,898],{},"x-vercel-ip-country-region",[230,900,901],{},"x-vercel-ip-city",[230,903,904],{},"x-vercel-ip-latitude",[230,906,907],{},"x-vercel-ip-longitude",[887,909,910],{},"Full",[869,912,913,916,921],{},[887,914,915],{},"Cloudflare",[887,917,918],{},[230,919,920],{},"cf-ipcountry",[887,922,923],{},"Country only",[925,926,928,931,932,934,935,895,938,895,941,944,945,948,949,953,954,956,957,960],"callout",{"color":927,"icon":13},"info",[327,929,930],{},"Cloudflare note:"," Only ",[230,933,920],{}," is a standard Cloudflare HTTP header. Other geo fields (",[230,936,937],{},"city",[230,939,940],{},"region",[230,942,943],{},"latitude",", etc.) are properties of ",[230,946,947],{},"request.cf",", which is not exposed as headers. For full Cloudflare geo data, write a ",[950,951,952],"a",{"href":203},"custom enricher"," that reads ",[230,955,947],{},", or use a Workers middleware to copy ",[230,958,959],{},"cf"," properties into custom headers.",[313,962,964],{"id":963},"request-size","Request Size",[226,966,967,968,971],{},"Capture request and response payload sizes from ",[230,969,970],{},"Content-Length"," headers.",[226,973,974,330,976],{},[327,975,329],{},[230,977,978],{},"event.requestSize",[239,980,982],{"className":241,"code":981,"language":243,"meta":244,"style":244},"const enrich = createRequestSizeEnricher()\n",[230,983,984],{"__ignoreMap":244},[248,985,986,988,990,992,995],{"class":250,"line":251},[248,987,344],{"class":343},[248,989,347],{"class":265},[248,991,350],{"class":258},[248,993,994],{"class":353}," createRequestSizeEnricher",[248,996,357],{"class":265},[226,998,999],{},[327,1000,362],{},[239,1002,1004],{"className":241,"code":1003,"language":243,"meta":244,"style":244},"interface RequestSizeInfo {\n  requestBytes?: number    // Request Content-Length\n  responseBytes?: number   // Response Content-Length\n}\n",[230,1005,1006,1015,1027,1039],{"__ignoreMap":244},[248,1007,1008,1010,1013],{"class":250,"line":251},[248,1009,372],{"class":343},[248,1011,1012],{"class":375}," RequestSizeInfo",[248,1014,259],{"class":258},[248,1016,1017,1020,1022,1024],{"class":250,"line":262},[248,1018,1019],{"class":383},"  requestBytes",[248,1021,402],{"class":258},[248,1023,837],{"class":375},[248,1025,1026],{"class":393},"    // Request Content-Length\n",[248,1028,1029,1032,1034,1036],{"class":250,"line":272},[248,1030,1031],{"class":383},"  responseBytes",[248,1033,402],{"class":258},[248,1035,837],{"class":375},[248,1037,1038],{"class":393},"   // Response Content-Length\n",[248,1040,1041],{"class":250,"line":280},[248,1042,523],{"class":258},[226,1044,1045],{},[327,1046,528],{},[239,1048,1050],{"className":531,"code":1049,"language":533,"meta":244,"style":244},"{\n  \"requestSize\": {\n    \"requestBytes\": 1234,\n    \"responseBytes\": 5678\n  }\n}\n",[230,1051,1052,1056,1069,1085,1099,1103],{"__ignoreMap":244},[248,1053,1054],{"class":250,"line":251},[248,1055,540],{"class":258},[248,1057,1058,1060,1063,1065,1067],{"class":250,"line":262},[248,1059,545],{"class":258},[248,1061,1062],{"class":343},"requestSize",[248,1064,551],{"class":258},[248,1066,387],{"class":258},[248,1068,259],{"class":258},[248,1070,1071,1073,1076,1078,1080,1083],{"class":250,"line":272},[248,1072,560],{"class":258},[248,1074,1075],{"class":375},"requestBytes",[248,1077,551],{"class":258},[248,1079,387],{"class":258},[248,1081,1082],{"class":595}," 1234",[248,1084,269],{"class":258},[248,1086,1087,1089,1092,1094,1096],{"class":250,"line":280},[248,1088,560],{"class":258},[248,1090,1091],{"class":375},"responseBytes",[248,1093,551],{"class":258},[248,1095,387],{"class":258},[248,1097,1098],{"class":595}," 5678\n",[248,1100,1101],{"class":250,"line":288},[248,1102,712],{"class":258},[248,1104,1105],{"class":250,"line":296},[248,1106,523],{"class":258},[925,1108,1109,1110,1112,1113,1116],{"color":927,"icon":13},"This enricher reads the ",[230,1111,970],{}," header from both the request and response. If the header is missing (e.g., for chunked transfer encoding), the corresponding field will be ",[230,1114,1115],{},"undefined",".",[313,1118,1120],{"id":1119},"trace-context","Trace Context",[226,1122,1123,1124,1127,1128,971],{},"Extract W3C trace context from the ",[230,1125,1126],{},"traceparent"," and ",[230,1129,1130],{},"tracestate",[226,1132,1133,330,1135,895,1138,895,1141],{},[327,1134,329],{},[230,1136,1137],{},"event.traceContext",[230,1139,1140],{},"event.traceId",[230,1142,1143],{},"event.spanId",[239,1145,1147],{"className":241,"code":1146,"language":243,"meta":244,"style":244},"const enrich = createTraceContextEnricher()\n",[230,1148,1149],{"__ignoreMap":244},[248,1150,1151,1153,1155,1157,1160],{"class":250,"line":251},[248,1152,344],{"class":343},[248,1154,347],{"class":265},[248,1156,350],{"class":258},[248,1158,1159],{"class":353}," createTraceContextEnricher",[248,1161,357],{"class":265},[226,1163,1164],{},[327,1165,362],{},[239,1167,1169],{"className":241,"code":1168,"language":243,"meta":244,"style":244},"interface TraceContextInfo {\n  traceparent?: string   // Full traceparent header value\n  tracestate?: string    // Full tracestate header value\n  traceId?: string       // 32-char hex trace ID (parsed from traceparent)\n  spanId?: string        // 16-char hex span ID (parsed from traceparent)\n}\n",[230,1170,1171,1180,1192,1204,1216,1228],{"__ignoreMap":244},[248,1172,1173,1175,1178],{"class":250,"line":251},[248,1174,372],{"class":343},[248,1176,1177],{"class":375}," TraceContextInfo",[248,1179,259],{"class":258},[248,1181,1182,1185,1187,1189],{"class":250,"line":262},[248,1183,1184],{"class":383},"  traceparent",[248,1186,402],{"class":258},[248,1188,390],{"class":375},[248,1190,1191],{"class":393},"   // Full traceparent header value\n",[248,1193,1194,1197,1199,1201],{"class":250,"line":272},[248,1195,1196],{"class":383},"  tracestate",[248,1198,402],{"class":258},[248,1200,390],{"class":375},[248,1202,1203],{"class":393},"    // Full tracestate header value\n",[248,1205,1206,1209,1211,1213],{"class":250,"line":280},[248,1207,1208],{"class":383},"  traceId",[248,1210,402],{"class":258},[248,1212,390],{"class":375},[248,1214,1215],{"class":393},"       // 32-char hex trace ID (parsed from traceparent)\n",[248,1217,1218,1221,1223,1225],{"class":250,"line":288},[248,1219,1220],{"class":383},"  spanId",[248,1222,402],{"class":258},[248,1224,390],{"class":375},[248,1226,1227],{"class":393},"        // 16-char hex span ID (parsed from traceparent)\n",[248,1229,1230],{"class":250,"line":296},[248,1231,523],{"class":258},[226,1233,1234],{},[327,1235,528],{},[239,1237,1239],{"className":531,"code":1238,"language":533,"meta":244,"style":244},"{\n  \"traceContext\": {\n    \"traceparent\": \"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"spanId\": \"00f067aa0ba902b7\"\n  },\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spanId\": \"00f067aa0ba902b7\"\n}\n",[230,1240,1241,1245,1258,1277,1297,1316,1321,1339,1355],{"__ignoreMap":244},[248,1242,1243],{"class":250,"line":251},[248,1244,540],{"class":258},[248,1246,1247,1249,1252,1254,1256],{"class":250,"line":262},[248,1248,545],{"class":258},[248,1250,1251],{"class":343},"traceContext",[248,1253,551],{"class":258},[248,1255,387],{"class":258},[248,1257,259],{"class":258},[248,1259,1260,1262,1264,1266,1268,1270,1273,1275],{"class":250,"line":272},[248,1261,560],{"class":258},[248,1263,1126],{"class":375},[248,1265,551],{"class":258},[248,1267,387],{"class":258},[248,1269,570],{"class":258},[248,1271,1272],{"class":308},"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",[248,1274,551],{"class":258},[248,1276,269],{"class":258},[248,1278,1279,1281,1284,1286,1288,1290,1293,1295],{"class":250,"line":280},[248,1280,560],{"class":258},[248,1282,1283],{"class":375},"traceId",[248,1285,551],{"class":258},[248,1287,387],{"class":258},[248,1289,570],{"class":258},[248,1291,1292],{"class":308},"4bf92f3577b34da6a3ce929d0e0e4736",[248,1294,551],{"class":258},[248,1296,269],{"class":258},[248,1298,1299,1301,1304,1306,1308,1310,1313],{"class":250,"line":288},[248,1300,560],{"class":258},[248,1302,1303],{"class":375},"spanId",[248,1305,551],{"class":258},[248,1307,387],{"class":258},[248,1309,570],{"class":258},[248,1311,1312],{"class":308},"00f067aa0ba902b7",[248,1314,1315],{"class":258},"\"\n",[248,1317,1318],{"class":250,"line":296},[248,1319,1320],{"class":258},"  },\n",[248,1322,1323,1325,1327,1329,1331,1333,1335,1337],{"class":250,"line":709},[248,1324,545],{"class":258},[248,1326,1283],{"class":343},[248,1328,551],{"class":258},[248,1330,387],{"class":258},[248,1332,570],{"class":258},[248,1334,1292],{"class":308},[248,1336,551],{"class":258},[248,1338,269],{"class":258},[248,1340,1341,1343,1345,1347,1349,1351,1353],{"class":250,"line":715},[248,1342,545],{"class":258},[248,1344,1303],{"class":343},[248,1346,551],{"class":258},[248,1348,387],{"class":258},[248,1350,570],{"class":258},[248,1352,1312],{"class":308},[248,1354,1315],{"class":258},[248,1356,1358],{"class":250,"line":1357},9,[248,1359,523],{"class":258},[226,1361,1362,1127,1364,1366],{},[230,1363,1283],{},[230,1365,1303],{}," are also set at the top level of the event for easy querying and correlation.",[925,1368,1369,1370,1376,1377,1116],{"color":927,"icon":13},"The traceparent format follows the ",[950,1371,1375],{"href":1372,"rel":1373},"https://www.w3.org/TR/trace-context/",[1374],"nofollow","W3C Trace Context"," specification: ",[230,1378,1379],{},"{version}-{traceId}-{spanId}-{flags}",[313,1381,1383],{"id":1382},"full-setup-example","Full Setup Example",[226,1385,1386],{},"Use all built-in enrichers together:",[239,1388,1391],{"className":241,"code":1389,"filename":1390,"language":243,"meta":244,"style":244},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog/enrichers'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const enrichers = [\n    createUserAgentEnricher(),\n    createGeoEnricher(),\n    createRequestSizeEnricher(),\n    createTraceContextEnricher(),\n  ]\n\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","server/plugins/evlog-enrich.ts",[230,1392,1393,1399,1405,1411,1417,1423,1435,1441,1469,1483,1494,1504,1514,1524,1530,1535,1574,1605,1613],{"__ignoreMap":244},[248,1394,1395,1397],{"class":250,"line":251},[248,1396,255],{"class":254},[248,1398,259],{"class":258},[248,1400,1401,1403],{"class":250,"line":262},[248,1402,266],{"class":265},[248,1404,269],{"class":258},[248,1406,1407,1409],{"class":250,"line":272},[248,1408,275],{"class":265},[248,1410,269],{"class":258},[248,1412,1413,1415],{"class":250,"line":280},[248,1414,283],{"class":265},[248,1416,269],{"class":258},[248,1418,1419,1421],{"class":250,"line":288},[248,1420,291],{"class":265},[248,1422,269],{"class":258},[248,1424,1425,1427,1429,1431,1433],{"class":250,"line":296},[248,1426,299],{"class":258},[248,1428,302],{"class":254},[248,1430,305],{"class":258},[248,1432,232],{"class":308},[248,1434,311],{"class":258},[248,1436,1437],{"class":250,"line":709},[248,1438,1440],{"emptyLinePlaceholder":1439},true,"\n",[248,1442,1443,1446,1449,1452,1455,1457,1461,1464,1467],{"class":250,"line":715},[248,1444,1445],{"class":254},"export",[248,1447,1448],{"class":254}," default",[248,1450,1451],{"class":353}," defineNitroPlugin",[248,1453,1454],{"class":265},"(",[248,1456,1454],{"class":258},[248,1458,1460],{"class":1459},"sHdIc","nitroApp",[248,1462,1463],{"class":258},")",[248,1465,1466],{"class":343}," =>",[248,1468,259],{"class":258},[248,1470,1471,1474,1477,1480],{"class":250,"line":1357},[248,1472,1473],{"class":343},"  const",[248,1475,1476],{"class":265}," enrichers",[248,1478,1479],{"class":258}," =",[248,1481,1482],{"class":383}," [\n",[248,1484,1486,1489,1492],{"class":250,"line":1485},10,[248,1487,1488],{"class":353},"    createUserAgentEnricher",[248,1490,1491],{"class":383},"()",[248,1493,269],{"class":258},[248,1495,1497,1500,1502],{"class":250,"line":1496},11,[248,1498,1499],{"class":353},"    createGeoEnricher",[248,1501,1491],{"class":383},[248,1503,269],{"class":258},[248,1505,1507,1510,1512],{"class":250,"line":1506},12,[248,1508,1509],{"class":353},"    createRequestSizeEnricher",[248,1511,1491],{"class":383},[248,1513,269],{"class":258},[248,1515,1517,1520,1522],{"class":250,"line":1516},13,[248,1518,1519],{"class":353},"    createTraceContextEnricher",[248,1521,1491],{"class":383},[248,1523,269],{"class":258},[248,1525,1527],{"class":250,"line":1526},14,[248,1528,1529],{"class":383},"  ]\n",[248,1531,1533],{"class":250,"line":1532},15,[248,1534,1440],{"emptyLinePlaceholder":1439},[248,1536,1538,1541,1543,1546,1548,1551,1553,1555,1558,1560,1562,1565,1568,1570,1572],{"class":250,"line":1537},16,[248,1539,1540],{"class":265},"  nitroApp",[248,1542,1116],{"class":258},[248,1544,1545],{"class":265},"hooks",[248,1547,1116],{"class":258},[248,1549,1550],{"class":353},"hook",[248,1552,1454],{"class":383},[248,1554,478],{"class":258},[248,1556,1557],{"class":308},"evlog:enrich",[248,1559,478],{"class":258},[248,1561,610],{"class":258},[248,1563,1564],{"class":258}," (",[248,1566,1567],{"class":1459},"ctx",[248,1569,1463],{"class":258},[248,1571,1466],{"class":343},[248,1573,259],{"class":258},[248,1575,1577,1580,1582,1584,1587,1590,1592,1595,1598,1600,1602],{"class":250,"line":1576},17,[248,1578,1579],{"class":254},"    for",[248,1581,1564],{"class":383},[248,1583,344],{"class":343},[248,1585,1586],{"class":265}," enricher",[248,1588,1589],{"class":258}," of",[248,1591,1476],{"class":265},[248,1593,1594],{"class":383},") ",[248,1596,1597],{"class":353},"enricher",[248,1599,1454],{"class":383},[248,1601,1567],{"class":265},[248,1603,1604],{"class":383},")\n",[248,1606,1608,1611],{"class":250,"line":1607},18,[248,1609,1610],{"class":258},"  }",[248,1612,1604],{"class":383},[248,1614,1616,1618],{"class":250,"line":1615},19,[248,1617,299],{"class":258},[248,1619,1604],{"class":265},[313,1621,1623],{"id":1622},"next-steps","Next Steps",[1625,1626,1627,1634],"ul",{},[1628,1629,1630,1633],"li",{},[950,1631,1632],{"href":203},"Custom Enrichers"," - Write your own enricher",[1628,1635,1636,1638],{},[950,1637,140],{"href":145}," - Send enriched events to external services",[1640,1641,1642],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":244,"searchDepth":262,"depth":262,"links":1644},[1645,1646,1647,1648,1649,1650],{"id":315,"depth":262,"text":316},{"id":732,"depth":262,"text":733},{"id":963,"depth":262,"text":964},{"id":1119,"depth":262,"text":1120},{"id":1382,"depth":262,"text":1383},{"id":1622,"depth":262,"text":1623},"Reference for all built-in evlog enrichers. Parse user agents, extract geo data, measure request sizes, and capture trace context automatically.","md",[1654,1657],{"label":1632,"icon":177,"to":203,"color":1655,"variant":1656},"neutral","subtle",{"label":1658,"icon":28,"to":194,"color":1655,"variant":1656},"Enrichers Overview",{},{"title":197,"icon":200},{"title":221,"description":1651},"DNYO7xfJOJC8JznTlToOOO9hx8Ohr8bkCT_-DDzlBt8",[1664,1666],{"title":36,"path":194,"stem":195,"description":1665,"icon":28,"children":-1},"Enrich your wide events with derived context like user agent, geo data, request size, and trace context. Built-in enrichers and custom enricher support.",{"title":202,"path":203,"stem":204,"description":1667,"icon":177,"children":-1},"Write custom enrichers to add derived context to your wide events. Add deployment metadata, tenant IDs, feature flags, or any computed data.",1772991607187]