[{"data":1,"prerenderedAt":1878},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-performance":253,"-core-concepts-performance-surround":1873},[4,30,110,169,223,239],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"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",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"icon":109},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F14.custom-integration","i-lucide-puzzle",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[115,120,125,130,135,140,145,149,154,159,164],{"title":116,"path":117,"stem":118,"icon":119},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":121,"path":122,"stem":123,"icon":124},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F10.vite-plugin","i-custom-vite",{"title":131,"path":132,"stem":133,"icon":134},"AI SDK Integration","\u002Fcore-concepts\u002Fai-sdk","3.core-concepts\u002F11.ai-sdk","i-lucide-scan-eye",{"title":136,"path":137,"stem":138,"icon":139},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":141,"path":142,"stem":143,"icon":144},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":146,"path":147,"stem":148,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":150,"path":151,"stem":152,"icon":153},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":155,"path":156,"stem":157,"icon":158},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":160,"path":161,"stem":162,"icon":163},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":165,"path":166,"stem":167,"icon":168},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F8.performance","i-lucide-gauge",{"title":170,"path":171,"stem":172,"children":173,"page":29},"Adapters","\u002Fadapters","4.adapters",[174,178,183,188,193,198,203,208,213,218],{"title":36,"path":175,"stem":176,"icon":177},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":179,"path":180,"stem":181,"icon":182},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":184,"path":185,"stem":186,"icon":187},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":189,"path":190,"stem":191,"icon":192},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":194,"path":195,"stem":196,"icon":197},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":199,"path":200,"stem":201,"icon":202},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":204,"path":205,"stem":206,"icon":207},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":209,"path":210,"stem":211,"icon":212},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":214,"path":215,"stem":216,"icon":217},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":219,"path":220,"stem":221,"icon":222},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":224,"path":225,"stem":226,"children":227,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[228,231,235],{"title":36,"path":229,"stem":230,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":232,"path":233,"stem":234,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":236,"path":237,"stem":238,"icon":217},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":240,"path":241,"stem":242,"children":243,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[244,248],{"title":36,"path":245,"stem":246,"icon":247},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":249,"path":250,"stem":251,"icon":252},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":254,"title":165,"body":255,"description":1862,"extension":1863,"links":1864,"meta":1869,"navigation":1870,"path":166,"seo":1871,"stem":167,"__hash__":1872},"docs\u002F3.core-concepts\u002F8.performance.md",{"type":256,"value":257,"toc":1837},"minimark",[258,275,280,288,293,456,475,483,487,490,1005,1008,1012,1015,1033,1047,1057,1063,1069,1073,1076,1146,1152,1156,1159,1220,1237,1241,1244,1311,1318,1376,1383,1439,1451,1455,1502,1505,1540,1542,1617,1621,1671,1675,1679,1698,1701,1740,1744,1747,1766,1770,1833],[259,260,261,262,266,267,274],"p",{},"evlog adds ",[263,264,265],"strong",{},"~3µs of overhead per request"," — that's 0.003ms, orders of magnitude below any HTTP framework or database call. Performance is tracked on every pull request via ",[268,269,273],"a",{"href":270,"rel":271},"https:\u002F\u002Fcodspeed.io",[272],"nofollow","CodSpeed",".",[276,277,279],"h2",{"id":278},"evlog-vs-alternatives","evlog vs alternatives",[259,281,282,283,287],{},"All benchmarks run with JSON output to no-op destinations. pino writes to ",[284,285,286],"code",{},"\u002Fdev\u002Fnull"," (sync), winston writes to a no-op stream, consola uses a no-op reporter, evlog uses silent mode.",[289,290,292],"h3",{"id":291},"results","Results",[294,295,296,319],"table",{},[297,298,299],"thead",{},[300,301,302,306,310,313,316],"tr",{},[303,304,305],"th",{},"Scenario",[303,307,309],{"align":308},"right","evlog",[303,311,312],{"align":308},"pino",[303,314,315],{"align":308},"consola",[303,317,318],{"align":308},"winston",[320,321,322,342,361,380,399,418,437],"tbody",{},[300,323,324,328,331,334,339],{},[325,326,327],"td",{},"Simple string log",[325,329,330],{"align":308},"1.96M ops\u002Fs",[325,332,333],{"align":308},"1.06M",[325,335,336],{"align":308},[263,337,338],{},"2.67M",[325,340,341],{"align":308},"977.6K",[300,343,344,347,350,353,358],{},[325,345,346],{},"Structured (5 fields)",[325,348,349],{"align":308},"1.74M ops\u002Fs",[325,351,352],{"align":308},"705.6K",[325,354,355],{"align":308},[263,356,357],{},"1.75M",[325,359,360],{"align":308},"440.6K",[300,362,363,366,371,374,377],{},[325,364,365],{},"Deep nested log",[325,367,368,370],{"align":308},[263,369,357],{}," ops\u002Fs",[325,372,373],{"align":308},"507.8K",[325,375,376],{"align":308},"1.04M",[325,378,379],{"align":308},"202.5K",[300,381,382,385,390,393,396],{},[325,383,384],{},"Child \u002F scoped logger",[325,386,387,370],{"align":308},[263,388,389],{},"1.85M",[325,391,392],{"align":308},"871.0K",[325,394,395],{"align":308},"272.2K",[325,397,398],{"align":308},"568.5K",[300,400,401,404,409,412,415],{},[325,402,403],{},"Wide event lifecycle",[325,405,406,370],{"align":308},[263,407,408],{},"1.68M",[325,410,411],{"align":308},"209.0K",[325,413,414],{"align":308},"—",[325,416,417],{"align":308},"114.6K",[300,419,420,423,426,429,434],{},[325,421,422],{},"Burst (100 logs)",[325,424,425],{"align":308},"19.1K ops\u002Fs",[325,427,428],{"align":308},"10.0K",[325,430,431],{"align":308},[263,432,433],{},"40.8K",[325,435,436],{"align":308},"7.6K",[300,438,439,442,447,450,453],{},[325,440,441],{},"Logger creation",[325,443,444,370],{"align":308},[263,445,446],{},"20.52M",[325,448,449],{"align":308},"7.36M",[325,451,452],{"align":308},"299.3K",[325,454,455],{"align":308},"5.43M",[259,457,458,459,462,463,466,467,470,471,474],{},"evlog wins ",[263,460,461],{},"4 out of 7"," head-to-head comparisons — and the wins that matter most are decisive: ",[263,464,465],{},"8x faster"," than pino in the wide event lifecycle, ",[263,468,469],{},"2.8x faster"," logger creation, and ",[263,472,473],{},"3.5x faster"," deep nested logging. consola edges ahead on simple strings and burst (it uses a no-op reporter with no serialization), but evlog produces a single correlated event per request where traditional loggers emit N separate lines.",[476,477,479,482],"callout",{"color":478,"icon":13},"info",[263,480,481],{},"Why this matters",": in the wide event lifecycle (the real-world pattern), evlog is 8x faster than pino and 14.7x faster than winston — while sending 75% less data to your log drain and giving you one queryable event instead of 4 disconnected lines.",[289,484,486],{"id":485},"what-is-the-wide-event-lifecycle","What is the \"wide event lifecycle\"?",[259,488,489],{},"This benchmark simulates a real API request:",[491,492,493,759],"code-group",{},[494,495,501],"pre",{"className":496,"code":497,"filename":498,"language":499,"meta":500,"style":500},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const log = createLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout', requestId: 'req_abc' })\nlog.set({ user: { id: 'usr_123', plan: 'pro' } })\nlog.set({ cart: { items: 3, total: 9999 } })\nlog.set({ payment: { method: 'card', last4: '4242' } })\nlog.emit({ status: 200 })\n","evlog — 1 event","typescript","",[284,502,503,582,637,682,733],{"__ignoreMap":500},[504,505,508,512,516,520,524,527,530,534,537,540,544,547,550,553,555,557,560,562,564,567,569,571,574,576,579],"span",{"class":506,"line":507},"line",1,[504,509,511],{"class":510},"spNyl","const",[504,513,515],{"class":514},"sTEyZ"," log ",[504,517,519],{"class":518},"sMK4o","=",[504,521,523],{"class":522},"s2Zo4"," createLogger",[504,525,526],{"class":514},"(",[504,528,529],{"class":518},"{",[504,531,533],{"class":532},"swJcz"," method",[504,535,536],{"class":518},":",[504,538,539],{"class":518}," '",[504,541,543],{"class":542},"sfazB","POST",[504,545,546],{"class":518},"'",[504,548,549],{"class":518},",",[504,551,552],{"class":532}," path",[504,554,536],{"class":518},[504,556,539],{"class":518},[504,558,559],{"class":542},"\u002Fapi\u002Fcheckout",[504,561,546],{"class":518},[504,563,549],{"class":518},[504,565,566],{"class":532}," requestId",[504,568,536],{"class":518},[504,570,539],{"class":518},[504,572,573],{"class":542},"req_abc",[504,575,546],{"class":518},[504,577,578],{"class":518}," }",[504,580,581],{"class":514},")\n",[504,583,585,588,590,593,595,597,600,602,605,608,610,612,615,617,619,622,624,626,629,631,633,635],{"class":506,"line":584},2,[504,586,587],{"class":514},"log",[504,589,274],{"class":518},[504,591,592],{"class":522},"set",[504,594,526],{"class":514},[504,596,529],{"class":518},[504,598,599],{"class":532}," user",[504,601,536],{"class":518},[504,603,604],{"class":518}," {",[504,606,607],{"class":532}," id",[504,609,536],{"class":518},[504,611,539],{"class":518},[504,613,614],{"class":542},"usr_123",[504,616,546],{"class":518},[504,618,549],{"class":518},[504,620,621],{"class":532}," plan",[504,623,536],{"class":518},[504,625,539],{"class":518},[504,627,628],{"class":542},"pro",[504,630,546],{"class":518},[504,632,578],{"class":518},[504,634,578],{"class":518},[504,636,581],{"class":514},[504,638,640,642,644,646,648,650,653,655,657,660,662,666,668,671,673,676,678,680],{"class":506,"line":639},3,[504,641,587],{"class":514},[504,643,274],{"class":518},[504,645,592],{"class":522},[504,647,526],{"class":514},[504,649,529],{"class":518},[504,651,652],{"class":532}," cart",[504,654,536],{"class":518},[504,656,604],{"class":518},[504,658,659],{"class":532}," items",[504,661,536],{"class":518},[504,663,665],{"class":664},"sbssI"," 3",[504,667,549],{"class":518},[504,669,670],{"class":532}," total",[504,672,536],{"class":518},[504,674,675],{"class":664}," 9999",[504,677,578],{"class":518},[504,679,578],{"class":518},[504,681,581],{"class":514},[504,683,685,687,689,691,693,695,698,700,702,704,706,708,711,713,715,718,720,722,725,727,729,731],{"class":506,"line":684},4,[504,686,587],{"class":514},[504,688,274],{"class":518},[504,690,592],{"class":522},[504,692,526],{"class":514},[504,694,529],{"class":518},[504,696,697],{"class":532}," payment",[504,699,536],{"class":518},[504,701,604],{"class":518},[504,703,533],{"class":532},[504,705,536],{"class":518},[504,707,539],{"class":518},[504,709,710],{"class":542},"card",[504,712,546],{"class":518},[504,714,549],{"class":518},[504,716,717],{"class":532}," last4",[504,719,536],{"class":518},[504,721,539],{"class":518},[504,723,724],{"class":542},"4242",[504,726,546],{"class":518},[504,728,578],{"class":518},[504,730,578],{"class":518},[504,732,581],{"class":514},[504,734,736,738,740,743,745,747,750,752,755,757],{"class":506,"line":735},5,[504,737,587],{"class":514},[504,739,274],{"class":518},[504,741,742],{"class":522},"emit",[504,744,526],{"class":514},[504,746,529],{"class":518},[504,748,749],{"class":532}," status",[504,751,536],{"class":518},[504,753,754],{"class":664}," 200",[504,756,578],{"class":518},[504,758,581],{"class":514},[494,760,763],{"className":496,"code":761,"filename":762,"language":499,"meta":500,"style":500},"const child = pinoLogger.child({ method: 'POST', path: '\u002Fapi\u002Fcheckout', requestId: 'req_abc' })\nchild.info({ user: { id: 'usr_123', plan: 'pro' } }, 'user context')\nchild.info({ cart: { items: 3, total: 9999 } }, 'cart context')\nchild.info({ payment: { method: 'card', last4: '4242' } }, 'payment context')\nchild.info({ status: 200 }, 'request complete')\n","pino — 4 log lines",[284,764,765,824,878,923,976],{"__ignoreMap":500},[504,766,767,769,772,774,777,779,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822],{"class":506,"line":507},[504,768,511],{"class":510},[504,770,771],{"class":514}," child ",[504,773,519],{"class":518},[504,775,776],{"class":514}," pinoLogger",[504,778,274],{"class":518},[504,780,781],{"class":522},"child",[504,783,526],{"class":514},[504,785,529],{"class":518},[504,787,533],{"class":532},[504,789,536],{"class":518},[504,791,539],{"class":518},[504,793,543],{"class":542},[504,795,546],{"class":518},[504,797,549],{"class":518},[504,799,552],{"class":532},[504,801,536],{"class":518},[504,803,539],{"class":518},[504,805,559],{"class":542},[504,807,546],{"class":518},[504,809,549],{"class":518},[504,811,566],{"class":532},[504,813,536],{"class":518},[504,815,539],{"class":518},[504,817,573],{"class":542},[504,819,546],{"class":518},[504,821,578],{"class":518},[504,823,581],{"class":514},[504,825,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,869,871,874,876],{"class":506,"line":584},[504,827,781],{"class":514},[504,829,274],{"class":518},[504,831,478],{"class":522},[504,833,526],{"class":514},[504,835,529],{"class":518},[504,837,599],{"class":532},[504,839,536],{"class":518},[504,841,604],{"class":518},[504,843,607],{"class":532},[504,845,536],{"class":518},[504,847,539],{"class":518},[504,849,614],{"class":542},[504,851,546],{"class":518},[504,853,549],{"class":518},[504,855,621],{"class":532},[504,857,536],{"class":518},[504,859,539],{"class":518},[504,861,628],{"class":542},[504,863,546],{"class":518},[504,865,578],{"class":518},[504,867,868],{"class":518}," },",[504,870,539],{"class":518},[504,872,873],{"class":542},"user context",[504,875,546],{"class":518},[504,877,581],{"class":514},[504,879,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,919,921],{"class":506,"line":639},[504,881,781],{"class":514},[504,883,274],{"class":518},[504,885,478],{"class":522},[504,887,526],{"class":514},[504,889,529],{"class":518},[504,891,652],{"class":532},[504,893,536],{"class":518},[504,895,604],{"class":518},[504,897,659],{"class":532},[504,899,536],{"class":518},[504,901,665],{"class":664},[504,903,549],{"class":518},[504,905,670],{"class":532},[504,907,536],{"class":518},[504,909,675],{"class":664},[504,911,578],{"class":518},[504,913,868],{"class":518},[504,915,539],{"class":518},[504,917,918],{"class":542},"cart context",[504,920,546],{"class":518},[504,922,581],{"class":514},[504,924,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,972,974],{"class":506,"line":684},[504,926,781],{"class":514},[504,928,274],{"class":518},[504,930,478],{"class":522},[504,932,526],{"class":514},[504,934,529],{"class":518},[504,936,697],{"class":532},[504,938,536],{"class":518},[504,940,604],{"class":518},[504,942,533],{"class":532},[504,944,536],{"class":518},[504,946,539],{"class":518},[504,948,710],{"class":542},[504,950,546],{"class":518},[504,952,549],{"class":518},[504,954,717],{"class":532},[504,956,536],{"class":518},[504,958,539],{"class":518},[504,960,724],{"class":542},[504,962,546],{"class":518},[504,964,578],{"class":518},[504,966,868],{"class":518},[504,968,539],{"class":518},[504,970,971],{"class":542},"payment context",[504,973,546],{"class":518},[504,975,581],{"class":514},[504,977,978,980,982,984,986,988,990,992,994,996,998,1001,1003],{"class":506,"line":735},[504,979,781],{"class":514},[504,981,274],{"class":518},[504,983,478],{"class":522},[504,985,526],{"class":514},[504,987,529],{"class":518},[504,989,749],{"class":532},[504,991,536],{"class":518},[504,993,754],{"class":664},[504,995,868],{"class":518},[504,997,539],{"class":518},[504,999,1000],{"class":542},"request complete",[504,1002,546],{"class":518},[504,1004,581],{"class":514},[259,1006,1007],{},"Same CPU cost, but evlog gives you everything in one place.",[276,1009,1011],{"id":1010},"why-is-evlog-faster","Why is evlog faster?",[259,1013,1014],{},"The numbers above aren't magic — they come from deliberate architectural choices:",[259,1016,1017,1020,1021,1024,1025,1028,1029,1032],{},[263,1018,1019],{},"In-place mutations, not copies."," ",[284,1022,1023],{},"log.set()"," writes directly into the context object via a recursive ",[284,1026,1027],{},"mergeInto"," function. Other loggers clone objects on every call (object spread, ",[284,1030,1031],{},"Object.assign","). evlog never allocates intermediate objects during context accumulation.",[259,1034,1035,1038,1039,1042,1043,1046],{},[263,1036,1037],{},"No serialization until drain."," Context stays as plain JavaScript objects throughout the request lifecycle. ",[284,1040,1041],{},"JSON.stringify"," runs exactly once, at emit time. Traditional loggers serialize on every ",[284,1044,1045],{},".info()"," call — that's 4x serialization for 4 log lines.",[259,1048,1049,1052,1053,1056],{},[263,1050,1051],{},"Lazy allocation."," Timestamps, sampling context, and override objects are only created when actually needed. If tail sampling is disabled (the common case), its context object is never allocated. The ",[284,1054,1055],{},"Date"," instance used for ISO timestamps is reused across calls.",[259,1058,1059,1062],{},[263,1060,1061],{},"One event, not N lines."," For a typical request, pino emits 4+ JSON lines that all need serializing, transporting, and indexing. evlog emits one. That's 75% less work for your log drain, fewer bytes on the wire, and one row to query instead of four.",[259,1064,1065,1068],{},[263,1066,1067],{},"RegExp caching."," Glob patterns (used in sampling and route matching) are compiled once and cached. Repeated evaluations hit the cache instead of recompiling.",[276,1070,1072],{"id":1071},"real-world-overhead","Real-world overhead",[259,1074,1075],{},"For a typical API request:",[294,1077,1078,1088],{},[297,1079,1080],{},[300,1081,1082,1085],{},[303,1083,1084],{},"Component",[303,1086,1087],{"align":308},"Cost",[320,1089,1090,1097,1109,1119,1126,1134],{},[300,1091,1092,1094],{},[325,1093,441],{},[325,1095,1096],{"align":308},"49ns",[300,1098,1099,1106],{},[325,1100,1101,1102,1105],{},"3x ",[284,1103,1104],{},"set()"," calls",[325,1107,1108],{"align":308},"63ns",[300,1110,1111,1116],{},[325,1112,1113],{},[284,1114,1115],{},"emit()",[325,1117,1118],{"align":308},"570ns",[300,1120,1121,1123],{},[325,1122,150],{},[325,1124,1125],{"align":308},"23ns",[300,1127,1128,1131],{},[325,1129,1130],{},"Enricher pipeline",[325,1132,1133],{"align":308},"2.05µs",[300,1135,1136,1141],{},[325,1137,1138],{},[263,1139,1140],{},"Total",[325,1142,1143],{"align":308},[263,1144,1145],{},"~2.8µs",[259,1147,1148,1149,274],{},"For context, a database query takes 1-50ms, an HTTP call takes 10-500ms. evlog's overhead is ",[263,1150,1151],{},"invisible",[276,1153,1155],{"id":1154},"bundle-size","Bundle size",[259,1157,1158],{},"Every entry point is tree-shakeable. You only pay for what you import.",[294,1160,1161,1171],{},[297,1162,1163],{},[300,1164,1165,1168],{},[303,1166,1167],{},"Entry",[303,1169,1170],{"align":308},"Gzip",[320,1172,1173,1181,1189,1197,1205,1213],{},[300,1174,1175,1178],{},[325,1176,1177],{},"logger",[325,1179,1180],{"align":308},"3.78 kB",[300,1182,1183,1186],{},[325,1184,1185],{},"utils",[325,1187,1188],{"align":308},"1.41 kB",[300,1190,1191,1194],{},[325,1192,1193],{},"error",[325,1195,1196],{"align":308},"1.21 kB",[300,1198,1199,1202],{},[325,1200,1201],{},"enrichers",[325,1203,1204],{"align":308},"1.92 kB",[300,1206,1207,1210],{},[325,1208,1209],{},"pipeline",[325,1211,1212],{"align":308},"1.35 kB",[300,1214,1215,1218],{},[325,1216,1217],{},"browser",[325,1219,1196],{"align":308},[259,1221,1222,1223,1225,1226,1228,1229,1232,1233,1236],{},"A typical Nuxt setup loads ",[284,1224,1177],{}," + ",[284,1227,1185],{}," — about ",[263,1230,1231],{},"5.2 kB gzip",". Bundle size is tracked on every PR and compared against the ",[284,1234,1235],{},"main"," baseline.",[276,1238,1240],{"id":1239},"detailed-benchmarks","Detailed benchmarks",[289,1242,441],{"id":1243},"logger-creation",[294,1245,1246,1259],{},[297,1247,1248],{},[300,1249,1250,1253,1256],{},[303,1251,1252],{},"Operation",[303,1254,1255],{"align":308},"ops\u002Fsec",[303,1257,1258],{"align":308},"Mean",[320,1260,1261,1275,1287,1299],{},[300,1262,1263,1269,1272],{},[325,1264,1265,1268],{},[284,1266,1267],{},"createLogger()"," (no context)",[325,1270,1271],{"align":308},"19.35M",[325,1273,1274],{"align":308},"52ns",[300,1276,1277,1282,1285],{},[325,1278,1279,1281],{},[284,1280,1267],{}," (shallow context)",[325,1283,1284],{"align":308},"20.38M",[325,1286,1096],{"align":308},[300,1288,1289,1294,1297],{},[325,1290,1291,1293],{},[284,1292,1267],{}," (nested context)",[325,1295,1296],{"align":308},"19.10M",[325,1298,1274],{"align":308},[300,1300,1301,1306,1309],{},[325,1302,1303],{},[284,1304,1305],{},"createRequestLogger()",[325,1307,1308],{"align":308},"19.27M",[325,1310,1274],{"align":308},[289,1312,1314,1315,1317],{"id":1313},"context-accumulation-logset","Context accumulation (",[284,1316,1023],{},")",[294,1319,1320,1330],{},[297,1321,1322],{},[300,1323,1324,1326,1328],{},[303,1325,1252],{},[303,1327,1255],{"align":308},[303,1329,1258],{"align":308},[320,1331,1332,1343,1354,1365],{},[300,1333,1334,1337,1340],{},[325,1335,1336],{},"Shallow merge (3 fields)",[325,1338,1339],{"align":308},"9.54M",[325,1341,1342],{"align":308},"105ns",[300,1344,1345,1348,1351],{},[325,1346,1347],{},"Shallow merge (10 fields)",[325,1349,1350],{"align":308},"4.78M",[325,1352,1353],{"align":308},"209ns",[300,1355,1356,1359,1362],{},[325,1357,1358],{},"Deep nested merge",[325,1360,1361],{"align":308},"8.40M",[325,1363,1364],{"align":308},"119ns",[300,1366,1367,1370,1373],{},[325,1368,1369],{},"4 sequential calls",[325,1371,1372],{"align":308},"7.53M",[325,1374,1375],{"align":308},"133ns",[289,1377,1379,1380,1317],{"id":1378},"event-emission-logemit","Event emission (",[284,1381,1382],{},"log.emit()",[294,1384,1385,1395],{},[297,1386,1387],{},[300,1388,1389,1391,1393],{},[303,1390,1252],{},[303,1392,1255],{"align":308},[303,1394,1258],{"align":308},[320,1396,1397,1406,1417,1428],{},[300,1398,1399,1402,1404],{},[325,1400,1401],{},"Emit minimal event",[325,1403,357],{"align":308},[325,1405,1118],{"align":308},[300,1407,1408,1411,1414],{},[325,1409,1410],{},"Emit with context",[325,1412,1413],{"align":308},"1.76M",[325,1415,1416],{"align":308},"569ns",[300,1418,1419,1422,1425],{},[325,1420,1421],{},"Full lifecycle (create + 3 sets + emit)",[325,1423,1424],{"align":308},"1.69M",[325,1426,1427],{"align":308},"592ns",[300,1429,1430,1433,1436],{},[325,1431,1432],{},"Emit with error",[325,1434,1435],{"align":308},"66.1K",[325,1437,1438],{"align":308},"15.13µs",[476,1440,1443,1446,1447,1450],{"color":1441,"icon":1442},"amber","i-lucide-triangle-alert",[284,1444,1445],{},"emit with error"," is slower because ",[284,1448,1449],{},"Error.captureStackTrace()"," is an expensive V8 operation (~15µs). This only triggers when errors are thrown.",[289,1452,1454],{"id":1453},"payload-scaling","Payload scaling",[294,1456,1457,1468],{},[297,1458,1459],{},[300,1460,1461,1464,1466],{},[303,1462,1463],{},"Payload",[303,1465,1255],{"align":308},[303,1467,1258],{"align":308},[320,1469,1470,1480,1491],{},[300,1471,1472,1475,1477],{},[325,1473,1474],{},"Small (2 fields)",[325,1476,1413],{"align":308},[325,1478,1479],{"align":308},"567ns",[300,1481,1482,1485,1488],{},[325,1483,1484],{},"Medium (50 fields)",[325,1486,1487],{"align":308},"555.5K",[325,1489,1490],{"align":308},"1.80µs",[300,1492,1493,1496,1499],{},[325,1494,1495],{},"Large (200 nested fields)",[325,1497,1498],{"align":308},"115.7K",[325,1500,1501],{"align":308},"8.65µs",[289,1503,150],{"id":1504},"sampling",[294,1506,1507,1517],{},[297,1508,1509],{},[300,1510,1511,1513,1515],{},[303,1512,1252],{},[303,1514,1255],{"align":308},[303,1516,1258],{"align":308},[320,1518,1519,1529],{},[300,1520,1521,1524,1527],{},[325,1522,1523],{},"Tail sampling (shouldKeep)",[325,1525,1526],{"align":308},"43.76M",[325,1528,1125],{"align":308},[300,1530,1531,1534,1537],{},[325,1532,1533],{},"Full emit with head + tail",[325,1535,1536],{"align":308},"7.57M",[325,1538,1539],{"align":308},"132ns",[289,1541,224],{"id":1201},[294,1543,1544,1555],{},[297,1545,1546],{},[300,1547,1548,1551,1553],{},[303,1549,1550],{},"Enricher",[303,1552,1255],{"align":308},[303,1554,1258],{"align":308},[320,1556,1557,1568,1579,1590,1601],{},[300,1558,1559,1562,1565],{},[325,1560,1561],{},"User Agent (Chrome)",[325,1563,1564],{"align":308},"2.57M",[325,1566,1567],{"align":308},"389ns",[300,1569,1570,1573,1576],{},[325,1571,1572],{},"Geo (Vercel)",[325,1574,1575],{"align":308},"5.32M",[325,1577,1578],{"align":308},"188ns",[300,1580,1581,1584,1587],{},[325,1582,1583],{},"Request Size",[325,1585,1586],{"align":308},"24.16M",[325,1588,1589],{"align":308},"41ns",[300,1591,1592,1595,1598],{},[325,1593,1594],{},"Trace Context",[325,1596,1597],{"align":308},"4.86M",[325,1599,1600],{"align":308},"206ns",[300,1602,1603,1608,1613],{},[325,1604,1605],{},[263,1606,1607],{},"All combined",[325,1609,1610],{"align":308},[263,1611,1612],{},"487.2K",[325,1614,1615],{"align":308},[263,1616,1133],{},[289,1618,1620],{"id":1619},"error-handling","Error handling",[294,1622,1623,1633],{},[297,1624,1625],{},[300,1626,1627,1629,1631],{},[303,1628,1252],{},[303,1630,1255],{"align":308},[303,1632,1258],{"align":308},[320,1634,1635,1648,1660],{},[300,1636,1637,1642,1645],{},[325,1638,1639],{},[284,1640,1641],{},"createError()",[325,1643,1644],{"align":308},"226.9K",[325,1646,1647],{"align":308},"4.41µs",[300,1649,1650,1655,1658],{},[325,1651,1652],{},[284,1653,1654],{},"parseError()",[325,1656,1657],{"align":308},"43.92M",[325,1659,1125],{"align":308},[300,1661,1662,1665,1668],{},[325,1663,1664],{},"Round-trip (create + parse)",[325,1666,1667],{"align":308},"227.6K",[325,1669,1670],{"align":308},"4.39µs",[276,1672,1674],{"id":1673},"methodology-trust","Methodology & trust",[289,1676,1678],{"id":1677},"can-you-trust-these-numbers","Can you trust these numbers?",[259,1680,1681,1682,1685,1686,1689,1690,1697],{},"Every benchmark in this page is ",[263,1683,1684],{},"open source"," and ",[263,1687,1688],{},"reproducible",". The benchmark files live in ",[268,1691,1694],{"href":1692,"rel":1693},"https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fpackages\u002Fevlog\u002Fbench",[272],[284,1695,1696],{},"packages\u002Fevlog\u002Fbench\u002F"," — you can read the exact code, run it on your machine, and verify the results.",[259,1699,1700],{},"All libraries are tested under the same conditions:",[1702,1703,1704,1711,1717,1734],"ul",{},[1705,1706,1707,1710],"li",{},[263,1708,1709],{},"Same output mode",": JSON to a no-op destination (no disk or network I\u002FO measured)",[1705,1712,1713,1716],{},[263,1714,1715],{},"Same warmup",": each benchmark runs for 500ms after JIT stabilization",[1705,1718,1719,1722,1723,1728,1729],{},[263,1720,1721],{},"Same tooling",": ",[268,1724,1727],{"href":1725,"rel":1726},"https:\u002F\u002Fvitest.dev\u002Fguide\u002Ffeatures#benchmarking",[272],"Vitest bench"," powered by ",[268,1730,1733],{"href":1731,"rel":1732},"https:\u002F\u002Fgithub.com\u002Ftinylibs\u002Ftinybench",[272],"tinybench",[1705,1735,1736,1739],{},[263,1737,1738],{},"Same machine",": when comparing libraries, all benchmarks run in the same process on the same hardware",[289,1741,1743],{"id":1742},"ci-regression-tracking","CI regression tracking",[259,1745,1746],{},"Performance regressions are tracked on every pull request via two systems:",[1702,1748,1749,1757],{},[1705,1750,1751,1756],{},[263,1752,1753],{},[268,1754,273],{"href":270,"rel":1755},[272]," runs all benchmarks using CPU instruction counting (not wall-clock timing). This eliminates noise from shared CI runners and produces deterministic, reproducible results. Regressions are flagged directly on the PR.",[1705,1758,1759,1762,1763,1765],{},[263,1760,1761],{},"Bundle size comparison"," measures all entry points against the ",[284,1764,1235],{}," baseline and posts a size delta report as a PR comment.",[289,1767,1769],{"id":1768},"run-it-yourself","Run it yourself",[494,1771,1775],{"className":1772,"code":1773,"language":1774,"meta":500,"style":500},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cd packages\u002Fevlog\n\nbun run bench                          # all benchmarks\nbunx vitest bench bench\u002Fcomparison\u002F    # vs alternatives only\nbun bench\u002Fscripts\u002Fsize.ts              # bundle size\n","bash",[284,1776,1777,1785,1791,1807,1823],{"__ignoreMap":500},[504,1778,1779,1782],{"class":506,"line":507},[504,1780,1781],{"class":522},"cd",[504,1783,1784],{"class":542}," packages\u002Fevlog\n",[504,1786,1787],{"class":506,"line":584},[504,1788,1790],{"emptyLinePlaceholder":1789},true,"\n",[504,1792,1793,1797,1800,1803],{"class":506,"line":639},[504,1794,1796],{"class":1795},"sBMFI","bun",[504,1798,1799],{"class":542}," run",[504,1801,1802],{"class":542}," bench",[504,1804,1806],{"class":1805},"sHwdD","                          # all benchmarks\n",[504,1808,1809,1812,1815,1817,1820],{"class":506,"line":684},[504,1810,1811],{"class":1795},"bunx",[504,1813,1814],{"class":542}," vitest",[504,1816,1802],{"class":542},[504,1818,1819],{"class":542}," bench\u002Fcomparison\u002F",[504,1821,1822],{"class":1805},"    # vs alternatives only\n",[504,1824,1825,1827,1830],{"class":506,"line":735},[504,1826,1796],{"class":1795},[504,1828,1829],{"class":542}," bench\u002Fscripts\u002Fsize.ts",[504,1831,1832],{"class":1805},"              # bundle size\n",[1834,1835,1836],"style",{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .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}",{"title":500,"searchDepth":584,"depth":584,"links":1838},[1839,1843,1844,1845,1846,1857],{"id":278,"depth":584,"text":279,"children":1840},[1841,1842],{"id":291,"depth":639,"text":292},{"id":485,"depth":639,"text":486},{"id":1010,"depth":584,"text":1011},{"id":1071,"depth":584,"text":1072},{"id":1154,"depth":584,"text":1155},{"id":1239,"depth":584,"text":1240,"children":1847},[1848,1849,1851,1853,1854,1855,1856],{"id":1243,"depth":639,"text":441},{"id":1313,"depth":639,"text":1850},"Context accumulation (log.set())",{"id":1378,"depth":639,"text":1852},"Event emission (log.emit())",{"id":1453,"depth":639,"text":1454},{"id":1504,"depth":639,"text":150},{"id":1201,"depth":639,"text":224},{"id":1619,"depth":639,"text":1620},{"id":1673,"depth":584,"text":1674,"children":1858},[1859,1860,1861],{"id":1677,"depth":639,"text":1678},{"id":1742,"depth":639,"text":1743},{"id":1768,"depth":639,"text":1769},"evlog adds ~3µs per request. Faster than pino, consola, and winston in most scenarios while emitting richer, more useful events.","md",[1865,1868],{"label":150,"icon":153,"to":151,"color":1866,"variant":1867},"neutral","subtle",{"label":160,"icon":163,"to":161,"color":1866,"variant":1867},{},{"icon":168},{"title":165,"description":1862},"u3U1fpbikP5P7pxksvyoU6nHtswV66lLB77td0Bu32c",[1874,1876],{"title":160,"path":161,"stem":162,"description":1875,"icon":163,"children":-1},"Complete reference for all evlog configuration options including global logger settings, middleware options, environment context, and framework-specific overrides.",{"title":36,"path":175,"stem":176,"description":1877,"icon":177,"children":-1},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.",1773651972307]