[{"data":1,"prerenderedAt":2338},["ShallowReactive",2],{"navigation_docs":3,"-core-concepts-redaction":547,"-core-concepts-redaction-surround":2333},[4,35,159,201,289,446,531],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build on top","\u002Fbuild-on-top","5.build-on-top",[294,297,325,346,373,400,428],{"title":41,"path":295,"stem":296,"icon":54},"\u002Fbuild-on-top\u002Foverview","5.build-on-top\u002F0.overview",{"title":298,"path":299,"stem":300,"children":301,"page":34},"Observers","\u002Fbuild-on-top\u002Fobservers","5.build-on-top\u002Fobservers",[302,306,311,316,321],{"title":41,"path":303,"stem":304,"icon":305},"\u002Fbuild-on-top\u002Fobservers\u002Foverview","5.build-on-top\u002Fobservers\u002F1.overview","i-lucide-eye",{"title":307,"path":308,"stem":309,"icon":310},"Stream API","\u002Fbuild-on-top\u002Fobservers\u002Fin-process-stream","5.build-on-top\u002Fobservers\u002F2.in-process-stream","i-lucide-radio-tower",{"title":312,"path":313,"stem":314,"icon":315},"Stream server","\u002Fbuild-on-top\u002Fobservers\u002Fstream-server","5.build-on-top\u002Fobservers\u002F3.stream-server","i-lucide-radio",{"title":317,"path":318,"stem":319,"icon":320},"FS reader","\u002Fbuild-on-top\u002Fobservers\u002Ffs-reader","5.build-on-top\u002Fobservers\u002F4.fs-reader","i-lucide-folder-search",{"title":156,"path":322,"stem":323,"icon":324},"\u002Fbuild-on-top\u002Fobservers\u002Fconsumer-recipes","5.build-on-top\u002Fobservers\u002F5.consumer-recipes","i-lucide-chef-hat",{"title":326,"path":327,"stem":328,"children":329,"page":34},"Pipeline","\u002Fbuild-on-top\u002Fpipeline","5.build-on-top\u002Fpipeline",[330,334,338,342],{"title":41,"path":331,"stem":332,"icon":333},"\u002Fbuild-on-top\u002Fpipeline\u002Foverview","5.build-on-top\u002Fpipeline\u002F1.overview","i-lucide-workflow",{"title":335,"path":336,"stem":337,"icon":288},"Plugins","\u002Fbuild-on-top\u002Fpipeline\u002Fplugins","5.build-on-top\u002Fpipeline\u002F2.plugins",{"title":339,"path":340,"stem":341,"icon":28},"Custom enrichers","\u002Fbuild-on-top\u002Fpipeline\u002Fcustom-enrichers","5.build-on-top\u002Fpipeline\u002F3.custom-enrichers",{"title":343,"path":344,"stem":345,"icon":178},"Tail sampling","\u002Fbuild-on-top\u002Fpipeline\u002Ftail-sampling","5.build-on-top\u002Fpipeline\u002F4.tail-sampling",{"title":347,"path":348,"stem":349,"children":350,"page":34},"Scenarios","\u002Fbuild-on-top\u002Fscenarios","5.build-on-top\u002Fscenarios",[351,355,359,364,368],{"title":41,"path":352,"stem":353,"icon":354},"\u002Fbuild-on-top\u002Fscenarios\u002Foverview","5.build-on-top\u002Fscenarios\u002F0.overview","i-lucide-clipboard-list",{"title":356,"path":357,"stem":358,"icon":49},"Local debugging toolkit","\u002Fbuild-on-top\u002Fscenarios\u002Flocal-debugging-toolkit","5.build-on-top\u002Fscenarios\u002F1.local-debugging-toolkit",{"title":360,"path":361,"stem":362,"icon":363},"Tenant-aware logging","\u002Fbuild-on-top\u002Fscenarios\u002Ftenant-aware-logging","5.build-on-top\u002Fscenarios\u002F2.tenant-aware-logging","i-lucide-users",{"title":365,"path":366,"stem":367,"icon":129},"Compliance audit","\u002Fbuild-on-top\u002Fscenarios\u002Fcompliance-audit","5.build-on-top\u002Fscenarios\u002F3.compliance-audit",{"title":369,"path":370,"stem":371,"icon":372},"Cross-app error vocab","\u002Fbuild-on-top\u002Fscenarios\u002Fcross-app-error-vocab","5.build-on-top\u002Fscenarios\u002F4.cross-app-error-vocab","i-lucide-book",{"title":374,"path":375,"stem":376,"children":377,"page":34},"Shared packages","\u002Fbuild-on-top\u002Fshared","5.build-on-top\u002Fshared",[378,382,386,391,395],{"title":41,"path":379,"stem":380,"icon":381},"\u002Fbuild-on-top\u002Fshared\u002Foverview","5.build-on-top\u002Fshared\u002F1.overview","i-lucide-package",{"title":383,"path":384,"stem":385,"icon":381},"Catalogs as packages","\u002Fbuild-on-top\u002Fshared\u002Fcatalogs-as-packages","5.build-on-top\u002Fshared\u002F2.catalogs-as-packages",{"title":387,"path":388,"stem":389,"icon":390},"Drains as packages","\u002Fbuild-on-top\u002Fshared\u002Fdrains-as-packages","5.build-on-top\u002Fshared\u002F3.drains-as-packages","i-lucide-package-2",{"title":392,"path":393,"stem":394,"icon":28},"Enrichers as packages","\u002Fbuild-on-top\u002Fshared\u002Fenrichers-as-packages","5.build-on-top\u002Fshared\u002F4.enrichers-as-packages",{"title":396,"path":397,"stem":398,"icon":399},"Integration as package","\u002Fbuild-on-top\u002Fshared\u002Fintegration-as-package","5.build-on-top\u002Fshared\u002F5.integration-as-package","i-lucide-package-check",{"title":401,"path":402,"stem":403,"children":404,"page":34},"Sinks","\u002Fbuild-on-top\u002Fsinks","5.build-on-top\u002Fsinks",[405,409,414,418,423],{"title":41,"path":406,"stem":407,"icon":408},"\u002Fbuild-on-top\u002Fsinks\u002Foverview","5.build-on-top\u002Fsinks\u002F1.overview","i-lucide-arrow-up-from-line",{"title":410,"path":411,"stem":412,"icon":413},"Custom drains","\u002Fbuild-on-top\u002Fsinks\u002Fcustom-drains","5.build-on-top\u002Fsinks\u002F2.custom-drains","i-lucide-code-2",{"title":415,"path":416,"stem":417,"icon":333},"Drain pipeline","\u002Fbuild-on-top\u002Fsinks\u002Fdrain-pipeline","5.build-on-top\u002Fsinks\u002F3.drain-pipeline",{"title":419,"path":420,"stem":421,"icon":422},"Identity headers","\u002Fbuild-on-top\u002Fsinks\u002Fidentity-headers","5.build-on-top\u002Fsinks\u002F4.identity-headers","i-lucide-fingerprint",{"title":424,"path":425,"stem":426,"icon":427},"Fanout","\u002Fbuild-on-top\u002Fsinks\u002Ffanout-and-multi-drain","5.build-on-top\u002Fsinks\u002F5.fanout-and-multi-drain","i-lucide-share-2",{"title":429,"path":430,"stem":431,"children":432,"page":34},"Sources","\u002Fbuild-on-top\u002Fsources","5.build-on-top\u002Fsources",[433,437,441],{"title":41,"path":434,"stem":435,"icon":436},"\u002Fbuild-on-top\u002Fsources\u002Foverview","5.build-on-top\u002Fsources\u002F1.overview","i-lucide-arrow-down-to-line",{"title":438,"path":439,"stem":440,"icon":288},"Custom framework","\u002Fbuild-on-top\u002Fsources\u002Fcustom-framework","5.build-on-top\u002Fsources\u002F2.custom-framework",{"title":442,"path":443,"stem":444,"icon":445},"Middleware toolkit","\u002Fbuild-on-top\u002Fsources\u002Fmiddleware-toolkit","5.build-on-top\u002Fsources\u002F3.middleware-toolkit","i-lucide-wrench",{"title":447,"path":448,"stem":449,"children":450,"page":34},"Adapters","\u002Fadapters","6.adapters",[451,454,494,509],{"title":41,"path":452,"stem":453,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":455,"path":456,"stem":457,"children":458,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[459,464,469,474,479,484,489],{"title":460,"path":461,"stem":462,"icon":463},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":465,"path":466,"stem":467,"icon":468},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":470,"path":471,"stem":472,"icon":473},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":475,"path":476,"stem":477,"icon":478},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":480,"path":481,"stem":482,"icon":483},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":485,"path":486,"stem":487,"icon":488},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":490,"path":491,"stem":492,"icon":493},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":495,"path":496,"stem":497,"children":498,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[499,504],{"title":500,"path":501,"stem":502,"icon":503},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":505,"path":506,"stem":507,"icon":508},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":510,"path":511,"stem":512,"children":513,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[514,517,522,526],{"title":326,"path":515,"stem":516,"icon":333},"\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline",{"title":518,"path":519,"stem":520,"icon":521},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":523,"path":524,"stem":525,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":527,"path":528,"stem":529,"icon":530},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":532,"path":533,"stem":534,"children":535,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[536,539,543],{"title":41,"path":537,"stem":538,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":540,"path":541,"stem":542,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":544,"path":545,"stem":546,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":548,"title":197,"body":549,"description":2322,"extension":2323,"links":2324,"meta":2329,"navigation":2330,"path":198,"seo":2331,"stem":199,"__hash__":2332},"docs\u002F3.core-concepts\u002F7.redaction.md",{"type":550,"value":551,"toc":2307},"minimark",[552,564,575,580,583,867,874,877,881,892,1034,1046,1049,1054,1060,1121,1135,1139,1142,1198,1202,1208,1291,1295,1298,1378,1382,1511,1529,1533,1536,1572,1579,1583,1586,2049,2053,2056,2170,2175,2277,2280,2284,2303],[553,554,555,556,560,561,563],"p",{},"Wide events capture comprehensive context, which makes it easy to accidentally log sensitive data. Auto-redaction scrubs PII from events ",[557,558,559],"strong",{},"before"," console output and ",[557,562,559],{}," any drain sees the data.",[553,565,566,569,570,574],{},[557,567,568],{},"Redaction is enabled by default in production"," (",[571,572,573],"code",{},"NODE_ENV === 'production'","). In development, it is off so you see full values for debugging. No configuration needed — just deploy.",[576,577,579],"h2",{"id":578},"opting-out","Opting Out",[553,581,582],{},"If you need to disable redaction in production:",[584,585,586,688,789],"code-group",{},[587,588,594],"pre",{"className":589,"code":590,"filename":591,"language":592,"meta":593,"style":593},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    redact: false,\n  },\n})\n","nuxt.config.ts","typescript","",[571,595,596,620,648,659,673,679],{"__ignoreMap":593},[597,598,601,605,608,612,616],"span",{"class":599,"line":600},"line",1,[597,602,604],{"class":603},"s7zQu","export",[597,606,607],{"class":603}," default",[597,609,611],{"class":610},"s2Zo4"," defineNuxtConfig",[597,613,615],{"class":614},"sTEyZ","(",[597,617,619],{"class":618},"sMK4o","{\n",[597,621,623,627,630,633,636,640,642,645],{"class":599,"line":622},2,[597,624,626],{"class":625},"swJcz","  modules",[597,628,629],{"class":618},":",[597,631,632],{"class":614}," [",[597,634,635],{"class":618},"'",[597,637,639],{"class":638},"sfazB","evlog\u002Fnuxt",[597,641,635],{"class":618},[597,643,644],{"class":614},"]",[597,646,647],{"class":618},",\n",[597,649,651,654,656],{"class":599,"line":650},3,[597,652,653],{"class":625},"  evlog",[597,655,629],{"class":618},[597,657,658],{"class":618}," {\n",[597,660,662,665,667,671],{"class":599,"line":661},4,[597,663,664],{"class":625},"    redact",[597,666,629],{"class":618},[597,668,670],{"class":669},"sfNiH"," false",[597,672,647],{"class":618},[597,674,676],{"class":599,"line":675},5,[597,677,678],{"class":618},"  },\n",[597,680,682,685],{"class":599,"line":681},6,[597,683,684],{"class":618},"}",[597,686,687],{"class":614},")\n",[587,689,692],{"className":589,"code":690,"filename":691,"language":592,"meta":593,"style":593},"import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger } = createEvlog({\n  service: 'my-app',\n  redact: false,\n})\n","lib\u002Fevlog.ts (Next.js)",[571,693,694,720,726,756,772,783],{"__ignoreMap":593},[597,695,696,699,702,705,708,711,714,717],{"class":599,"line":600},[597,697,698],{"class":603},"import",[597,700,701],{"class":618}," {",[597,703,704],{"class":614}," createEvlog",[597,706,707],{"class":618}," }",[597,709,710],{"class":603}," from",[597,712,713],{"class":618}," '",[597,715,716],{"class":638},"evlog\u002Fnext",[597,718,719],{"class":618},"'\n",[597,721,722],{"class":599,"line":622},[597,723,725],{"emptyLinePlaceholder":724},true,"\n",[597,727,728,730,734,736,739,742,745,747,750,752,754],{"class":599,"line":650},[597,729,604],{"class":603},[597,731,733],{"class":732},"spNyl"," const",[597,735,701],{"class":618},[597,737,738],{"class":614}," withEvlog",[597,740,741],{"class":618},",",[597,743,744],{"class":614}," useLogger ",[597,746,684],{"class":618},[597,748,749],{"class":618}," =",[597,751,704],{"class":610},[597,753,615],{"class":614},[597,755,619],{"class":618},[597,757,758,761,763,765,768,770],{"class":599,"line":661},[597,759,760],{"class":625},"  service",[597,762,629],{"class":618},[597,764,713],{"class":618},[597,766,767],{"class":638},"my-app",[597,769,635],{"class":618},[597,771,647],{"class":618},[597,773,774,777,779,781],{"class":599,"line":675},[597,775,776],{"class":625},"  redact",[597,778,629],{"class":618},[597,780,670],{"class":669},[597,782,647],{"class":618},[597,784,785,787],{"class":599,"line":681},[597,786,684],{"class":618},[597,788,687],{"class":614},[587,790,793],{"className":589,"code":791,"filename":792,"language":592,"meta":593,"style":593},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  redact: false,\n})\n","index.ts (Hono \u002F Express \u002F Fastify)",[571,794,795,815,819,828,851,861],{"__ignoreMap":593},[597,796,797,799,801,804,806,808,810,813],{"class":599,"line":600},[597,798,698],{"class":603},[597,800,701],{"class":618},[597,802,803],{"class":614}," initLogger",[597,805,707],{"class":618},[597,807,710],{"class":603},[597,809,713],{"class":618},[597,811,812],{"class":638},"evlog",[597,814,719],{"class":618},[597,816,817],{"class":599,"line":622},[597,818,725],{"emptyLinePlaceholder":724},[597,820,821,824,826],{"class":599,"line":650},[597,822,823],{"class":610},"initLogger",[597,825,615],{"class":614},[597,827,619],{"class":618},[597,829,830,833,835,837,840,842,844,846,848],{"class":599,"line":661},[597,831,832],{"class":625},"  env",[597,834,629],{"class":618},[597,836,701],{"class":618},[597,838,839],{"class":625}," service",[597,841,629],{"class":618},[597,843,713],{"class":618},[597,845,767],{"class":638},[597,847,635],{"class":618},[597,849,850],{"class":618}," },\n",[597,852,853,855,857,859],{"class":599,"line":675},[597,854,776],{"class":625},[597,856,629],{"class":618},[597,858,670],{"class":669},[597,860,647],{"class":618},[597,862,863,865],{"class":599,"line":681},[597,864,684],{"class":618},[597,866,687],{"class":614},[553,868,869,870,873],{},"You can also enable redaction explicitly in development with ",[571,871,872],{},"redact: true",".",[875,876],"redaction-stream",{},[576,878,880],{"id":879},"smart-masking","Smart Masking",[553,882,883,884,887,888,891],{},"Built-in patterns use ",[557,885,886],{},"partial masking"," instead of flat ",[571,889,890],{},"[REDACTED]"," — preserving enough context for debugging while protecting the actual data.",[893,894,895,911],"table",{},[896,897,898],"thead",{},[899,900,901,905,908],"tr",{},[902,903,904],"th",{},"Pattern",[902,906,907],{},"Example Input",[902,909,910],{},"Masked Output",[912,913,914,932,949,966,983,1000,1017],"tbody",{},[899,915,916,922,927],{},[917,918,919],"td",{},[571,920,921],{},"creditCard",[917,923,924],{},[571,925,926],{},"4111111111111111",[917,928,929],{},[571,930,931],{},"****1111",[899,933,934,939,944],{},[917,935,936],{},[571,937,938],{},"email",[917,940,941],{},[571,942,943],{},"alice@example.com",[917,945,946],{},[571,947,948],{},"a***@***.com",[899,950,951,956,961],{},[917,952,953],{},[571,954,955],{},"ipv4",[917,957,958],{},[571,959,960],{},"192.168.1.100",[917,962,963],{},[571,964,965],{},"***.***.***.100",[899,967,968,973,978],{},[917,969,970],{},[571,971,972],{},"phone",[917,974,975],{},[571,976,977],{},"+33 6 12 34 56 78",[917,979,980],{},[571,981,982],{},"+33 ****5678",[899,984,985,990,995],{},[917,986,987],{},[571,988,989],{},"jwt",[917,991,992],{},[571,993,994],{},"eyJhbGciOiJIUzI1NiIs...",[917,996,997],{},[571,998,999],{},"eyJ***.***",[899,1001,1002,1007,1012],{},[917,1003,1004],{},[571,1005,1006],{},"bearer",[917,1008,1009],{},[571,1010,1011],{},"Bearer sk_live_abc123...",[917,1013,1014],{},[571,1015,1016],{},"Bearer ***",[899,1018,1019,1024,1029],{},[917,1020,1021],{},[571,1022,1023],{},"iban",[917,1025,1026],{},[571,1027,1028],{},"FR76 3000 6000 0112 ...189",[917,1030,1031],{},[571,1032,1033],{},"FR76****189",[1035,1036,1038,1041,1042,1045],"callout",{"color":1037,"icon":13},"info",[571,1039,1040],{},"127.0.0.1"," and ",[571,1043,1044],{},"0.0.0.0"," are excluded from IPv4 masking since they are not real client addresses.",[576,1047,170],{"id":1048},"configuration",[1050,1051,1053],"h3",{"id":1052},"custom-paths","Custom Paths",[553,1055,1056,1057,1059],{},"Add dot-notation paths to redact specific fields with ",[571,1058,890],{},", on top of the built-in patterns:",[587,1061,1063],{"className":589,"code":1062,"language":592,"meta":593,"style":593},"evlog: {\n  redact: {\n    paths: ['user.password', 'headers.authorization'],\n  }\n}\n",[571,1064,1065,1074,1082,1111,1116],{"__ignoreMap":593},[597,1066,1067,1070,1072],{"class":599,"line":600},[597,1068,812],{"class":1069},"sBMFI",[597,1071,629],{"class":618},[597,1073,658],{"class":618},[597,1075,1076,1078,1080],{"class":599,"line":622},[597,1077,776],{"class":1069},[597,1079,629],{"class":618},[597,1081,658],{"class":618},[597,1083,1084,1087,1089,1091,1093,1096,1098,1100,1102,1105,1107,1109],{"class":599,"line":650},[597,1085,1086],{"class":1069},"    paths",[597,1088,629],{"class":618},[597,1090,632],{"class":625},[597,1092,635],{"class":618},[597,1094,1095],{"class":638},"user.password",[597,1097,635],{"class":618},[597,1099,741],{"class":618},[597,1101,713],{"class":618},[597,1103,1104],{"class":638},"headers.authorization",[597,1106,635],{"class":618},[597,1108,644],{"class":625},[597,1110,647],{"class":618},[597,1112,1113],{"class":599,"line":661},[597,1114,1115],{"class":618},"  }\n",[597,1117,1118],{"class":599,"line":675},[597,1119,1120],{"class":618},"}\n",[553,1122,1123,1124,1127,1128,1131,1132,1134],{},"Path-based redaction replaces the ",[557,1125,1126],{},"entire value"," with the ",[571,1129,1130],{},"replacement"," string (default ",[571,1133,890],{},"), regardless of content.",[1050,1136,1138],{"id":1137},"selective-built-ins","Selective Built-ins",[553,1140,1141],{},"Pick only the patterns you need:",[587,1143,1145],{"className":589,"code":1144,"language":592,"meta":593,"style":593},"evlog: {\n  redact: {\n    builtins: ['email', 'creditCard'],\n  }\n}\n",[571,1146,1147,1155,1163,1190,1194],{"__ignoreMap":593},[597,1148,1149,1151,1153],{"class":599,"line":600},[597,1150,812],{"class":1069},[597,1152,629],{"class":618},[597,1154,658],{"class":618},[597,1156,1157,1159,1161],{"class":599,"line":622},[597,1158,776],{"class":1069},[597,1160,629],{"class":618},[597,1162,658],{"class":618},[597,1164,1165,1168,1170,1172,1174,1176,1178,1180,1182,1184,1186,1188],{"class":599,"line":650},[597,1166,1167],{"class":1069},"    builtins",[597,1169,629],{"class":618},[597,1171,632],{"class":625},[597,1173,635],{"class":618},[597,1175,938],{"class":638},[597,1177,635],{"class":618},[597,1179,741],{"class":618},[597,1181,713],{"class":618},[597,1183,921],{"class":638},[597,1185,635],{"class":618},[597,1187,644],{"class":625},[597,1189,647],{"class":618},[597,1191,1192],{"class":599,"line":661},[597,1193,1115],{"class":618},[597,1195,1196],{"class":599,"line":675},[597,1197,1120],{"class":618},[1050,1199,1201],{"id":1200},"custom-patterns","Custom Patterns",[553,1203,1204,1205,1207],{},"Add your own regex patterns. These use the flat ",[571,1206,1130],{}," string, not smart masking:",[587,1209,1211],{"className":589,"code":1210,"language":592,"meta":593,"style":593},"evlog: {\n  redact: {\n    patterns: [\u002FSECRET_\\w+\u002Fg, \u002Fsk_live_\\w+\u002Fg],\n    replacement: '***',\n  }\n}\n",[571,1212,1213,1221,1229,1267,1283,1287],{"__ignoreMap":593},[597,1214,1215,1217,1219],{"class":599,"line":600},[597,1216,812],{"class":1069},[597,1218,629],{"class":618},[597,1220,658],{"class":618},[597,1222,1223,1225,1227],{"class":599,"line":622},[597,1224,776],{"class":1069},[597,1226,629],{"class":618},[597,1228,658],{"class":618},[597,1230,1231,1234,1236,1238,1241,1244,1247,1251,1253,1256,1259,1261,1263,1265],{"class":599,"line":650},[597,1232,1233],{"class":1069},"    patterns",[597,1235,629],{"class":618},[597,1237,632],{"class":625},[597,1239,1240],{"class":618},"\u002F",[597,1242,1243],{"class":638},"SECRET_\\w",[597,1245,1246],{"class":618},"+\u002F",[597,1248,1250],{"class":1249},"sbssI","g",[597,1252,741],{"class":618},[597,1254,1255],{"class":618}," \u002F",[597,1257,1258],{"class":638},"sk_live_\\w",[597,1260,1246],{"class":618},[597,1262,1250],{"class":1249},[597,1264,644],{"class":625},[597,1266,647],{"class":618},[597,1268,1269,1272,1274,1276,1279,1281],{"class":599,"line":661},[597,1270,1271],{"class":1069},"    replacement",[597,1273,629],{"class":618},[597,1275,713],{"class":618},[597,1277,1278],{"class":638},"***",[597,1280,635],{"class":618},[597,1282,647],{"class":618},[597,1284,1285],{"class":599,"line":675},[597,1286,1115],{"class":618},[597,1288,1289],{"class":599,"line":681},[597,1290,1120],{"class":618},[1050,1292,1294],{"id":1293},"disable-built-ins","Disable Built-ins",[553,1296,1297],{},"If you only want custom redaction:",[587,1299,1301],{"className":589,"code":1300,"language":592,"meta":593,"style":593},"evlog: {\n  redact: {\n    builtins: false,\n    paths: ['user.ssn'],\n    patterns: [\u002FINTERNAL_\\w+\u002Fg],\n  }\n}\n",[571,1302,1303,1311,1319,1329,1348,1369,1373],{"__ignoreMap":593},[597,1304,1305,1307,1309],{"class":599,"line":600},[597,1306,812],{"class":1069},[597,1308,629],{"class":618},[597,1310,658],{"class":618},[597,1312,1313,1315,1317],{"class":599,"line":622},[597,1314,776],{"class":1069},[597,1316,629],{"class":618},[597,1318,658],{"class":618},[597,1320,1321,1323,1325,1327],{"class":599,"line":650},[597,1322,1167],{"class":1069},[597,1324,629],{"class":618},[597,1326,670],{"class":669},[597,1328,647],{"class":618},[597,1330,1331,1333,1335,1337,1339,1342,1344,1346],{"class":599,"line":661},[597,1332,1086],{"class":1069},[597,1334,629],{"class":618},[597,1336,632],{"class":625},[597,1338,635],{"class":618},[597,1340,1341],{"class":638},"user.ssn",[597,1343,635],{"class":618},[597,1345,644],{"class":625},[597,1347,647],{"class":618},[597,1349,1350,1352,1354,1356,1358,1361,1363,1365,1367],{"class":599,"line":675},[597,1351,1233],{"class":1069},[597,1353,629],{"class":618},[597,1355,632],{"class":625},[597,1357,1240],{"class":618},[597,1359,1360],{"class":638},"INTERNAL_\\w",[597,1362,1246],{"class":618},[597,1364,1250],{"class":1249},[597,1366,644],{"class":625},[597,1368,647],{"class":618},[597,1370,1371],{"class":599,"line":681},[597,1372,1115],{"class":618},[597,1374,1376],{"class":599,"line":1375},7,[597,1377,1120],{"class":618},[576,1379,1381],{"id":1380},"configuration-reference","Configuration Reference",[893,1383,1384,1400],{},[896,1385,1386],{},[899,1387,1388,1391,1394,1397],{},[902,1389,1390],{},"Option",[902,1392,1393],{},"Type",[902,1395,1396],{},"Default",[902,1398,1399],{},"Description",[912,1401,1402,1427,1450,1472,1492],{},[899,1403,1404,1409,1414,1420],{},[917,1405,1406],{},[571,1407,1408],{},"redact",[917,1410,1411],{},[571,1412,1413],{},"boolean | RedactConfig",[917,1415,1416,1419],{},[571,1417,1418],{},"true"," in production",[917,1421,1422,1423,1426],{},"Enabled by default in production. ",[571,1424,1425],{},"false"," to disable. Object for fine-grained control",[899,1428,1429,1434,1439,1444],{},[917,1430,1431],{},[571,1432,1433],{},"paths",[917,1435,1436],{},[571,1437,1438],{},"string[]",[917,1440,1441],{},[571,1442,1443],{},"undefined",[917,1445,1446,1447,1449],{},"Dot-notation paths to redact entirely (e.g. ",[571,1448,1095],{},")",[899,1451,1452,1457,1462,1466],{},[917,1453,1454],{},[571,1455,1456],{},"patterns",[917,1458,1459],{},[571,1460,1461],{},"RegExp[]",[917,1463,1464],{},[571,1465,1443],{},[917,1467,1468,1469,1471],{},"Custom regex patterns. Uses flat ",[571,1470,1130],{}," string",[899,1473,1474,1479,1484,1487],{},[917,1475,1476],{},[571,1477,1478],{},"builtins",[917,1480,1481],{},[571,1482,1483],{},"false | string[]",[917,1485,1486],{},"All enabled",[917,1488,1489,1491],{},[571,1490,1425],{}," disables built-ins. Array selects specific ones",[899,1493,1494,1498,1503,1508],{},[917,1495,1496],{},[571,1497,1130],{},[917,1499,1500],{},[571,1501,1502],{},"string",[917,1504,1505],{},[571,1506,1507],{},"'[REDACTED]'",[917,1509,1510],{},"Replacement string for paths and custom patterns. Built-in patterns use smart masking instead",[553,1512,1513,1514,1516,1517,1516,1519,1516,1521,1516,1523,1516,1525,1516,1527,873],{},"Available built-in names: ",[571,1515,921],{},", ",[571,1518,938],{},[571,1520,955],{},[571,1522,972],{},[571,1524,989],{},[571,1526,1006],{},[571,1528,1023],{},[576,1530,1532],{"id":1531},"how-it-works","How It Works",[553,1534,1535],{},"Redaction runs inside the emit pipeline, after the wide event is fully built but before any output:",[1537,1538,1539,1548,1554,1560,1566],"ol",{},[1540,1541,1542,1545,1546],"li",{},[557,1543,1544],{},"Path redaction"," — targeted fields replaced with ",[571,1547,890],{},[1540,1549,1550,1553],{},[557,1551,1552],{},"Smart masking"," — built-in patterns scan all string values recursively with partial masking",[1540,1555,1556,1559],{},[557,1557,1558],{},"Pattern redaction"," — custom regex patterns scan all string values with flat replacement",[1540,1561,1562,1565],{},[557,1563,1564],{},"Console output"," — masked event printed to stdout",[1540,1567,1568,1571],{},[557,1569,1570],{},"Drain"," — masked event sent to external services",[1035,1573,1574,1575,1578],{"color":1037,"icon":23},"Redaction runs ",[557,1576,1577],{},"after"," the HTTP response is sent, so it adds zero latency to your API responses.",[576,1580,1582],{"id":1581},"production-example","Production Example",[553,1584,1585],{},"Redaction is already on by default in production. Combine with sampling for a typical setup:",[584,1587,1588,1778,1920],{},[587,1589,1591],{"className":589,"code":1590,"filename":591,"language":592,"meta":593,"style":593},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n  },\n  $production: {\n    evlog: {\n      sampling: {\n        rates: { info: 10, debug: 0 },\n        keep: [{ status: 400 }, { duration: 1000 }],\n      },\n    },\n  },\n})\n",[571,1592,1593,1605,1623,1631,1652,1656,1665,1674,1684,1714,1754,1760,1766,1771],{"__ignoreMap":593},[597,1594,1595,1597,1599,1601,1603],{"class":599,"line":600},[597,1596,604],{"class":603},[597,1598,607],{"class":603},[597,1600,611],{"class":610},[597,1602,615],{"class":614},[597,1604,619],{"class":618},[597,1606,1607,1609,1611,1613,1615,1617,1619,1621],{"class":599,"line":622},[597,1608,626],{"class":625},[597,1610,629],{"class":618},[597,1612,632],{"class":614},[597,1614,635],{"class":618},[597,1616,639],{"class":638},[597,1618,635],{"class":618},[597,1620,644],{"class":614},[597,1622,647],{"class":618},[597,1624,1625,1627,1629],{"class":599,"line":650},[597,1626,653],{"class":625},[597,1628,629],{"class":618},[597,1630,658],{"class":618},[597,1632,1633,1636,1638,1640,1642,1644,1646,1648,1650],{"class":599,"line":661},[597,1634,1635],{"class":625},"    env",[597,1637,629],{"class":618},[597,1639,701],{"class":618},[597,1641,839],{"class":625},[597,1643,629],{"class":618},[597,1645,713],{"class":618},[597,1647,767],{"class":638},[597,1649,635],{"class":618},[597,1651,850],{"class":618},[597,1653,1654],{"class":599,"line":675},[597,1655,678],{"class":618},[597,1657,1658,1661,1663],{"class":599,"line":681},[597,1659,1660],{"class":625},"  $production",[597,1662,629],{"class":618},[597,1664,658],{"class":618},[597,1666,1667,1670,1672],{"class":599,"line":1375},[597,1668,1669],{"class":625},"    evlog",[597,1671,629],{"class":618},[597,1673,658],{"class":618},[597,1675,1677,1680,1682],{"class":599,"line":1676},8,[597,1678,1679],{"class":625},"      sampling",[597,1681,629],{"class":618},[597,1683,658],{"class":618},[597,1685,1687,1690,1692,1694,1697,1699,1702,1704,1707,1709,1712],{"class":599,"line":1686},9,[597,1688,1689],{"class":625},"        rates",[597,1691,629],{"class":618},[597,1693,701],{"class":618},[597,1695,1696],{"class":625}," info",[597,1698,629],{"class":618},[597,1700,1701],{"class":1249}," 10",[597,1703,741],{"class":618},[597,1705,1706],{"class":625}," debug",[597,1708,629],{"class":618},[597,1710,1711],{"class":1249}," 0",[597,1713,850],{"class":618},[597,1715,1717,1720,1722,1724,1727,1730,1732,1735,1738,1740,1743,1745,1748,1750,1752],{"class":599,"line":1716},10,[597,1718,1719],{"class":625},"        keep",[597,1721,629],{"class":618},[597,1723,632],{"class":614},[597,1725,1726],{"class":618},"{",[597,1728,1729],{"class":625}," status",[597,1731,629],{"class":618},[597,1733,1734],{"class":1249}," 400",[597,1736,1737],{"class":618}," },",[597,1739,701],{"class":618},[597,1741,1742],{"class":625}," duration",[597,1744,629],{"class":618},[597,1746,1747],{"class":1249}," 1000",[597,1749,707],{"class":618},[597,1751,644],{"class":614},[597,1753,647],{"class":618},[597,1755,1757],{"class":599,"line":1756},11,[597,1758,1759],{"class":618},"      },\n",[597,1761,1763],{"class":599,"line":1762},12,[597,1764,1765],{"class":618},"    },\n",[597,1767,1769],{"class":599,"line":1768},13,[597,1770,678],{"class":618},[597,1772,1774,1776],{"class":599,"line":1773},14,[597,1775,684],{"class":618},[597,1777,687],{"class":614},[587,1779,1781],{"className":589,"code":1780,"filename":691,"language":592,"meta":593,"style":593},"import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger } = createEvlog({\n  service: 'my-app',\n  sampling: {\n    rates: { info: 10, debug: 0 },\n    keep: [{ status: 400 }, { duration: 1000 }],\n  },\n})\n",[571,1782,1783,1801,1805,1829,1843,1852,1877,1910,1914],{"__ignoreMap":593},[597,1784,1785,1787,1789,1791,1793,1795,1797,1799],{"class":599,"line":600},[597,1786,698],{"class":603},[597,1788,701],{"class":618},[597,1790,704],{"class":614},[597,1792,707],{"class":618},[597,1794,710],{"class":603},[597,1796,713],{"class":618},[597,1798,716],{"class":638},[597,1800,719],{"class":618},[597,1802,1803],{"class":599,"line":622},[597,1804,725],{"emptyLinePlaceholder":724},[597,1806,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827],{"class":599,"line":650},[597,1808,604],{"class":603},[597,1810,733],{"class":732},[597,1812,701],{"class":618},[597,1814,738],{"class":614},[597,1816,741],{"class":618},[597,1818,744],{"class":614},[597,1820,684],{"class":618},[597,1822,749],{"class":618},[597,1824,704],{"class":610},[597,1826,615],{"class":614},[597,1828,619],{"class":618},[597,1830,1831,1833,1835,1837,1839,1841],{"class":599,"line":661},[597,1832,760],{"class":625},[597,1834,629],{"class":618},[597,1836,713],{"class":618},[597,1838,767],{"class":638},[597,1840,635],{"class":618},[597,1842,647],{"class":618},[597,1844,1845,1848,1850],{"class":599,"line":675},[597,1846,1847],{"class":625},"  sampling",[597,1849,629],{"class":618},[597,1851,658],{"class":618},[597,1853,1854,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875],{"class":599,"line":681},[597,1855,1856],{"class":625},"    rates",[597,1858,629],{"class":618},[597,1860,701],{"class":618},[597,1862,1696],{"class":625},[597,1864,629],{"class":618},[597,1866,1701],{"class":1249},[597,1868,741],{"class":618},[597,1870,1706],{"class":625},[597,1872,629],{"class":618},[597,1874,1711],{"class":1249},[597,1876,850],{"class":618},[597,1878,1879,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908],{"class":599,"line":1375},[597,1880,1881],{"class":625},"    keep",[597,1883,629],{"class":618},[597,1885,632],{"class":614},[597,1887,1726],{"class":618},[597,1889,1729],{"class":625},[597,1891,629],{"class":618},[597,1893,1734],{"class":1249},[597,1895,1737],{"class":618},[597,1897,701],{"class":618},[597,1899,1742],{"class":625},[597,1901,629],{"class":618},[597,1903,1747],{"class":1249},[597,1905,707],{"class":618},[597,1907,644],{"class":614},[597,1909,647],{"class":618},[597,1911,1912],{"class":599,"line":1676},[597,1913,678],{"class":618},[597,1915,1916,1918],{"class":599,"line":1686},[597,1917,684],{"class":618},[597,1919,687],{"class":614},[587,1921,1923],{"className":589,"code":1922,"filename":792,"language":592,"meta":593,"style":593},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  sampling: {\n    rates: { info: 10, debug: 0 },\n    keep: [{ status: 400 }, { duration: 1000 }],\n  },\n})\n",[571,1924,1925,1943,1947,1955,1975,1983,2007,2039,2043],{"__ignoreMap":593},[597,1926,1927,1929,1931,1933,1935,1937,1939,1941],{"class":599,"line":600},[597,1928,698],{"class":603},[597,1930,701],{"class":618},[597,1932,803],{"class":614},[597,1934,707],{"class":618},[597,1936,710],{"class":603},[597,1938,713],{"class":618},[597,1940,812],{"class":638},[597,1942,719],{"class":618},[597,1944,1945],{"class":599,"line":622},[597,1946,725],{"emptyLinePlaceholder":724},[597,1948,1949,1951,1953],{"class":599,"line":650},[597,1950,823],{"class":610},[597,1952,615],{"class":614},[597,1954,619],{"class":618},[597,1956,1957,1959,1961,1963,1965,1967,1969,1971,1973],{"class":599,"line":661},[597,1958,832],{"class":625},[597,1960,629],{"class":618},[597,1962,701],{"class":618},[597,1964,839],{"class":625},[597,1966,629],{"class":618},[597,1968,713],{"class":618},[597,1970,767],{"class":638},[597,1972,635],{"class":618},[597,1974,850],{"class":618},[597,1976,1977,1979,1981],{"class":599,"line":675},[597,1978,1847],{"class":625},[597,1980,629],{"class":618},[597,1982,658],{"class":618},[597,1984,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005],{"class":599,"line":681},[597,1986,1856],{"class":625},[597,1988,629],{"class":618},[597,1990,701],{"class":618},[597,1992,1696],{"class":625},[597,1994,629],{"class":618},[597,1996,1701],{"class":1249},[597,1998,741],{"class":618},[597,2000,1706],{"class":625},[597,2002,629],{"class":618},[597,2004,1711],{"class":1249},[597,2006,850],{"class":618},[597,2008,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037],{"class":599,"line":1375},[597,2010,1881],{"class":625},[597,2012,629],{"class":618},[597,2014,632],{"class":614},[597,2016,1726],{"class":618},[597,2018,1729],{"class":625},[597,2020,629],{"class":618},[597,2022,1734],{"class":1249},[597,2024,1737],{"class":618},[597,2026,701],{"class":618},[597,2028,1742],{"class":625},[597,2030,629],{"class":618},[597,2032,1747],{"class":1249},[597,2034,707],{"class":618},[597,2036,644],{"class":614},[597,2038,647],{"class":618},[597,2040,2041],{"class":599,"line":1676},[597,2042,678],{"class":618},[597,2044,2045,2047],{"class":599,"line":1686},[597,2046,684],{"class":618},[597,2048,687],{"class":614},[576,2050,2052],{"id":2051},"before-after","Before \u002F After",[553,2054,2055],{},"Without redaction, sensitive data lands in your logs and drains:",[587,2057,2061],{"className":2058,"code":2059,"language":2060,"meta":593,"style":593},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"user\": { \"email\": \"alice@example.com\", \"ip\": \"192.168.1.42\" },\n  \"payment\": { \"card\": \"4111111111111111\" },\n  \"auth\": \"Bearer sk_live_abc123def456\"\n}\n","json",[571,2062,2063,2067,2117,2147,2166],{"__ignoreMap":593},[597,2064,2065],{"class":599,"line":600},[597,2066,619],{"class":618},[597,2068,2069,2072,2075,2078,2080,2082,2085,2087,2089,2091,2093,2095,2097,2099,2101,2104,2106,2108,2110,2113,2115],{"class":599,"line":622},[597,2070,2071],{"class":618},"  \"",[597,2073,2074],{"class":732},"user",[597,2076,2077],{"class":618},"\"",[597,2079,629],{"class":618},[597,2081,701],{"class":618},[597,2083,2084],{"class":618}," \"",[597,2086,938],{"class":1069},[597,2088,2077],{"class":618},[597,2090,629],{"class":618},[597,2092,2084],{"class":618},[597,2094,943],{"class":638},[597,2096,2077],{"class":618},[597,2098,741],{"class":618},[597,2100,2084],{"class":618},[597,2102,2103],{"class":1069},"ip",[597,2105,2077],{"class":618},[597,2107,629],{"class":618},[597,2109,2084],{"class":618},[597,2111,2112],{"class":638},"192.168.1.42",[597,2114,2077],{"class":618},[597,2116,850],{"class":618},[597,2118,2119,2121,2124,2126,2128,2130,2132,2135,2137,2139,2141,2143,2145],{"class":599,"line":650},[597,2120,2071],{"class":618},[597,2122,2123],{"class":732},"payment",[597,2125,2077],{"class":618},[597,2127,629],{"class":618},[597,2129,701],{"class":618},[597,2131,2084],{"class":618},[597,2133,2134],{"class":1069},"card",[597,2136,2077],{"class":618},[597,2138,629],{"class":618},[597,2140,2084],{"class":618},[597,2142,926],{"class":638},[597,2144,2077],{"class":618},[597,2146,850],{"class":618},[597,2148,2149,2151,2154,2156,2158,2160,2163],{"class":599,"line":661},[597,2150,2071],{"class":618},[597,2152,2153],{"class":732},"auth",[597,2155,2077],{"class":618},[597,2157,629],{"class":618},[597,2159,2084],{"class":618},[597,2161,2162],{"class":638},"Bearer sk_live_abc123def456",[597,2164,2165],{"class":618},"\"\n",[597,2167,2168],{"class":599,"line":675},[597,2169,1120],{"class":618},[553,2171,2172,2173,629],{},"With ",[571,2174,872],{},[587,2176,2178],{"className":2058,"code":2177,"language":2060,"meta":593,"style":593},"{\n  \"user\": { \"email\": \"a***@***.com\", \"ip\": \"***.***.***.42\" },\n  \"payment\": { \"card\": \"****1111\" },\n  \"auth\": \"Bearer ***\"\n}\n",[571,2179,2180,2184,2229,2257,2273],{"__ignoreMap":593},[597,2181,2182],{"class":599,"line":600},[597,2183,619],{"class":618},[597,2185,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2225,2227],{"class":599,"line":622},[597,2187,2071],{"class":618},[597,2189,2074],{"class":732},[597,2191,2077],{"class":618},[597,2193,629],{"class":618},[597,2195,701],{"class":618},[597,2197,2084],{"class":618},[597,2199,938],{"class":1069},[597,2201,2077],{"class":618},[597,2203,629],{"class":618},[597,2205,2084],{"class":618},[597,2207,948],{"class":638},[597,2209,2077],{"class":618},[597,2211,741],{"class":618},[597,2213,2084],{"class":618},[597,2215,2103],{"class":1069},[597,2217,2077],{"class":618},[597,2219,629],{"class":618},[597,2221,2084],{"class":618},[597,2223,2224],{"class":638},"***.***.***.42",[597,2226,2077],{"class":618},[597,2228,850],{"class":618},[597,2230,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255],{"class":599,"line":650},[597,2232,2071],{"class":618},[597,2234,2123],{"class":732},[597,2236,2077],{"class":618},[597,2238,629],{"class":618},[597,2240,701],{"class":618},[597,2242,2084],{"class":618},[597,2244,2134],{"class":1069},[597,2246,2077],{"class":618},[597,2248,629],{"class":618},[597,2250,2084],{"class":618},[597,2252,931],{"class":638},[597,2254,2077],{"class":618},[597,2256,850],{"class":618},[597,2258,2259,2261,2263,2265,2267,2269,2271],{"class":599,"line":661},[597,2260,2071],{"class":618},[597,2262,2153],{"class":732},[597,2264,2077],{"class":618},[597,2266,629],{"class":618},[597,2268,2084],{"class":618},[597,2270,1016],{"class":638},[597,2272,2165],{"class":618},[597,2274,2275],{"class":599,"line":675},[597,2276,1120],{"class":618},[553,2278,2279],{},"Same debugging context, no PII in your Axiom\u002FDatadog\u002FSentry.",[576,2281,2283],{"id":2282},"next-steps","Next Steps",[2285,2286,2287,2293,2298],"ul",{},[1540,2288,2289,2292],{},[2290,2291,185],"a",{"href":186}," - Security guidelines and production checklist",[1540,2294,2295,2297],{},[2290,2296,175],{"href":176}," - Control log volume in production",[1540,2299,2300,2302],{},[2290,2301,170],{"href":171}," - Full configuration reference",[2304,2305,2306],"style",{},"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":593,"searchDepth":622,"depth":622,"links":2308},[2309,2310,2311,2317,2318,2319,2320,2321],{"id":578,"depth":622,"text":579},{"id":879,"depth":622,"text":880},{"id":1048,"depth":622,"text":170,"children":2312},[2313,2314,2315,2316],{"id":1052,"depth":650,"text":1053},{"id":1137,"depth":650,"text":1138},{"id":1200,"depth":650,"text":1201},{"id":1293,"depth":650,"text":1294},{"id":1380,"depth":622,"text":1381},{"id":1531,"depth":622,"text":1532},{"id":1581,"depth":622,"text":1582},{"id":2051,"depth":622,"text":2052},{"id":2282,"depth":622,"text":2283},"Automatically scrub PII from wide events before console output and drains. Built-in smart masking for credit cards, emails, IPs, phone numbers, JWTs, and more.","md",[2325,2328],{"label":185,"icon":129,"to":186,"color":2326,"variant":2327},"neutral","subtle",{"label":170,"icon":173,"to":171,"color":2326,"variant":2327},{},{"icon":200},{"title":197,"description":2322},"1xprVLum-TtCQgQk5OFBFDZl3w9dIj5IaHLLebWEEGE",[2334,2336],{"title":192,"path":193,"stem":194,"description":2335,"icon":195,"children":-1},"Build-time optimizations for any Vite-based framework. Auto-init, debug stripping, source location injection, and optional auto-imports.",{"title":41,"path":207,"stem":208,"description":2337,"icon":209,"children":-1},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.",1778338243313]