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