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