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