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