[{"data":1,"prerenderedAt":2337},["ShallowReactive",2],{"navigation_docs":3,"-enrichers-built-in":308,"-enrichers-built-in-surround":2332},[4,35,80,124,212,292],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,75],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":66,"path":67,"stem":68,"icon":69},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":71,"path":72,"stem":73,"icon":74},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":76,"path":77,"stem":78,"icon":79},"Audit Logs","\u002Flogging\u002Faudit","2.logging\u002F7.audit","i-lucide-shield-check",{"title":81,"path":82,"stem":83,"children":84,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[85,90,95,100,105,109,114,119],{"title":86,"path":87,"stem":88,"icon":89},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":91,"path":92,"stem":93,"icon":94},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":96,"path":97,"stem":98,"icon":99},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":101,"path":102,"stem":103,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":79},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":110,"path":111,"stem":112,"icon":113},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":115,"path":116,"stem":117,"icon":118},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":120,"path":121,"stem":122,"icon":123},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":125,"path":126,"stem":127,"children":128,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[129,133,138,143,148,153,158,163,168,173,178,183,188,193,197,202,207],{"title":41,"path":130,"stem":131,"icon":132},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"icon":137},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":139,"path":140,"stem":141,"icon":142},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":144,"path":145,"stem":146,"icon":147},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":149,"path":150,"stem":151,"icon":152},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":154,"path":155,"stem":156,"icon":157},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":159,"path":160,"stem":161,"icon":162},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":164,"path":165,"stem":166,"icon":167},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":169,"path":170,"stem":171,"icon":172},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":174,"path":175,"stem":176,"icon":177},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":179,"path":180,"stem":181,"icon":182},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":184,"path":185,"stem":186,"icon":187},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":189,"path":190,"stem":191,"icon":192},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":194,"path":195,"stem":196,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":198,"path":199,"stem":200,"icon":201},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":203,"path":204,"stem":205,"icon":206},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":208,"path":209,"stem":210,"icon":211},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":213,"path":214,"stem":215,"children":216,"page":34},"Adapters","\u002Fadapters","6.adapters",[217,257,272],{"title":218,"path":219,"stem":220,"children":221,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[222,227,232,237,242,247,252],{"title":223,"path":224,"stem":225,"icon":226},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":228,"path":229,"stem":230,"icon":231},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":233,"path":234,"stem":235,"icon":236},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":238,"path":239,"stem":240,"icon":241},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":243,"path":244,"stem":245,"icon":246},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":248,"path":249,"stem":250,"icon":251},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":253,"path":254,"stem":255,"icon":256},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":258,"path":259,"stem":260,"children":261,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[262,267],{"title":263,"path":264,"stem":265,"icon":266},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":268,"path":269,"stem":270,"icon":271},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":273,"path":274,"stem":275,"children":276,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[277,282,287],{"title":278,"path":279,"stem":280,"icon":281},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":283,"path":284,"stem":285,"icon":286},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":288,"path":289,"stem":290,"icon":291},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom","i-lucide-code",{"title":293,"path":294,"stem":295,"children":296,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[297,300,304],{"title":41,"path":298,"stem":299,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":301,"path":302,"stem":303,"icon":211},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":305,"path":306,"stem":307,"icon":291},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":309,"title":310,"body":311,"description":2320,"extension":2321,"links":2322,"meta":2328,"navigation":2329,"path":302,"seo":2330,"stem":303,"__hash__":2331},"docs\u002F7.enrichers\u002F2.built-in.md","Built-in Enrichers",{"type":312,"value":313,"toc":2312},"minimark",[314,327,368,443,448,455,465,490,495,657,662,852,858,864,868,871,878,897,901,993,998,1060,1096,1100,1107,1114,1133,1137,1180,1184,1245,1255,1259,1269,1282,1301,1305,1372,1376,1501,1508,1520,1524,1527,2289,2293,2308],[315,316,317,318,322,323,326],"p",{},"All built-in enrichers are exported from ",[319,320,321],"code",{},"evlog\u002Fenrichers",". Each enricher is a factory function that returns an ",[319,324,325],{},"(ctx: EnrichContext) => void"," callback.",[328,329,332,335,354],"prompt",{":actions":330,"description":331,"icon":211},"[\"copy\",\"cursor\",\"windsurf\"]","Add all built-in evlog enrichers",[315,333,334],{},"Add all built-in enrichers to my evlog setup.",[336,337,338,342,345,348,351],"ol",{},[339,340,341],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[339,343,344],{},"Import createUserAgentEnricher, createGeoEnricher, createRequestSizeEnricher, and createTraceContextEnricher from 'evlog\u002Fenrichers'",[339,346,347],{},"Wire the enrichers into my framework's enrich configuration",[339,349,350],{},"Enrichers add userAgent, geo, requestSize, and traceContext fields to wide events",[339,352,353],{},"All enrichers accept { overwrite?: boolean } - defaults to false to preserve user-set data",[315,355,356,357,363,364],{},"Enricher docs: ",[358,359,360],"a",{"href":360,"rel":361},"https:\u002F\u002Fwww.evlog.dev\u002Fenrichers\u002Fbuilt-in",[362],"nofollow","\nFramework setup: ",[358,365,366],{"href":366,"rel":367},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks",[362],[369,370,376],"pre",{"className":371,"code":372,"filename":373,"language":374,"meta":375,"style":375},"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\u002Fenrichers'\n","server\u002Fplugins\u002Fevlog-enrich.ts","typescript","",[319,377,378,391,401,409,417,425],{"__ignoreMap":375},[379,380,383,387],"span",{"class":381,"line":382},"line",1,[379,384,386],{"class":385},"s7zQu","import",[379,388,390],{"class":389},"sMK4o"," {\n",[379,392,394,398],{"class":381,"line":393},2,[379,395,397],{"class":396},"sTEyZ","  createUserAgentEnricher",[379,399,400],{"class":389},",\n",[379,402,404,407],{"class":381,"line":403},3,[379,405,406],{"class":396},"  createGeoEnricher",[379,408,400],{"class":389},[379,410,412,415],{"class":381,"line":411},4,[379,413,414],{"class":396},"  createRequestSizeEnricher",[379,416,400],{"class":389},[379,418,420,423],{"class":381,"line":419},5,[379,421,422],{"class":396},"  createTraceContextEnricher",[379,424,400],{"class":389},[379,426,428,431,434,437,440],{"class":381,"line":427},6,[379,429,430],{"class":389},"}",[379,432,433],{"class":385}," from",[379,435,436],{"class":389}," '",[379,438,321],{"class":439},"sfazB",[379,441,442],{"class":389},"'\n",[444,445,447],"h2",{"id":446},"user-agent","User Agent",[315,449,450,451,454],{},"Parse browser, OS, and device type from the ",[319,452,453],{},"User-Agent"," header.",[315,456,457,461,462],{},[458,459,460],"strong",{},"Sets:"," ",[319,463,464],{},"event.userAgent",[369,466,469],{"className":371,"code":467,"filename":468,"language":374,"meta":375,"style":375},"const enrich = createUserAgentEnricher()\n","user-agent-enricher.ts",[319,470,471],{"__ignoreMap":375},[379,472,473,477,480,483,487],{"class":381,"line":382},[379,474,476],{"class":475},"spNyl","const",[379,478,479],{"class":396}," enrich ",[379,481,482],{"class":389},"=",[379,484,486],{"class":485},"s2Zo4"," createUserAgentEnricher",[379,488,489],{"class":396},"()\n",[315,491,492],{},[458,493,494],{},"Output shape:",[369,496,499],{"className":371,"code":497,"filename":498,"language":374,"meta":375,"style":375},"interface UserAgentInfo {\n  raw: string                                      \u002F\u002F Original User-Agent string\n  browser?: { name: string; version?: string }     \u002F\u002F Chrome, Firefox, Safari, Edge\n  os?: { name: string; version?: string }          \u002F\u002F Windows, macOS, iOS, Android, Linux\n  device?: { type: 'mobile' | 'tablet' | 'desktop' | 'bot' | 'unknown' }\n}\n","user-agent-types.ts",[319,500,501,512,528,562,590,652],{"__ignoreMap":375},[379,502,503,506,510],{"class":381,"line":382},[379,504,505],{"class":475},"interface",[379,507,509],{"class":508},"sBMFI"," UserAgentInfo",[379,511,390],{"class":389},[379,513,514,518,521,524],{"class":381,"line":393},[379,515,517],{"class":516},"swJcz","  raw",[379,519,520],{"class":389},":",[379,522,523],{"class":508}," string",[379,525,527],{"class":526},"sHwdD","                                      \u002F\u002F Original User-Agent string\n",[379,529,530,533,536,539,542,544,546,549,552,554,556,559],{"class":381,"line":403},[379,531,532],{"class":516},"  browser",[379,534,535],{"class":389},"?:",[379,537,538],{"class":389}," {",[379,540,541],{"class":516}," name",[379,543,520],{"class":389},[379,545,523],{"class":508},[379,547,548],{"class":389},";",[379,550,551],{"class":516}," version",[379,553,535],{"class":389},[379,555,523],{"class":508},[379,557,558],{"class":389}," }",[379,560,561],{"class":526},"     \u002F\u002F Chrome, Firefox, Safari, Edge\n",[379,563,564,567,569,571,573,575,577,579,581,583,585,587],{"class":381,"line":411},[379,565,566],{"class":516},"  os",[379,568,535],{"class":389},[379,570,538],{"class":389},[379,572,541],{"class":516},[379,574,520],{"class":389},[379,576,523],{"class":508},[379,578,548],{"class":389},[379,580,551],{"class":516},[379,582,535],{"class":389},[379,584,523],{"class":508},[379,586,558],{"class":389},[379,588,589],{"class":526},"          \u002F\u002F Windows, macOS, iOS, Android, Linux\n",[379,591,592,595,597,599,602,604,606,609,612,615,617,620,622,624,626,629,631,633,635,638,640,642,644,647,649],{"class":381,"line":419},[379,593,594],{"class":516},"  device",[379,596,535],{"class":389},[379,598,538],{"class":389},[379,600,601],{"class":516}," type",[379,603,520],{"class":389},[379,605,436],{"class":389},[379,607,608],{"class":439},"mobile",[379,610,611],{"class":389},"'",[379,613,614],{"class":389}," |",[379,616,436],{"class":389},[379,618,619],{"class":439},"tablet",[379,621,611],{"class":389},[379,623,614],{"class":389},[379,625,436],{"class":389},[379,627,628],{"class":439},"desktop",[379,630,611],{"class":389},[379,632,614],{"class":389},[379,634,436],{"class":389},[379,636,637],{"class":439},"bot",[379,639,611],{"class":389},[379,641,614],{"class":389},[379,643,436],{"class":389},[379,645,646],{"class":439},"unknown",[379,648,611],{"class":389},[379,650,651],{"class":389}," }\n",[379,653,654],{"class":381,"line":427},[379,655,656],{"class":389},"}\n",[315,658,659],{},[458,660,661],{},"Example output:",[369,663,668],{"className":664,"code":665,"filename":666,"language":667,"meta":375,"style":375},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"userAgent\": {\n    \"raw\": \"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.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","Example wide event: userAgent","json",[319,669,670,675,690,712,764,811,841,847],{"__ignoreMap":375},[379,671,672],{"class":381,"line":382},[379,673,674],{"class":389},"{\n",[379,676,677,680,683,686,688],{"class":381,"line":393},[379,678,679],{"class":389},"  \"",[379,681,682],{"class":475},"userAgent",[379,684,685],{"class":389},"\"",[379,687,520],{"class":389},[379,689,390],{"class":389},[379,691,692,695,698,700,702,705,708,710],{"class":381,"line":403},[379,693,694],{"class":389},"    \"",[379,696,697],{"class":508},"raw",[379,699,685],{"class":389},[379,701,520],{"class":389},[379,703,704],{"class":389}," \"",[379,706,707],{"class":439},"Mozilla\u002F5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\u002F537.36 Chrome\u002F120.0.0.0",[379,709,685],{"class":389},[379,711,400],{"class":389},[379,713,714,716,719,721,723,725,727,731,733,735,737,740,742,745,747,750,752,754,756,759,761],{"class":381,"line":411},[379,715,694],{"class":389},[379,717,718],{"class":508},"browser",[379,720,685],{"class":389},[379,722,520],{"class":389},[379,724,538],{"class":389},[379,726,704],{"class":389},[379,728,730],{"class":729},"sbssI","name",[379,732,685],{"class":389},[379,734,520],{"class":389},[379,736,704],{"class":389},[379,738,739],{"class":439},"Chrome",[379,741,685],{"class":389},[379,743,744],{"class":389},",",[379,746,704],{"class":389},[379,748,749],{"class":729},"version",[379,751,685],{"class":389},[379,753,520],{"class":389},[379,755,704],{"class":389},[379,757,758],{"class":439},"120.0.0.0",[379,760,685],{"class":389},[379,762,763],{"class":389}," },\n",[379,765,766,768,771,773,775,777,779,781,783,785,787,790,792,794,796,798,800,802,804,807,809],{"class":381,"line":419},[379,767,694],{"class":389},[379,769,770],{"class":508},"os",[379,772,685],{"class":389},[379,774,520],{"class":389},[379,776,538],{"class":389},[379,778,704],{"class":389},[379,780,730],{"class":729},[379,782,685],{"class":389},[379,784,520],{"class":389},[379,786,704],{"class":389},[379,788,789],{"class":439},"macOS",[379,791,685],{"class":389},[379,793,744],{"class":389},[379,795,704],{"class":389},[379,797,749],{"class":729},[379,799,685],{"class":389},[379,801,520],{"class":389},[379,803,704],{"class":389},[379,805,806],{"class":439},"10.15.7",[379,808,685],{"class":389},[379,810,763],{"class":389},[379,812,813,815,818,820,822,824,826,829,831,833,835,837,839],{"class":381,"line":427},[379,814,694],{"class":389},[379,816,817],{"class":508},"device",[379,819,685],{"class":389},[379,821,520],{"class":389},[379,823,538],{"class":389},[379,825,704],{"class":389},[379,827,828],{"class":729},"type",[379,830,685],{"class":389},[379,832,520],{"class":389},[379,834,704],{"class":389},[379,836,628],{"class":439},[379,838,685],{"class":389},[379,840,651],{"class":389},[379,842,844],{"class":381,"line":843},7,[379,845,846],{"class":389},"  }\n",[379,848,850],{"class":381,"line":849},8,[379,851,656],{"class":389},[315,853,854,857],{},[458,855,856],{},"Detected browsers:"," Edge, Chrome, Firefox, Safari (checked in order, Edge before Chrome to avoid false matches).",[315,859,860,863],{},[458,861,862],{},"Detected devices:"," Bot (crawlers, spiders), Tablet (iPad), Mobile (iPhone, Android phones), Desktop (fallback).",[444,865,867],{"id":866},"geo","Geo",[315,869,870],{},"Extract geographic data from platform-injected headers.",[315,872,873,461,875],{},[458,874,460],{},[319,876,877],{},"event.geo",[369,879,882],{"className":371,"code":880,"filename":881,"language":374,"meta":375,"style":375},"const enrich = createGeoEnricher()\n","geo-enricher.ts",[319,883,884],{"__ignoreMap":375},[379,885,886,888,890,892,895],{"class":381,"line":382},[379,887,476],{"class":475},[379,889,479],{"class":396},[379,891,482],{"class":389},[379,893,894],{"class":485}," createGeoEnricher",[379,896,489],{"class":396},[315,898,899],{},[458,900,494],{},[369,902,905],{"className":371,"code":903,"filename":904,"language":374,"meta":375,"style":375},"interface GeoInfo {\n  country?: string      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n  region?: string       \u002F\u002F Region\u002Fstate name\n  regionCode?: string   \u002F\u002F Region code\n  city?: string         \u002F\u002F City name\n  latitude?: number     \u002F\u002F Decimal latitude\n  longitude?: number    \u002F\u002F Decimal longitude\n}\n","geo-types.ts",[319,906,907,916,928,940,952,964,977,989],{"__ignoreMap":375},[379,908,909,911,914],{"class":381,"line":382},[379,910,505],{"class":475},[379,912,913],{"class":508}," GeoInfo",[379,915,390],{"class":389},[379,917,918,921,923,925],{"class":381,"line":393},[379,919,920],{"class":516},"  country",[379,922,535],{"class":389},[379,924,523],{"class":508},[379,926,927],{"class":526},"      \u002F\u002F ISO country code (e.g., \"US\", \"FR\")\n",[379,929,930,933,935,937],{"class":381,"line":403},[379,931,932],{"class":516},"  region",[379,934,535],{"class":389},[379,936,523],{"class":508},[379,938,939],{"class":526},"       \u002F\u002F Region\u002Fstate name\n",[379,941,942,945,947,949],{"class":381,"line":411},[379,943,944],{"class":516},"  regionCode",[379,946,535],{"class":389},[379,948,523],{"class":508},[379,950,951],{"class":526},"   \u002F\u002F Region code\n",[379,953,954,957,959,961],{"class":381,"line":419},[379,955,956],{"class":516},"  city",[379,958,535],{"class":389},[379,960,523],{"class":508},[379,962,963],{"class":526},"         \u002F\u002F City name\n",[379,965,966,969,971,974],{"class":381,"line":427},[379,967,968],{"class":516},"  latitude",[379,970,535],{"class":389},[379,972,973],{"class":508}," number",[379,975,976],{"class":526},"     \u002F\u002F Decimal latitude\n",[379,978,979,982,984,986],{"class":381,"line":843},[379,980,981],{"class":516},"  longitude",[379,983,535],{"class":389},[379,985,973],{"class":508},[379,987,988],{"class":526},"    \u002F\u002F Decimal longitude\n",[379,990,991],{"class":381,"line":849},[379,992,656],{"class":389},[315,994,995],{},[458,996,997],{},"Supported platforms:",[999,1000,1001,1017],"table",{},[1002,1003,1004],"thead",{},[1005,1006,1007,1011,1014],"tr",{},[1008,1009,1010],"th",{},"Platform",[1008,1012,1013],{},"Headers",[1008,1015,1016],{},"Coverage",[1018,1019,1020,1047],"tbody",{},[1005,1021,1022,1026,1044],{},[1023,1024,1025],"td",{},"Vercel",[1023,1027,1028,1031,1032,1031,1035,1031,1038,1031,1041],{},[319,1029,1030],{},"x-vercel-ip-country",", ",[319,1033,1034],{},"x-vercel-ip-country-region",[319,1036,1037],{},"x-vercel-ip-city",[319,1039,1040],{},"x-vercel-ip-latitude",[319,1042,1043],{},"x-vercel-ip-longitude",[1023,1045,1046],{},"Full",[1005,1048,1049,1052,1057],{},[1023,1050,1051],{},"Cloudflare",[1023,1053,1054],{},[319,1055,1056],{},"cf-ipcountry",[1023,1058,1059],{},"Country only",[1061,1062,1064,1067,1068,1070,1071,1031,1074,1031,1077,1080,1081,1084,1085,1088,1089,1091,1092,1095],"callout",{"color":1063,"icon":13},"info",[458,1065,1066],{},"Cloudflare note:"," Only ",[319,1069,1056],{}," is a standard Cloudflare HTTP header. Other geo fields (",[319,1072,1073],{},"city",[319,1075,1076],{},"region",[319,1078,1079],{},"latitude",", etc.) are properties of ",[319,1082,1083],{},"request.cf",", which is not exposed as headers. For full Cloudflare geo data, write a ",[358,1086,1087],{"href":306},"custom enricher"," that reads ",[319,1090,1083],{},", or use a Workers middleware to copy ",[319,1093,1094],{},"cf"," properties into custom headers.",[444,1097,1099],{"id":1098},"request-size","Request Size",[315,1101,1102,1103,1106],{},"Capture request and response payload sizes from ",[319,1104,1105],{},"Content-Length"," headers.",[315,1108,1109,461,1111],{},[458,1110,460],{},[319,1112,1113],{},"event.requestSize",[369,1115,1118],{"className":371,"code":1116,"filename":1117,"language":374,"meta":375,"style":375},"const enrich = createRequestSizeEnricher()\n","request-size-enricher.ts",[319,1119,1120],{"__ignoreMap":375},[379,1121,1122,1124,1126,1128,1131],{"class":381,"line":382},[379,1123,476],{"class":475},[379,1125,479],{"class":396},[379,1127,482],{"class":389},[379,1129,1130],{"class":485}," createRequestSizeEnricher",[379,1132,489],{"class":396},[315,1134,1135],{},[458,1136,494],{},[369,1138,1141],{"className":371,"code":1139,"filename":1140,"language":374,"meta":375,"style":375},"interface RequestSizeInfo {\n  requestBytes?: number    \u002F\u002F Request Content-Length\n  responseBytes?: number   \u002F\u002F Response Content-Length\n}\n","request-size-types.ts",[319,1142,1143,1152,1164,1176],{"__ignoreMap":375},[379,1144,1145,1147,1150],{"class":381,"line":382},[379,1146,505],{"class":475},[379,1148,1149],{"class":508}," RequestSizeInfo",[379,1151,390],{"class":389},[379,1153,1154,1157,1159,1161],{"class":381,"line":393},[379,1155,1156],{"class":516},"  requestBytes",[379,1158,535],{"class":389},[379,1160,973],{"class":508},[379,1162,1163],{"class":526},"    \u002F\u002F Request Content-Length\n",[379,1165,1166,1169,1171,1173],{"class":381,"line":403},[379,1167,1168],{"class":516},"  responseBytes",[379,1170,535],{"class":389},[379,1172,973],{"class":508},[379,1174,1175],{"class":526},"   \u002F\u002F Response Content-Length\n",[379,1177,1178],{"class":381,"line":411},[379,1179,656],{"class":389},[315,1181,1182],{},[458,1183,661],{},[369,1185,1188],{"className":664,"code":1186,"filename":1187,"language":667,"meta":375,"style":375},"{\n  \"requestSize\": {\n    \"requestBytes\": 1234,\n    \"responseBytes\": 5678\n  }\n}\n","Example wide event: requestSize",[319,1189,1190,1194,1207,1223,1237,1241],{"__ignoreMap":375},[379,1191,1192],{"class":381,"line":382},[379,1193,674],{"class":389},[379,1195,1196,1198,1201,1203,1205],{"class":381,"line":393},[379,1197,679],{"class":389},[379,1199,1200],{"class":475},"requestSize",[379,1202,685],{"class":389},[379,1204,520],{"class":389},[379,1206,390],{"class":389},[379,1208,1209,1211,1214,1216,1218,1221],{"class":381,"line":403},[379,1210,694],{"class":389},[379,1212,1213],{"class":508},"requestBytes",[379,1215,685],{"class":389},[379,1217,520],{"class":389},[379,1219,1220],{"class":729}," 1234",[379,1222,400],{"class":389},[379,1224,1225,1227,1230,1232,1234],{"class":381,"line":411},[379,1226,694],{"class":389},[379,1228,1229],{"class":508},"responseBytes",[379,1231,685],{"class":389},[379,1233,520],{"class":389},[379,1235,1236],{"class":729}," 5678\n",[379,1238,1239],{"class":381,"line":419},[379,1240,846],{"class":389},[379,1242,1243],{"class":381,"line":427},[379,1244,656],{"class":389},[1061,1246,1247,1248,1250,1251,1254],{"color":1063,"icon":13},"This enricher reads the ",[319,1249,1105],{}," header from both the request and response. If the header is missing (e.g., for chunked transfer encoding), the corresponding field will be ",[319,1252,1253],{},"undefined",".",[444,1256,1258],{"id":1257},"trace-context","Trace Context",[315,1260,1261,1262,1265,1266,1106],{},"Extract W3C trace context from the ",[319,1263,1264],{},"traceparent"," and ",[319,1267,1268],{},"tracestate",[315,1270,1271,461,1273,1031,1276,1031,1279],{},[458,1272,460],{},[319,1274,1275],{},"event.traceContext",[319,1277,1278],{},"event.traceId",[319,1280,1281],{},"event.spanId",[369,1283,1286],{"className":371,"code":1284,"filename":1285,"language":374,"meta":375,"style":375},"const enrich = createTraceContextEnricher()\n","trace-context-enricher.ts",[319,1287,1288],{"__ignoreMap":375},[379,1289,1290,1292,1294,1296,1299],{"class":381,"line":382},[379,1291,476],{"class":475},[379,1293,479],{"class":396},[379,1295,482],{"class":389},[379,1297,1298],{"class":485}," createTraceContextEnricher",[379,1300,489],{"class":396},[315,1302,1303],{},[458,1304,494],{},[369,1306,1309],{"className":371,"code":1307,"filename":1308,"language":374,"meta":375,"style":375},"interface TraceContextInfo {\n  traceparent?: string   \u002F\u002F Full traceparent header value\n  tracestate?: string    \u002F\u002F Full tracestate header value\n  traceId?: string       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n  spanId?: string        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n}\n","trace-context-types.ts",[319,1310,1311,1320,1332,1344,1356,1368],{"__ignoreMap":375},[379,1312,1313,1315,1318],{"class":381,"line":382},[379,1314,505],{"class":475},[379,1316,1317],{"class":508}," TraceContextInfo",[379,1319,390],{"class":389},[379,1321,1322,1325,1327,1329],{"class":381,"line":393},[379,1323,1324],{"class":516},"  traceparent",[379,1326,535],{"class":389},[379,1328,523],{"class":508},[379,1330,1331],{"class":526},"   \u002F\u002F Full traceparent header value\n",[379,1333,1334,1337,1339,1341],{"class":381,"line":403},[379,1335,1336],{"class":516},"  tracestate",[379,1338,535],{"class":389},[379,1340,523],{"class":508},[379,1342,1343],{"class":526},"    \u002F\u002F Full tracestate header value\n",[379,1345,1346,1349,1351,1353],{"class":381,"line":411},[379,1347,1348],{"class":516},"  traceId",[379,1350,535],{"class":389},[379,1352,523],{"class":508},[379,1354,1355],{"class":526},"       \u002F\u002F 32-char hex trace ID (parsed from traceparent)\n",[379,1357,1358,1361,1363,1365],{"class":381,"line":419},[379,1359,1360],{"class":516},"  spanId",[379,1362,535],{"class":389},[379,1364,523],{"class":508},[379,1366,1367],{"class":526},"        \u002F\u002F 16-char hex span ID (parsed from traceparent)\n",[379,1369,1370],{"class":381,"line":427},[379,1371,656],{"class":389},[315,1373,1374],{},[458,1375,661],{},[369,1377,1380],{"className":664,"code":1378,"filename":1379,"language":667,"meta":375,"style":375},"{\n  \"traceContext\": {\n    \"traceparent\": \"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01\",\n    \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n    \"spanId\": \"00f067aa0ba902b7\"\n  },\n  \"traceId\": \"4bf92f3577b34da6a3ce929d0e0e4736\",\n  \"spanId\": \"00f067aa0ba902b7\"\n}\n","Example wide event: traceContext",[319,1381,1382,1386,1399,1418,1438,1457,1462,1480,1496],{"__ignoreMap":375},[379,1383,1384],{"class":381,"line":382},[379,1385,674],{"class":389},[379,1387,1388,1390,1393,1395,1397],{"class":381,"line":393},[379,1389,679],{"class":389},[379,1391,1392],{"class":475},"traceContext",[379,1394,685],{"class":389},[379,1396,520],{"class":389},[379,1398,390],{"class":389},[379,1400,1401,1403,1405,1407,1409,1411,1414,1416],{"class":381,"line":403},[379,1402,694],{"class":389},[379,1404,1264],{"class":508},[379,1406,685],{"class":389},[379,1408,520],{"class":389},[379,1410,704],{"class":389},[379,1412,1413],{"class":439},"00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01",[379,1415,685],{"class":389},[379,1417,400],{"class":389},[379,1419,1420,1422,1425,1427,1429,1431,1434,1436],{"class":381,"line":411},[379,1421,694],{"class":389},[379,1423,1424],{"class":508},"traceId",[379,1426,685],{"class":389},[379,1428,520],{"class":389},[379,1430,704],{"class":389},[379,1432,1433],{"class":439},"4bf92f3577b34da6a3ce929d0e0e4736",[379,1435,685],{"class":389},[379,1437,400],{"class":389},[379,1439,1440,1442,1445,1447,1449,1451,1454],{"class":381,"line":419},[379,1441,694],{"class":389},[379,1443,1444],{"class":508},"spanId",[379,1446,685],{"class":389},[379,1448,520],{"class":389},[379,1450,704],{"class":389},[379,1452,1453],{"class":439},"00f067aa0ba902b7",[379,1455,1456],{"class":389},"\"\n",[379,1458,1459],{"class":381,"line":427},[379,1460,1461],{"class":389},"  },\n",[379,1463,1464,1466,1468,1470,1472,1474,1476,1478],{"class":381,"line":843},[379,1465,679],{"class":389},[379,1467,1424],{"class":475},[379,1469,685],{"class":389},[379,1471,520],{"class":389},[379,1473,704],{"class":389},[379,1475,1433],{"class":439},[379,1477,685],{"class":389},[379,1479,400],{"class":389},[379,1481,1482,1484,1486,1488,1490,1492,1494],{"class":381,"line":849},[379,1483,679],{"class":389},[379,1485,1444],{"class":475},[379,1487,685],{"class":389},[379,1489,520],{"class":389},[379,1491,704],{"class":389},[379,1493,1453],{"class":439},[379,1495,1456],{"class":389},[379,1497,1499],{"class":381,"line":1498},9,[379,1500,656],{"class":389},[315,1502,1503,1265,1505,1507],{},[319,1504,1424],{},[319,1506,1444],{}," are also set at the top level of the event for easy querying and correlation.",[1061,1509,1510,1511,1516,1517,1254],{"color":1063,"icon":13},"The traceparent format follows the ",[358,1512,1515],{"href":1513,"rel":1514},"https:\u002F\u002Fwww.w3.org\u002FTR\u002Ftrace-context\u002F",[362],"W3C Trace Context"," specification: ",[319,1518,1519],{},"{version}-{traceId}-{spanId}-{flags}",[444,1521,1523],{"id":1522},"full-setup-example","Full Setup Example",[315,1525,1526],{},"Use all built-in enrichers together. The list of enrichers is identical across frameworks — only the wiring changes.",[1528,1529,1530,1769,2003,2151],"code-group",{},[369,1531,1534],{"className":371,"code":1532,"filename":1533,"language":374,"meta":375,"style":375},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\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","Nuxt \u002F Nitro",[319,1535,1536,1541,1547,1553,1559,1565,1571,1583,1589,1617,1632,1643,1653,1663,1673,1679,1684,1723,1754,1762],{"__ignoreMap":375},[379,1537,1538],{"class":381,"line":382},[379,1539,1540],{"class":526},"\u002F\u002F server\u002Fplugins\u002Fevlog-enrich.ts\n",[379,1542,1543,1545],{"class":381,"line":393},[379,1544,386],{"class":385},[379,1546,390],{"class":389},[379,1548,1549,1551],{"class":381,"line":403},[379,1550,397],{"class":396},[379,1552,400],{"class":389},[379,1554,1555,1557],{"class":381,"line":411},[379,1556,406],{"class":396},[379,1558,400],{"class":389},[379,1560,1561,1563],{"class":381,"line":419},[379,1562,414],{"class":396},[379,1564,400],{"class":389},[379,1566,1567,1569],{"class":381,"line":427},[379,1568,422],{"class":396},[379,1570,400],{"class":389},[379,1572,1573,1575,1577,1579,1581],{"class":381,"line":843},[379,1574,430],{"class":389},[379,1576,433],{"class":385},[379,1578,436],{"class":389},[379,1580,321],{"class":439},[379,1582,442],{"class":389},[379,1584,1585],{"class":381,"line":849},[379,1586,1588],{"emptyLinePlaceholder":1587},true,"\n",[379,1590,1591,1594,1597,1600,1603,1605,1609,1612,1615],{"class":381,"line":1498},[379,1592,1593],{"class":385},"export",[379,1595,1596],{"class":385}," default",[379,1598,1599],{"class":485}," defineNitroPlugin",[379,1601,1602],{"class":396},"(",[379,1604,1602],{"class":389},[379,1606,1608],{"class":1607},"sHdIc","nitroApp",[379,1610,1611],{"class":389},")",[379,1613,1614],{"class":475}," =>",[379,1616,390],{"class":389},[379,1618,1620,1623,1626,1629],{"class":381,"line":1619},10,[379,1621,1622],{"class":475},"  const",[379,1624,1625],{"class":396}," enrichers",[379,1627,1628],{"class":389}," =",[379,1630,1631],{"class":516}," [\n",[379,1633,1635,1638,1641],{"class":381,"line":1634},11,[379,1636,1637],{"class":485},"    createUserAgentEnricher",[379,1639,1640],{"class":516},"()",[379,1642,400],{"class":389},[379,1644,1646,1649,1651],{"class":381,"line":1645},12,[379,1647,1648],{"class":485},"    createGeoEnricher",[379,1650,1640],{"class":516},[379,1652,400],{"class":389},[379,1654,1656,1659,1661],{"class":381,"line":1655},13,[379,1657,1658],{"class":485},"    createRequestSizeEnricher",[379,1660,1640],{"class":516},[379,1662,400],{"class":389},[379,1664,1666,1669,1671],{"class":381,"line":1665},14,[379,1667,1668],{"class":485},"    createTraceContextEnricher",[379,1670,1640],{"class":516},[379,1672,400],{"class":389},[379,1674,1676],{"class":381,"line":1675},15,[379,1677,1678],{"class":516},"  ]\n",[379,1680,1682],{"class":381,"line":1681},16,[379,1683,1588],{"emptyLinePlaceholder":1587},[379,1685,1687,1690,1692,1695,1697,1700,1702,1704,1707,1709,1711,1714,1717,1719,1721],{"class":381,"line":1686},17,[379,1688,1689],{"class":396},"  nitroApp",[379,1691,1254],{"class":389},[379,1693,1694],{"class":396},"hooks",[379,1696,1254],{"class":389},[379,1698,1699],{"class":485},"hook",[379,1701,1602],{"class":516},[379,1703,611],{"class":389},[379,1705,1706],{"class":439},"evlog:enrich",[379,1708,611],{"class":389},[379,1710,744],{"class":389},[379,1712,1713],{"class":389}," (",[379,1715,1716],{"class":1607},"ctx",[379,1718,1611],{"class":389},[379,1720,1614],{"class":475},[379,1722,390],{"class":389},[379,1724,1726,1729,1731,1733,1736,1739,1741,1744,1747,1749,1751],{"class":381,"line":1725},18,[379,1727,1728],{"class":385},"    for",[379,1730,1713],{"class":516},[379,1732,476],{"class":475},[379,1734,1735],{"class":396}," enricher",[379,1737,1738],{"class":389}," of",[379,1740,1625],{"class":396},[379,1742,1743],{"class":516},") ",[379,1745,1746],{"class":485},"enricher",[379,1748,1602],{"class":516},[379,1750,1716],{"class":396},[379,1752,1753],{"class":516},")\n",[379,1755,1757,1760],{"class":381,"line":1756},19,[379,1758,1759],{"class":389},"  }",[379,1761,1753],{"class":516},[379,1763,1765,1767],{"class":381,"line":1764},20,[379,1766,430],{"class":389},[379,1768,1753],{"class":396},[369,1770,1772],{"className":371,"code":1771,"filename":139,"language":374,"meta":375,"style":375},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  enrich: (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  },\n})\n",[319,1773,1774,1779,1799,1805,1811,1817,1823,1829,1841,1845,1856,1864,1872,1880,1888,1893,1897,1934,1950,1967,1991,1996],{"__ignoreMap":375},[379,1775,1776],{"class":381,"line":382},[379,1777,1778],{"class":526},"\u002F\u002F lib\u002Fevlog.ts\n",[379,1780,1781,1783,1785,1788,1790,1792,1794,1797],{"class":381,"line":393},[379,1782,386],{"class":385},[379,1784,538],{"class":389},[379,1786,1787],{"class":396}," createEvlog",[379,1789,558],{"class":389},[379,1791,433],{"class":385},[379,1793,436],{"class":389},[379,1795,1796],{"class":439},"evlog\u002Fnext",[379,1798,442],{"class":389},[379,1800,1801,1803],{"class":381,"line":403},[379,1802,386],{"class":385},[379,1804,390],{"class":389},[379,1806,1807,1809],{"class":381,"line":411},[379,1808,397],{"class":396},[379,1810,400],{"class":389},[379,1812,1813,1815],{"class":381,"line":419},[379,1814,406],{"class":396},[379,1816,400],{"class":389},[379,1818,1819,1821],{"class":381,"line":427},[379,1820,414],{"class":396},[379,1822,400],{"class":389},[379,1824,1825,1827],{"class":381,"line":843},[379,1826,422],{"class":396},[379,1828,400],{"class":389},[379,1830,1831,1833,1835,1837,1839],{"class":381,"line":849},[379,1832,430],{"class":389},[379,1834,433],{"class":385},[379,1836,436],{"class":389},[379,1838,321],{"class":439},[379,1840,442],{"class":389},[379,1842,1843],{"class":381,"line":1498},[379,1844,1588],{"emptyLinePlaceholder":1587},[379,1846,1847,1849,1852,1854],{"class":381,"line":1619},[379,1848,476],{"class":475},[379,1850,1851],{"class":396}," enrichers ",[379,1853,482],{"class":389},[379,1855,1631],{"class":396},[379,1857,1858,1860,1862],{"class":381,"line":1634},[379,1859,397],{"class":485},[379,1861,1640],{"class":396},[379,1863,400],{"class":389},[379,1865,1866,1868,1870],{"class":381,"line":1645},[379,1867,406],{"class":485},[379,1869,1640],{"class":396},[379,1871,400],{"class":389},[379,1873,1874,1876,1878],{"class":381,"line":1655},[379,1875,414],{"class":485},[379,1877,1640],{"class":396},[379,1879,400],{"class":389},[379,1881,1882,1884,1886],{"class":381,"line":1665},[379,1883,422],{"class":485},[379,1885,1640],{"class":396},[379,1887,400],{"class":389},[379,1889,1890],{"class":381,"line":1675},[379,1891,1892],{"class":396},"]\n",[379,1894,1895],{"class":381,"line":1681},[379,1896,1588],{"emptyLinePlaceholder":1587},[379,1898,1899,1901,1904,1906,1909,1911,1914,1916,1919,1921,1924,1926,1928,1930,1932],{"class":381,"line":1686},[379,1900,1593],{"class":385},[379,1902,1903],{"class":475}," const",[379,1905,538],{"class":389},[379,1907,1908],{"class":396}," withEvlog",[379,1910,744],{"class":389},[379,1912,1913],{"class":396}," useLogger",[379,1915,744],{"class":389},[379,1917,1918],{"class":396}," log",[379,1920,744],{"class":389},[379,1922,1923],{"class":396}," createError ",[379,1925,430],{"class":389},[379,1927,1628],{"class":389},[379,1929,1787],{"class":485},[379,1931,1602],{"class":396},[379,1933,674],{"class":389},[379,1935,1936,1939,1941,1943,1946,1948],{"class":381,"line":1725},[379,1937,1938],{"class":516},"  service",[379,1940,520],{"class":389},[379,1942,436],{"class":389},[379,1944,1945],{"class":439},"my-app",[379,1947,611],{"class":389},[379,1949,400],{"class":389},[379,1951,1952,1955,1957,1959,1961,1963,1965],{"class":381,"line":1756},[379,1953,1954],{"class":485},"  enrich",[379,1956,520],{"class":389},[379,1958,1713],{"class":389},[379,1960,1716],{"class":1607},[379,1962,1611],{"class":389},[379,1964,1614],{"class":475},[379,1966,390],{"class":389},[379,1968,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989],{"class":381,"line":1764},[379,1970,1728],{"class":385},[379,1972,1713],{"class":516},[379,1974,476],{"class":475},[379,1976,1735],{"class":396},[379,1978,1738],{"class":389},[379,1980,1625],{"class":396},[379,1982,1743],{"class":516},[379,1984,1746],{"class":485},[379,1986,1602],{"class":516},[379,1988,1716],{"class":396},[379,1990,1753],{"class":516},[379,1992,1994],{"class":381,"line":1993},21,[379,1995,1461],{"class":389},[379,1997,1999,2001],{"class":381,"line":1998},22,[379,2000,430],{"class":389},[379,2002,1753],{"class":396},[369,2004,2007],{"className":371,"code":2005,"filename":2006,"language":374,"meta":375,"style":375},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\napp.use(evlog({ enrichers })) \u002F\u002F Hono \u002F Express \u002F Elysia\n\u002F\u002F await app.register(evlog, { enrichers }) \u002F\u002F Fastify\n\u002F\u002F EvlogModule.forRoot({ enrichers }) \u002F\u002F NestJS\n","Hono \u002F Express \u002F Fastify \u002F Elysia \u002F NestJS",[319,2008,2009,2015,2021,2027,2033,2039,2051,2055,2065,2073,2081,2089,2097,2101,2105,2135,2143],{"__ignoreMap":375},[379,2010,2011,2013],{"class":381,"line":382},[379,2012,386],{"class":385},[379,2014,390],{"class":389},[379,2016,2017,2019],{"class":381,"line":393},[379,2018,397],{"class":396},[379,2020,400],{"class":389},[379,2022,2023,2025],{"class":381,"line":403},[379,2024,406],{"class":396},[379,2026,400],{"class":389},[379,2028,2029,2031],{"class":381,"line":411},[379,2030,414],{"class":396},[379,2032,400],{"class":389},[379,2034,2035,2037],{"class":381,"line":419},[379,2036,422],{"class":396},[379,2038,400],{"class":389},[379,2040,2041,2043,2045,2047,2049],{"class":381,"line":427},[379,2042,430],{"class":389},[379,2044,433],{"class":385},[379,2046,436],{"class":389},[379,2048,321],{"class":439},[379,2050,442],{"class":389},[379,2052,2053],{"class":381,"line":843},[379,2054,1588],{"emptyLinePlaceholder":1587},[379,2056,2057,2059,2061,2063],{"class":381,"line":849},[379,2058,476],{"class":475},[379,2060,1851],{"class":396},[379,2062,482],{"class":389},[379,2064,1631],{"class":396},[379,2066,2067,2069,2071],{"class":381,"line":1498},[379,2068,397],{"class":485},[379,2070,1640],{"class":396},[379,2072,400],{"class":389},[379,2074,2075,2077,2079],{"class":381,"line":1619},[379,2076,406],{"class":485},[379,2078,1640],{"class":396},[379,2080,400],{"class":389},[379,2082,2083,2085,2087],{"class":381,"line":1634},[379,2084,414],{"class":485},[379,2086,1640],{"class":396},[379,2088,400],{"class":389},[379,2090,2091,2093,2095],{"class":381,"line":1645},[379,2092,422],{"class":485},[379,2094,1640],{"class":396},[379,2096,400],{"class":389},[379,2098,2099],{"class":381,"line":1655},[379,2100,1892],{"class":396},[379,2102,2103],{"class":381,"line":1665},[379,2104,1588],{"emptyLinePlaceholder":1587},[379,2106,2107,2110,2112,2115,2117,2120,2122,2125,2127,2129,2132],{"class":381,"line":1675},[379,2108,2109],{"class":396},"app",[379,2111,1254],{"class":389},[379,2113,2114],{"class":485},"use",[379,2116,1602],{"class":396},[379,2118,2119],{"class":485},"evlog",[379,2121,1602],{"class":396},[379,2123,2124],{"class":389},"{",[379,2126,1851],{"class":396},[379,2128,430],{"class":389},[379,2130,2131],{"class":396},")) ",[379,2133,2134],{"class":526},"\u002F\u002F Hono \u002F Express \u002F Elysia\n",[379,2136,2137,2140],{"class":381,"line":1681},[379,2138,2139],{"class":526},"\u002F\u002F await app.register(evlog, { enrichers })",[379,2141,2142],{"class":526}," \u002F\u002F Fastify\n",[379,2144,2145,2148],{"class":381,"line":1686},[379,2146,2147],{"class":526},"\u002F\u002F EvlogModule.forRoot({ enrichers })",[379,2149,2150],{"class":526}," \u002F\u002F NestJS\n",[369,2152,2154],{"className":371,"code":2153,"filename":194,"language":374,"meta":375,"style":375},"\u002F\u002F index.ts\nimport { initLogger } from 'evlog'\nimport {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\ninitLogger({\n  enrichers: [\n    createUserAgentEnricher(),\n    createGeoEnricher(),\n    createRequestSizeEnricher(),\n    createTraceContextEnricher(),\n  ],\n})\n",[319,2155,2156,2161,2180,2186,2192,2198,2204,2210,2222,2226,2235,2244,2252,2260,2268,2276,2283],{"__ignoreMap":375},[379,2157,2158],{"class":381,"line":382},[379,2159,2160],{"class":526},"\u002F\u002F index.ts\n",[379,2162,2163,2165,2167,2170,2172,2174,2176,2178],{"class":381,"line":393},[379,2164,386],{"class":385},[379,2166,538],{"class":389},[379,2168,2169],{"class":396}," initLogger",[379,2171,558],{"class":389},[379,2173,433],{"class":385},[379,2175,436],{"class":389},[379,2177,2119],{"class":439},[379,2179,442],{"class":389},[379,2181,2182,2184],{"class":381,"line":403},[379,2183,386],{"class":385},[379,2185,390],{"class":389},[379,2187,2188,2190],{"class":381,"line":411},[379,2189,397],{"class":396},[379,2191,400],{"class":389},[379,2193,2194,2196],{"class":381,"line":419},[379,2195,406],{"class":396},[379,2197,400],{"class":389},[379,2199,2200,2202],{"class":381,"line":427},[379,2201,414],{"class":396},[379,2203,400],{"class":389},[379,2205,2206,2208],{"class":381,"line":843},[379,2207,422],{"class":396},[379,2209,400],{"class":389},[379,2211,2212,2214,2216,2218,2220],{"class":381,"line":849},[379,2213,430],{"class":389},[379,2215,433],{"class":385},[379,2217,436],{"class":389},[379,2219,321],{"class":439},[379,2221,442],{"class":389},[379,2223,2224],{"class":381,"line":1498},[379,2225,1588],{"emptyLinePlaceholder":1587},[379,2227,2228,2231,2233],{"class":381,"line":1619},[379,2229,2230],{"class":485},"initLogger",[379,2232,1602],{"class":396},[379,2234,674],{"class":389},[379,2236,2237,2240,2242],{"class":381,"line":1634},[379,2238,2239],{"class":516},"  enrichers",[379,2241,520],{"class":389},[379,2243,1631],{"class":396},[379,2245,2246,2248,2250],{"class":381,"line":1645},[379,2247,1637],{"class":485},[379,2249,1640],{"class":396},[379,2251,400],{"class":389},[379,2253,2254,2256,2258],{"class":381,"line":1655},[379,2255,1648],{"class":485},[379,2257,1640],{"class":396},[379,2259,400],{"class":389},[379,2261,2262,2264,2266],{"class":381,"line":1665},[379,2263,1658],{"class":485},[379,2265,1640],{"class":396},[379,2267,400],{"class":389},[379,2269,2270,2272,2274],{"class":381,"line":1675},[379,2271,1668],{"class":485},[379,2273,1640],{"class":396},[379,2275,400],{"class":389},[379,2277,2278,2281],{"class":381,"line":1681},[379,2279,2280],{"class":396},"  ]",[379,2282,400],{"class":389},[379,2284,2285,2287],{"class":381,"line":1686},[379,2286,430],{"class":389},[379,2288,1753],{"class":396},[444,2290,2292],{"id":2291},"next-steps","Next Steps",[2294,2295,2296,2302],"ul",{},[339,2297,2298,2301],{},[358,2299,2300],{"href":306},"Custom Enrichers"," - Write your own enricher",[339,2303,2304,2307],{},[358,2305,213],{"href":2306},"\u002Fadapters\u002Foverview"," - Send enriched events to external services",[2309,2310,2311],"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":375,"searchDepth":393,"depth":393,"links":2313},[2314,2315,2316,2317,2318,2319],{"id":446,"depth":393,"text":447},{"id":866,"depth":393,"text":867},{"id":1098,"depth":393,"text":1099},{"id":1257,"depth":393,"text":1258},{"id":1522,"depth":393,"text":1523},{"id":2291,"depth":393,"text":2292},"Reference for all built-in evlog enrichers. Parse user agents, extract geo data, measure request sizes, and capture trace context automatically.","md",[2323,2326],{"label":2300,"icon":291,"to":306,"color":2324,"variant":2325},"neutral","subtle",{"label":2327,"icon":28,"to":298,"color":2324,"variant":2325},"Enrichers Overview",{},{"title":301,"icon":211},{"title":310,"description":2320},"oIfcu4acgTrvfEW9kACIk9rtXj3mnjGgufVHWD3rMPA",[2333,2335],{"title":41,"path":298,"stem":299,"description":2334,"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":305,"path":306,"stem":307,"description":2336,"icon":291,"children":-1},"Write custom enrichers to add derived context to your wide events. Add deployment metadata, tenant IDs, feature flags, or any computed data.",1777667170999]