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