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