[{"data":1,"prerenderedAt":1698},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-vite-plugin":308,"-core-concepts-vite-plugin-surround":1693},[4,35,80,124,212,292],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,75],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":66,"path":67,"stem":68,"icon":69},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":71,"path":72,"stem":73,"icon":74},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":76,"path":77,"stem":78,"icon":79},"Audit Logs","\u002Flogging\u002Faudit","2.logging\u002F7.audit","i-lucide-shield-check",{"title":81,"path":82,"stem":83,"children":84,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[85,90,95,100,105,109,114,119],{"title":86,"path":87,"stem":88,"icon":89},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":91,"path":92,"stem":93,"icon":94},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":96,"path":97,"stem":98,"icon":99},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":101,"path":102,"stem":103,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":79},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":110,"path":111,"stem":112,"icon":113},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":115,"path":116,"stem":117,"icon":118},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":120,"path":121,"stem":122,"icon":123},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":125,"path":126,"stem":127,"children":128,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[129,133,138,143,148,153,158,163,168,173,178,183,188,193,197,202,207],{"title":41,"path":130,"stem":131,"icon":132},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"icon":137},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":139,"path":140,"stem":141,"icon":142},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":144,"path":145,"stem":146,"icon":147},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":149,"path":150,"stem":151,"icon":152},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":154,"path":155,"stem":156,"icon":157},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":159,"path":160,"stem":161,"icon":162},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":164,"path":165,"stem":166,"icon":167},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":169,"path":170,"stem":171,"icon":172},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":174,"path":175,"stem":176,"icon":177},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":179,"path":180,"stem":181,"icon":182},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":184,"path":185,"stem":186,"icon":187},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":189,"path":190,"stem":191,"icon":192},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":194,"path":195,"stem":196,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":198,"path":199,"stem":200,"icon":201},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":203,"path":204,"stem":205,"icon":206},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":208,"path":209,"stem":210,"icon":211},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":213,"path":214,"stem":215,"children":216,"page":34},"Adapters","\u002Fadapters","6.adapters",[217,257,272],{"title":218,"path":219,"stem":220,"children":221,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[222,227,232,237,242,247,252],{"title":223,"path":224,"stem":225,"icon":226},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":228,"path":229,"stem":230,"icon":231},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":233,"path":234,"stem":235,"icon":236},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":238,"path":239,"stem":240,"icon":241},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":243,"path":244,"stem":245,"icon":246},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":248,"path":249,"stem":250,"icon":251},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":253,"path":254,"stem":255,"icon":256},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":258,"path":259,"stem":260,"children":261,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[262,267],{"title":263,"path":264,"stem":265,"icon":266},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":268,"path":269,"stem":270,"icon":271},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":273,"path":274,"stem":275,"children":276,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[277,282,287],{"title":278,"path":279,"stem":280,"icon":281},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":283,"path":284,"stem":285,"icon":286},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":288,"path":289,"stem":290,"icon":291},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom","i-lucide-code",{"title":293,"path":294,"stem":295,"children":296,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[297,300,304],{"title":41,"path":298,"stem":299,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":301,"path":302,"stem":303,"icon":211},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":305,"path":306,"stem":307,"icon":291},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":309,"title":115,"body":310,"description":1680,"extension":1681,"links":1682,"meta":1689,"navigation":1690,"path":116,"seo":1691,"stem":117,"__hash__":1692},"docs\u002F3.core-concepts\u002F6.vite-plugin.md",{"type":311,"value":312,"toc":1663},"minimark",[313,322,343,347,352,423,430,595,598,616,620,624,646,774,795,799,805,877,888,892,899,956,959,1005,1008,1061,1065,1077,1121,1124,1143,1164,1168,1186,1287,1290,1499,1503,1514,1637,1641,1659],[314,315,316,317,321],"p",{},"The ",[318,319,320],"code",{},"evlog\u002Fvite"," plugin adds build-time DX features to any Vite-based project. It works with SvelteKit, Hono, Express, Fastify, Elysia, and any framework using Vite as its build tool.",[323,324,326,330,331,334,335,338,339,342],"callout",{"color":325,"icon":13},"info",[327,328,329],"strong",{},"Nuxt users",": These features are already integrated into the ",[318,332,333],{},"evlog\u002Fnuxt"," module via ",[318,336,337],{},"strip"," and ",[318,340,341],{},"sourceLocation"," options. You don't need to install the Vite plugin separately.",[344,345,20],"h2",{"id":346},"quick-start",[348,349,351],"h3",{"id":350},"_1-install","1. Install",[353,354,355,380,394,408],"code-group",{},[356,357,363],"pre",{"className":358,"code":359,"filename":360,"language":361,"meta":362,"style":362},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[318,364,365],{"__ignoreMap":362},[366,367,370,373,377],"span",{"class":368,"line":369},"line",1,[366,371,360],{"class":372},"sBMFI",[366,374,376],{"class":375},"sfazB"," add",[366,378,379],{"class":375}," evlog\n",[356,381,384],{"className":358,"code":382,"filename":383,"language":361,"meta":362,"style":362},"bun add evlog\n","bun",[318,385,386],{"__ignoreMap":362},[366,387,388,390,392],{"class":368,"line":369},[366,389,383],{"class":372},[366,391,376],{"class":375},[366,393,379],{"class":375},[356,395,398],{"className":358,"code":396,"filename":397,"language":361,"meta":362,"style":362},"yarn add evlog\n","yarn",[318,399,400],{"__ignoreMap":362},[366,401,402,404,406],{"class":368,"line":369},[366,403,397],{"class":372},[366,405,376],{"class":375},[366,407,379],{"class":375},[356,409,412],{"className":358,"code":410,"filename":411,"language":361,"meta":362,"style":362},"npm install evlog\n","npm",[318,413,414],{"__ignoreMap":362},[366,415,416,418,421],{"class":368,"line":369},[366,417,411],{"class":372},[366,419,420],{"class":375}," install",[366,422,379],{"class":375},[348,424,426,427],{"id":425},"_2-add-to-viteconfigts","2. Add to ",[318,428,429],{},"vite.config.ts",[356,431,435],{"className":432,"code":433,"filename":429,"language":434,"meta":362,"style":362},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineConfig } from 'vite'\nimport evlog from 'evlog\u002Fvite'\n\nexport default defineConfig({\n  plugins: [\n    evlog({\n      service: 'my-api',\n      environment: 'production',\n    }),\n  ],\n})\n","typescript",[318,436,437,466,483,490,508,521,531,550,567,578,586],{"__ignoreMap":362},[366,438,439,443,447,451,454,457,460,463],{"class":368,"line":369},[366,440,442],{"class":441},"s7zQu","import",[366,444,446],{"class":445},"sMK4o"," {",[366,448,450],{"class":449},"sTEyZ"," defineConfig",[366,452,453],{"class":445}," }",[366,455,456],{"class":441}," from",[366,458,459],{"class":445}," '",[366,461,462],{"class":375},"vite",[366,464,465],{"class":445},"'\n",[366,467,469,471,474,477,479,481],{"class":368,"line":468},2,[366,470,442],{"class":441},[366,472,473],{"class":449}," evlog ",[366,475,476],{"class":441},"from",[366,478,459],{"class":445},[366,480,320],{"class":375},[366,482,465],{"class":445},[366,484,486],{"class":368,"line":485},3,[366,487,489],{"emptyLinePlaceholder":488},true,"\n",[366,491,493,496,499,502,505],{"class":368,"line":492},4,[366,494,495],{"class":441},"export",[366,497,498],{"class":441}," default",[366,500,450],{"class":501},"s2Zo4",[366,503,504],{"class":449},"(",[366,506,507],{"class":445},"{\n",[366,509,511,515,518],{"class":368,"line":510},5,[366,512,514],{"class":513},"swJcz","  plugins",[366,516,517],{"class":445},":",[366,519,520],{"class":449}," [\n",[366,522,524,527,529],{"class":368,"line":523},6,[366,525,526],{"class":501},"    evlog",[366,528,504],{"class":449},[366,530,507],{"class":445},[366,532,534,537,539,541,544,547],{"class":368,"line":533},7,[366,535,536],{"class":513},"      service",[366,538,517],{"class":445},[366,540,459],{"class":445},[366,542,543],{"class":375},"my-api",[366,545,546],{"class":445},"'",[366,548,549],{"class":445},",\n",[366,551,553,556,558,560,563,565],{"class":368,"line":552},8,[366,554,555],{"class":513},"      environment",[366,557,517],{"class":445},[366,559,459],{"class":445},[366,561,562],{"class":375},"production",[366,564,546],{"class":445},[366,566,549],{"class":445},[366,568,570,573,576],{"class":368,"line":569},9,[366,571,572],{"class":445},"    }",[366,574,575],{"class":449},")",[366,577,549],{"class":445},[366,579,581,584],{"class":368,"line":580},10,[366,582,583],{"class":449},"  ]",[366,585,549],{"class":445},[366,587,589,592],{"class":368,"line":588},11,[366,590,591],{"class":445},"}",[366,593,594],{"class":449},")\n",[314,596,597],{},"That's it. The plugin automatically:",[599,600,601,609],"ul",{},[602,603,604,605,608],"li",{},"Initializes the logger at compile time (no ",[318,606,607],{},"initLogger()"," call needed)",[602,610,611,612,615],{},"Strips ",[318,613,614],{},"log.debug()"," calls from production builds",[344,617,619],{"id":618},"features","Features",[348,621,623],{"id":622},"auto-initialization","Auto-initialization",[314,625,626,627,630,631,634,635,638,639,642,643,645],{},"The plugin injects logger configuration at compile time via Vite's ",[318,628,629],{},"define"," hook. Your code can use ",[318,632,633],{},"log",", ",[318,636,637],{},"createLogger()",", and ",[318,640,641],{},"createRequestLogger()"," immediately, no ",[318,644,607],{}," call required.",[356,647,650],{"className":432,"code":648,"filename":649,"language":434,"meta":362,"style":362},"\u002F\u002F Before (manual setup)\nimport { initLogger, createLogger } from 'evlog'\ninitLogger({ env: { service: 'my-api' } })\nconst log = createLogger()\n\n\u002F\u002F After (with Vite plugin)\nimport { createLogger } from 'evlog'\nconst log = createLogger()\n","logger-setup.ts",[318,651,652,658,684,718,735,739,744,762],{"__ignoreMap":362},[366,653,654],{"class":368,"line":369},[366,655,657],{"class":656},"sHwdD","\u002F\u002F Before (manual setup)\n",[366,659,660,662,664,667,670,673,675,677,679,682],{"class":368,"line":468},[366,661,442],{"class":441},[366,663,446],{"class":445},[366,665,666],{"class":449}," initLogger",[366,668,669],{"class":445},",",[366,671,672],{"class":449}," createLogger",[366,674,453],{"class":445},[366,676,456],{"class":441},[366,678,459],{"class":445},[366,680,681],{"class":375},"evlog",[366,683,465],{"class":445},[366,685,686,689,691,694,697,699,701,704,706,708,710,712,714,716],{"class":368,"line":485},[366,687,688],{"class":501},"initLogger",[366,690,504],{"class":449},[366,692,693],{"class":445},"{",[366,695,696],{"class":513}," env",[366,698,517],{"class":445},[366,700,446],{"class":445},[366,702,703],{"class":513}," service",[366,705,517],{"class":445},[366,707,459],{"class":445},[366,709,543],{"class":375},[366,711,546],{"class":445},[366,713,453],{"class":445},[366,715,453],{"class":445},[366,717,594],{"class":449},[366,719,720,724,727,730,732],{"class":368,"line":492},[366,721,723],{"class":722},"spNyl","const",[366,725,726],{"class":449}," log ",[366,728,729],{"class":445},"=",[366,731,672],{"class":501},[366,733,734],{"class":449},"()\n",[366,736,737],{"class":368,"line":510},[366,738,489],{"emptyLinePlaceholder":488},[366,740,741],{"class":368,"line":523},[366,742,743],{"class":656},"\u002F\u002F After (with Vite plugin)\n",[366,745,746,748,750,752,754,756,758,760],{"class":368,"line":533},[366,747,442],{"class":441},[366,749,446],{"class":445},[366,751,672],{"class":449},[366,753,453],{"class":445},[366,755,456],{"class":441},[366,757,459],{"class":445},[366,759,681],{"class":375},[366,761,465],{"class":445},[366,763,764,766,768,770,772],{"class":368,"line":552},[366,765,723],{"class":722},[366,767,726],{"class":449},[366,769,729],{"class":445},[366,771,672],{"class":501},[366,773,734],{"class":449},[314,775,316,776,634,779,634,782,634,785,634,788,638,791,794],{},[318,777,778],{},"service",[318,780,781],{},"environment",[318,783,784],{},"pretty",[318,786,787],{},"silent",[318,789,790],{},"enabled",[318,792,793],{},"sampling"," options are serialized and injected at build time.",[348,796,798],{"id":797},"debug-stripping","Debug stripping",[314,800,801,802,804],{},"By default, all ",[318,803,614],{}," calls are removed from production builds. This is a compile-time transformation, the calls are completely eliminated from the output, not just silenced.",[356,806,808],{"className":432,"code":807,"filename":429,"language":434,"meta":362,"style":362},"evlog({\n  service: 'my-api',\n  \u002F\u002F Default: strip debug logs in production builds\n  \u002F\u002F strip: ['debug'],\n\n  \u002F\u002F Strip debug and info in production:\n  \u002F\u002F strip: ['debug', 'info'],\n\n  \u002F\u002F Disable stripping:\n  \u002F\u002F strip: [],\n})\n",[318,809,810,818,833,838,843,847,852,857,861,866,871],{"__ignoreMap":362},[366,811,812,814,816],{"class":368,"line":369},[366,813,681],{"class":501},[366,815,504],{"class":449},[366,817,507],{"class":445},[366,819,820,823,825,827,829,831],{"class":368,"line":468},[366,821,822],{"class":513},"  service",[366,824,517],{"class":445},[366,826,459],{"class":445},[366,828,543],{"class":375},[366,830,546],{"class":445},[366,832,549],{"class":445},[366,834,835],{"class":368,"line":485},[366,836,837],{"class":656},"  \u002F\u002F Default: strip debug logs in production builds\n",[366,839,840],{"class":368,"line":492},[366,841,842],{"class":656},"  \u002F\u002F strip: ['debug'],\n",[366,844,845],{"class":368,"line":510},[366,846,489],{"emptyLinePlaceholder":488},[366,848,849],{"class":368,"line":523},[366,850,851],{"class":656},"  \u002F\u002F Strip debug and info in production:\n",[366,853,854],{"class":368,"line":533},[366,855,856],{"class":656},"  \u002F\u002F strip: ['debug', 'info'],\n",[366,858,859],{"class":368,"line":552},[366,860,489],{"emptyLinePlaceholder":488},[366,862,863],{"class":368,"line":569},[366,864,865],{"class":656},"  \u002F\u002F Disable stripping:\n",[366,867,868],{"class":368,"line":580},[366,869,870],{"class":656},"  \u002F\u002F strip: [],\n",[366,872,873,875],{"class":368,"line":588},[366,874,591],{"class":445},[366,876,594],{"class":449},[314,878,879,880,883,884,887],{},"Stripping only activates during ",[318,881,882],{},"vite build"," (not ",[318,885,886],{},"vite dev",").",[348,889,891],{"id":890},"source-location-injection","Source location injection",[314,893,894,895,898],{},"When enabled, the plugin injects ",[318,896,897],{},"__source: 'file:line'"," into object-form log calls. This tells you exactly which file and line produced each log entry.",[356,900,902],{"className":432,"code":901,"filename":429,"language":434,"meta":362,"style":362},"evlog({\n  service: 'my-api',\n  sourceLocation: true,      \u002F\u002F Always inject\n  \u002F\u002F sourceLocation: 'dev',  \u002F\u002F Only in development\n})\n",[318,903,904,912,926,942,950],{"__ignoreMap":362},[366,905,906,908,910],{"class":368,"line":369},[366,907,681],{"class":501},[366,909,504],{"class":449},[366,911,507],{"class":445},[366,913,914,916,918,920,922,924],{"class":368,"line":468},[366,915,822],{"class":513},[366,917,517],{"class":445},[366,919,459],{"class":445},[366,921,543],{"class":375},[366,923,546],{"class":445},[366,925,549],{"class":445},[366,927,928,931,933,937,939],{"class":368,"line":485},[366,929,930],{"class":513},"  sourceLocation",[366,932,517],{"class":445},[366,934,936],{"class":935},"sfNiH"," true",[366,938,669],{"class":445},[366,940,941],{"class":656},"      \u002F\u002F Always inject\n",[366,943,944,947],{"class":368,"line":492},[366,945,946],{"class":656},"  \u002F\u002F sourceLocation: 'dev',",[366,948,949],{"class":656},"  \u002F\u002F Only in development\n",[366,951,952,954],{"class":368,"line":510},[366,953,591],{"class":445},[366,955,594],{"class":449},[314,957,958],{},"Before transform:",[356,960,963],{"className":432,"code":961,"filename":962,"language":434,"meta":362,"style":362},"log.info({ action: 'checkout', total: 99 })\n","src\u002Fcheckout.ts",[318,964,965],{"__ignoreMap":362},[366,966,967,969,972,974,976,978,981,983,985,988,990,992,995,997,1001,1003],{"class":368,"line":369},[366,968,633],{"class":449},[366,970,971],{"class":445},".",[366,973,325],{"class":501},[366,975,504],{"class":449},[366,977,693],{"class":445},[366,979,980],{"class":513}," action",[366,982,517],{"class":445},[366,984,459],{"class":445},[366,986,987],{"class":375},"checkout",[366,989,546],{"class":445},[366,991,669],{"class":445},[366,993,994],{"class":513}," total",[366,996,517],{"class":445},[366,998,1000],{"class":999},"sbssI"," 99",[366,1002,453],{"class":445},[366,1004,594],{"class":449},[314,1006,1007],{},"After transform:",[356,1009,1011],{"className":432,"code":1010,"filename":962,"language":434,"meta":362,"style":362},"log.info({ action: 'checkout', total: 99, __source: 'src\u002Fcheckout.ts:42' })\n",[318,1012,1013],{"__ignoreMap":362},[366,1014,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1048,1050,1052,1055,1057,1059],{"class":368,"line":369},[366,1016,633],{"class":449},[366,1018,971],{"class":445},[366,1020,325],{"class":501},[366,1022,504],{"class":449},[366,1024,693],{"class":445},[366,1026,980],{"class":513},[366,1028,517],{"class":445},[366,1030,459],{"class":445},[366,1032,987],{"class":375},[366,1034,546],{"class":445},[366,1036,669],{"class":445},[366,1038,994],{"class":513},[366,1040,517],{"class":445},[366,1042,1000],{"class":999},[366,1044,669],{"class":445},[366,1046,1047],{"class":513}," __source",[366,1049,517],{"class":445},[366,1051,459],{"class":445},[366,1053,1054],{"class":375},"src\u002Fcheckout.ts:42",[366,1056,546],{"class":445},[366,1058,453],{"class":445},[366,1060,594],{"class":449},[348,1062,1064],{"id":1063},"auto-imports-opt-in","Auto-imports (opt-in)",[314,1066,1067,1068,634,1070,634,1073,1076],{},"Automatically detect and import evlog symbols (",[318,1069,633],{},[318,1071,1072],{},"createEvlogError",[318,1074,1075],{},"parseError",", etc.) without manual import statements. Disabled by default.",[356,1078,1080],{"className":432,"code":1079,"filename":429,"language":434,"meta":362,"style":362},"evlog({\n  service: 'my-api',\n  autoImports: true,\n})\n",[318,1081,1082,1090,1104,1115],{"__ignoreMap":362},[366,1083,1084,1086,1088],{"class":368,"line":369},[366,1085,681],{"class":501},[366,1087,504],{"class":449},[366,1089,507],{"class":445},[366,1091,1092,1094,1096,1098,1100,1102],{"class":368,"line":468},[366,1093,822],{"class":513},[366,1095,517],{"class":445},[366,1097,459],{"class":445},[366,1099,543],{"class":375},[366,1101,546],{"class":445},[366,1103,549],{"class":445},[366,1105,1106,1109,1111,1113],{"class":368,"line":485},[366,1107,1108],{"class":513},"  autoImports",[366,1110,517],{"class":445},[366,1112,936],{"class":935},[366,1114,549],{"class":445},[366,1116,1117,1119],{"class":368,"line":492},[366,1118,591],{"class":445},[366,1120,594],{"class":449},[314,1122,1123],{},"When enabled, the plugin:",[1125,1126,1127,1130,1136],"ol",{},[602,1128,1129],{},"Scans your code for evlog symbols",[602,1131,1132,1133,1135],{},"Adds the correct ",[318,1134,442],{}," statements automatically",[602,1137,1138,1139,1142],{},"Generates a ",[318,1140,1141],{},".d.ts"," file for TypeScript support",[323,1144,1147,1148,1150,1151,1154,1155,1157,1158,1160,1161,1163],{"color":1145,"icon":1146},"amber","i-lucide-triangle-alert","The auto-imported error constructor is ",[318,1149,1072],{},", not ",[318,1152,1153],{},"createError",". This avoids conflicts with framework-native ",[318,1156,1153],{}," (Nuxt, Nitro, h3). The standalone ",[318,1159,1153],{}," from ",[318,1162,681],{}," is still available via explicit import.",[348,1165,1167],{"id":1166},"client-side-injection","Client-side injection",[314,1169,1170,1171,1174,1175,1178,1179,634,1182,1185],{},"When the ",[318,1172,1173],{},"client"," option is provided, the plugin injects a ",[318,1176,1177],{},"\u003Cscript>"," tag into HTML pages that initializes the client-side logger. This enables ",[318,1180,1181],{},"log.info()",[318,1183,1184],{},"log.error()",", etc. in browser code.",[356,1187,1189],{"className":432,"code":1188,"filename":429,"language":434,"meta":362,"style":362},"evlog({\n  service: 'my-api',\n  client: {\n    console: false,\n    transport: {\n      enabled: true,\n      endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n    },\n  },\n})\n",[318,1190,1191,1199,1213,1223,1235,1244,1255,1271,1276,1281],{"__ignoreMap":362},[366,1192,1193,1195,1197],{"class":368,"line":369},[366,1194,681],{"class":501},[366,1196,504],{"class":449},[366,1198,507],{"class":445},[366,1200,1201,1203,1205,1207,1209,1211],{"class":368,"line":468},[366,1202,822],{"class":513},[366,1204,517],{"class":445},[366,1206,459],{"class":445},[366,1208,543],{"class":375},[366,1210,546],{"class":445},[366,1212,549],{"class":445},[366,1214,1215,1218,1220],{"class":368,"line":485},[366,1216,1217],{"class":513},"  client",[366,1219,517],{"class":445},[366,1221,1222],{"class":445}," {\n",[366,1224,1225,1228,1230,1233],{"class":368,"line":492},[366,1226,1227],{"class":513},"    console",[366,1229,517],{"class":445},[366,1231,1232],{"class":935}," false",[366,1234,549],{"class":445},[366,1236,1237,1240,1242],{"class":368,"line":510},[366,1238,1239],{"class":513},"    transport",[366,1241,517],{"class":445},[366,1243,1222],{"class":445},[366,1245,1246,1249,1251,1253],{"class":368,"line":523},[366,1247,1248],{"class":513},"      enabled",[366,1250,517],{"class":445},[366,1252,936],{"class":935},[366,1254,549],{"class":445},[366,1256,1257,1260,1262,1264,1267,1269],{"class":368,"line":533},[366,1258,1259],{"class":513},"      endpoint",[366,1261,517],{"class":445},[366,1263,459],{"class":445},[366,1265,1266],{"class":375},"\u002Fapi\u002F_evlog\u002Fingest",[366,1268,546],{"class":445},[366,1270,549],{"class":445},[366,1272,1273],{"class":368,"line":552},[366,1274,1275],{"class":445},"    },\n",[366,1277,1278],{"class":368,"line":569},[366,1279,1280],{"class":445},"  },\n",[366,1282,1283,1285],{"class":368,"line":580},[366,1284,591],{"class":445},[366,1286,594],{"class":449},[344,1288,91],{"id":1289},"configuration",[1291,1292,1293,1312],"table",{},[1294,1295,1296],"thead",{},[1297,1298,1299,1303,1306,1309],"tr",{},[1300,1301,1302],"th",{},"Option",[1300,1304,1305],{},"Type",[1300,1307,1308],{},"Default",[1300,1310,1311],{},"Description",[1313,1314,1315,1335,1351,1371,1389,1406,1425,1443,1461,1484],"tbody",{},[1297,1316,1317,1322,1327,1332],{},[1318,1319,1320],"td",{},[318,1321,778],{},[1318,1323,1324],{},[318,1325,1326],{},"string",[1318,1328,1329],{},[318,1330,1331],{},"'app'",[1318,1333,1334],{},"Service name in logs",[1297,1336,1337,1341,1345,1348],{},[1318,1338,1339],{},[318,1340,781],{},[1318,1342,1343],{},[318,1344,1326],{},[1318,1346,1347],{},"Auto-detected",[1318,1349,1350],{},"Environment name",[1297,1352,1353,1357,1362,1368],{},[1318,1354,1355],{},[318,1356,784],{},[1318,1358,1359],{},[318,1360,1361],{},"boolean",[1318,1363,1364,1367],{},[318,1365,1366],{},"true"," in dev",[1318,1369,1370],{},"Pretty print logs",[1297,1372,1373,1377,1381,1386],{},[1318,1374,1375],{},[318,1376,787],{},[1318,1378,1379],{},[318,1380,1361],{},[1318,1382,1383],{},[318,1384,1385],{},"false",[1318,1387,1388],{},"Suppress console output",[1297,1390,1391,1395,1399,1403],{},[1318,1392,1393],{},[318,1394,790],{},[1318,1396,1397],{},[318,1398,1361],{},[1318,1400,1401],{},[318,1402,1366],{},[1318,1404,1405],{},"Enable\u002Fdisable all logging",[1297,1407,1408,1412,1417,1422],{},[1318,1409,1410],{},[318,1411,337],{},[1318,1413,1414],{},[318,1415,1416],{},"LogLevel[]",[1318,1418,1419],{},[318,1420,1421],{},"['debug']",[1318,1423,1424],{},"Log levels to remove from production builds",[1297,1426,1427,1431,1436,1440],{},[1318,1428,1429],{},[318,1430,341],{},[1318,1432,1433],{},[318,1434,1435],{},"boolean | 'dev'",[1318,1437,1438],{},[318,1439,1385],{},[1318,1441,1442],{},"Inject source file:line into log calls",[1297,1444,1445,1450,1454,1458],{},[1318,1446,1447],{},[318,1448,1449],{},"autoImports",[1318,1451,1452],{},[318,1453,1361],{},[1318,1455,1456],{},[318,1457,1385],{},[1318,1459,1460],{},"Auto-import evlog symbols",[1297,1462,1463,1467,1472,1475],{},[1318,1464,1465],{},[318,1466,1173],{},[1318,1468,1469],{},[318,1470,1471],{},"object",[1318,1473,1474],{},"—",[1318,1476,1477,1478,634,1481,575],{},"Client-side injection config (",[318,1479,1480],{},"console",[318,1482,1483],{},"transport",[1297,1485,1486,1490,1494,1496],{},[1318,1487,1488],{},[318,1489,793],{},[1318,1491,1492],{},[318,1493,1471],{},[1318,1495,1474],{},[1318,1497,1498],{},"Head\u002Ftail sampling rates",[344,1500,1502],{"id":1501},"nuxt-integration","Nuxt Integration",[314,1504,1505,1506,338,1508,1510,1511,517],{},"The Nuxt module exposes ",[318,1507,337],{},[318,1509,341],{}," directly in ",[318,1512,1513],{},"nuxt.config.ts",[356,1515,1517],{"className":432,"code":1516,"filename":1513,"language":434,"meta":362,"style":362},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n    strip: ['debug'],           \u002F\u002F Default\n    sourceLocation: 'dev',      \u002F\u002F Inject in dev only\n  },\n})\n",[318,1518,1519,1532,1553,1562,1585,1608,1627,1631],{"__ignoreMap":362},[366,1520,1521,1523,1525,1528,1530],{"class":368,"line":369},[366,1522,495],{"class":441},[366,1524,498],{"class":441},[366,1526,1527],{"class":501}," defineNuxtConfig",[366,1529,504],{"class":449},[366,1531,507],{"class":445},[366,1533,1534,1537,1539,1542,1544,1546,1548,1551],{"class":368,"line":468},[366,1535,1536],{"class":513},"  modules",[366,1538,517],{"class":445},[366,1540,1541],{"class":449}," [",[366,1543,546],{"class":445},[366,1545,333],{"class":375},[366,1547,546],{"class":445},[366,1549,1550],{"class":449},"]",[366,1552,549],{"class":445},[366,1554,1555,1558,1560],{"class":368,"line":485},[366,1556,1557],{"class":513},"  evlog",[366,1559,517],{"class":445},[366,1561,1222],{"class":445},[366,1563,1564,1567,1569,1571,1573,1575,1577,1580,1582],{"class":368,"line":492},[366,1565,1566],{"class":513},"    env",[366,1568,517],{"class":445},[366,1570,446],{"class":445},[366,1572,703],{"class":513},[366,1574,517],{"class":445},[366,1576,459],{"class":445},[366,1578,1579],{"class":375},"my-app",[366,1581,546],{"class":445},[366,1583,1584],{"class":445}," },\n",[366,1586,1587,1590,1592,1594,1596,1599,1601,1603,1605],{"class":368,"line":510},[366,1588,1589],{"class":513},"    strip",[366,1591,517],{"class":445},[366,1593,1541],{"class":449},[366,1595,546],{"class":445},[366,1597,1598],{"class":375},"debug",[366,1600,546],{"class":445},[366,1602,1550],{"class":449},[366,1604,669],{"class":445},[366,1606,1607],{"class":656},"           \u002F\u002F Default\n",[366,1609,1610,1613,1615,1617,1620,1622,1624],{"class":368,"line":523},[366,1611,1612],{"class":513},"    sourceLocation",[366,1614,517],{"class":445},[366,1616,459],{"class":445},[366,1618,1619],{"class":375},"dev",[366,1621,546],{"class":445},[366,1623,669],{"class":445},[366,1625,1626],{"class":656},"      \u002F\u002F Inject in dev only\n",[366,1628,1629],{"class":368,"line":533},[366,1630,1280],{"class":445},[366,1632,1633,1635],{"class":368,"line":552},[366,1634,591],{"class":445},[366,1636,594],{"class":449},[344,1638,1640],{"id":1639},"vite-compatibility","Vite Compatibility",[314,1642,1643,1644,1647,1648,1651,1652,338,1655,1658],{},"The plugin supports ",[327,1645,1646],{},"Vite 7+"," and is optimized for ",[327,1649,1650],{},"Vite 8"," (Rolldown). On Vite 8, transform hooks use Rolldown-native ",[318,1653,1654],{},"filter",[318,1656,1657],{},"moduleType"," for maximum performance, non-matching files are skipped entirely on the Rust side without crossing the JS bridge.",[1660,1661,1662],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":362,"searchDepth":468,"depth":468,"links":1664},[1665,1670,1677,1678,1679],{"id":346,"depth":468,"text":20,"children":1666},[1667,1668],{"id":350,"depth":485,"text":351},{"id":425,"depth":485,"text":1669},"2. Add to vite.config.ts",{"id":618,"depth":468,"text":619,"children":1671},[1672,1673,1674,1675,1676],{"id":622,"depth":485,"text":623},{"id":797,"depth":485,"text":798},{"id":890,"depth":485,"text":891},{"id":1063,"depth":485,"text":1064},{"id":1166,"depth":485,"text":1167},{"id":1289,"depth":468,"text":91},{"id":1501,"depth":468,"text":1502},{"id":1639,"depth":468,"text":1640},"Build-time optimizations for any Vite-based framework. Auto-init, debug stripping, source location injection, and optional auto-imports.","md",[1683],{"label":1684,"icon":1685,"to":1686,"color":1687,"variant":1688},"Source Code","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fpackages\u002Fevlog\u002Fsrc\u002Fvite","neutral","subtle",{},{"icon":118},{"title":115,"description":1680},"FeUhd2t-P6aK9LpQnhycj5rRP5lU3hgJ2uVob1I9fCo",[1694,1696],{"title":110,"path":111,"stem":112,"description":1695,"icon":113,"children":-1},"evlog adds ~3µs per request. Faster than pino, consola, and winston in most scenarios while emitting richer, more useful events.",{"title":120,"path":121,"stem":122,"description":1697,"icon":123,"children":-1},"Automatically scrub PII from wide events before console output and drains. Built-in smart masking for credit cards, emails, IPs, phone numbers, JWTs, and more.",1777667163419]