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