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