[{"data":1,"prerenderedAt":2893},["ShallowReactive",2],{"navigation_docs":3,"-learn-redaction":534,"-learn-redaction-surround":2888},[4,30,80,128,308,440,499],{"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,123],{"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,"icon":127},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":129,"path":130,"stem":131,"children":132,"page":29},"Integrate","\u002Fintegrate","4.integrate",[133,137,220],{"title":36,"path":134,"stem":135,"icon":136},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[142,145,175,200],{"title":36,"path":143,"stem":144,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":146,"path":147,"stem":148,"children":149,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[150,155,160,165,170],{"title":151,"path":152,"stem":153,"icon":154},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":156,"path":157,"stem":158,"icon":159},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":161,"path":162,"stem":163,"icon":164},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":166,"path":167,"stem":168,"icon":169},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":171,"path":172,"stem":173,"icon":174},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[180,185,190,195],{"title":181,"path":182,"stem":183,"icon":184},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":186,"path":187,"stem":188,"icon":189},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":191,"path":192,"stem":193,"icon":194},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":196,"path":197,"stem":198,"icon":199},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":201,"path":202,"stem":203,"children":204,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[205,210,215],{"title":206,"path":207,"stem":208,"icon":209},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":211,"path":212,"stem":213,"icon":214},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":216,"path":217,"stem":218,"icon":219},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":221,"path":222,"stem":223,"children":224,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[225,229,234,239,244,249,254,259,264,269,274,279,284,289,293,298,303],{"title":36,"path":226,"stem":227,"icon":228},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":230,"path":231,"stem":232,"icon":233},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":235,"path":236,"stem":237,"icon":238},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":240,"path":241,"stem":242,"icon":243},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":245,"path":246,"stem":247,"icon":248},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":250,"path":251,"stem":252,"icon":253},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":255,"path":256,"stem":257,"icon":258},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":260,"path":261,"stem":262,"icon":263},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":265,"path":266,"stem":267,"icon":268},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":270,"path":271,"stem":272,"icon":273},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":275,"path":276,"stem":277,"icon":278},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":280,"path":281,"stem":282,"icon":283},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":285,"path":286,"stem":287,"icon":288},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":290,"path":291,"stem":292,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":294,"path":295,"stem":296,"icon":297},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":299,"path":300,"stem":301,"icon":302},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":304,"path":305,"stem":306,"icon":307},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":309,"path":310,"stem":311,"children":312,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[313,316,321,350,377,409,430,435],{"title":36,"path":314,"stem":315,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":317,"path":318,"stem":319,"icon":320},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":322,"icon":323,"path":324,"stem":325,"children":326,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[327,330,335,340,345],{"title":36,"path":328,"stem":329,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":331,"path":332,"stem":333,"icon":334},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":336,"path":337,"stem":338,"icon":339},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":341,"path":342,"stem":343,"icon":344},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":346,"path":347,"stem":348,"icon":349},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":351,"icon":352,"path":353,"stem":354,"children":355,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[356,359,364,369,373],{"title":36,"path":357,"stem":358,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":360,"path":361,"stem":362,"icon":363},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":365,"path":366,"stem":367,"icon":368},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":370,"path":371,"stem":372,"icon":320},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":374,"path":375,"stem":376,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[383,386,391,396,401,405],{"title":36,"path":384,"stem":385,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":387,"path":388,"stem":389,"icon":390},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":392,"path":393,"stem":394,"icon":395},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":397,"path":398,"stem":399,"icon":400},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":402,"path":403,"stem":404,"icon":379},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":406,"path":407,"stem":408,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":346,"icon":107,"path":410,"stem":411,"children":412,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[413,416,421,426],{"title":36,"path":414,"stem":415,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":417,"path":418,"stem":419,"icon":420},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":422,"path":423,"stem":424,"icon":425},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":427,"path":428,"stem":429,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":431,"path":432,"stem":433,"icon":434},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":436,"path":437,"stem":438,"icon":439},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":441,"path":442,"stem":443,"children":444,"page":29},"Extend","\u002Fextend","6.extend",[445,449,454,459,463,468,472,476,480,484,489,494],{"title":36,"path":446,"stem":447,"icon":448},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":450,"path":451,"stem":452,"icon":453},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":455,"path":456,"stem":457,"icon":458},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":460,"path":461,"stem":462,"icon":453},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":464,"path":465,"stem":466,"icon":467},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":406,"path":469,"stem":470,"icon":471},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":473,"path":474,"stem":475,"icon":448},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":477,"path":478,"stem":479,"icon":434},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":481,"path":482,"stem":483,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":485,"path":486,"stem":487,"icon":488},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":490,"path":491,"stem":492,"icon":493},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":495,"path":496,"stem":497,"icon":498},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":427,"path":500,"stem":501,"children":502,"page":29},"\u002Freference","7.reference",[503,508,511,516,520,525,529],{"title":504,"path":505,"stem":506,"icon":507},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":374,"path":509,"stem":510,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":512,"path":513,"stem":514,"icon":515},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":517,"path":518,"stem":519,"icon":379},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":521,"path":522,"stem":523,"icon":524},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":526,"path":527,"stem":528,"icon":434},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":530,"path":531,"stem":532,"icon":533},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"id":535,"title":66,"body":536,"description":2877,"extension":2878,"links":2879,"meta":2884,"navigation":2885,"path":67,"seo":2886,"stem":68,"__hash__":2887},"docs\u002F2.learn\u002F6.redaction.md",{"type":537,"value":538,"toc":2860},"minimark",[539,551,562,567,570,854,861,864,868,879,1021,1033,1036,1041,1059,1169,1246,1265,1272,1276,1279,1335,1339,1345,1428,1432,1439,1442,1574,1577,1650,1663,1669,1673,1679,1771,1788,1791,1812,1816,1819,1898,1902,2048,2065,2069,2072,2117,2129,2136,2140,2143,2602,2606,2609,2723,2728,2830,2833,2837,2856],[540,541,542,543,547,548,550],"p",{},"Wide events capture comprehensive context, which makes it easy to accidentally log sensitive data. Auto-redaction scrubs PII from events ",[544,545,546],"strong",{},"before"," console output and ",[544,549,546],{}," any drain sees the data.",[540,552,553,556,557,561],{},[544,554,555],{},"Redaction is enabled by default in production"," (",[558,559,560],"code",{},"NODE_ENV === 'production'","). In development, it is off so you see full values for debugging. No configuration needed — just deploy.",[563,564,566],"h2",{"id":565},"opting-out","Opting Out",[540,568,569],{},"If you need to disable redaction in production:",[571,572,573,675,776],"code-group",{},[574,575,581],"pre",{"className":576,"code":577,"filename":578,"language":579,"meta":580,"style":580},"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","",[558,582,583,607,635,646,660,666],{"__ignoreMap":580},[584,585,588,592,595,599,603],"span",{"class":586,"line":587},"line",1,[584,589,591],{"class":590},"s7zQu","export",[584,593,594],{"class":590}," default",[584,596,598],{"class":597},"s2Zo4"," defineNuxtConfig",[584,600,602],{"class":601},"sTEyZ","(",[584,604,606],{"class":605},"sMK4o","{\n",[584,608,610,614,617,620,623,627,629,632],{"class":586,"line":609},2,[584,611,613],{"class":612},"swJcz","  modules",[584,615,616],{"class":605},":",[584,618,619],{"class":601}," [",[584,621,622],{"class":605},"'",[584,624,626],{"class":625},"sfazB","evlog\u002Fnuxt",[584,628,622],{"class":605},[584,630,631],{"class":601},"]",[584,633,634],{"class":605},",\n",[584,636,638,641,643],{"class":586,"line":637},3,[584,639,640],{"class":612},"  evlog",[584,642,616],{"class":605},[584,644,645],{"class":605}," {\n",[584,647,649,652,654,658],{"class":586,"line":648},4,[584,650,651],{"class":612},"    redact",[584,653,616],{"class":605},[584,655,657],{"class":656},"sfNiH"," false",[584,659,634],{"class":605},[584,661,663],{"class":586,"line":662},5,[584,664,665],{"class":605},"  },\n",[584,667,669,672],{"class":586,"line":668},6,[584,670,671],{"class":605},"}",[584,673,674],{"class":601},")\n",[574,676,679],{"className":576,"code":677,"filename":678,"language":579,"meta":580,"style":580},"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)",[558,680,681,707,713,743,759,770],{"__ignoreMap":580},[584,682,683,686,689,692,695,698,701,704],{"class":586,"line":587},[584,684,685],{"class":590},"import",[584,687,688],{"class":605}," {",[584,690,691],{"class":601}," createEvlog",[584,693,694],{"class":605}," }",[584,696,697],{"class":590}," from",[584,699,700],{"class":605}," '",[584,702,703],{"class":625},"evlog\u002Fnext",[584,705,706],{"class":605},"'\n",[584,708,709],{"class":586,"line":609},[584,710,712],{"emptyLinePlaceholder":711},true,"\n",[584,714,715,717,721,723,726,729,732,734,737,739,741],{"class":586,"line":637},[584,716,591],{"class":590},[584,718,720],{"class":719},"spNyl"," const",[584,722,688],{"class":605},[584,724,725],{"class":601}," withEvlog",[584,727,728],{"class":605},",",[584,730,731],{"class":601}," useLogger ",[584,733,671],{"class":605},[584,735,736],{"class":605}," =",[584,738,691],{"class":597},[584,740,602],{"class":601},[584,742,606],{"class":605},[584,744,745,748,750,752,755,757],{"class":586,"line":648},[584,746,747],{"class":612},"  service",[584,749,616],{"class":605},[584,751,700],{"class":605},[584,753,754],{"class":625},"my-app",[584,756,622],{"class":605},[584,758,634],{"class":605},[584,760,761,764,766,768],{"class":586,"line":662},[584,762,763],{"class":612},"  redact",[584,765,616],{"class":605},[584,767,657],{"class":656},[584,769,634],{"class":605},[584,771,772,774],{"class":586,"line":668},[584,773,671],{"class":605},[584,775,674],{"class":601},[574,777,780],{"className":576,"code":778,"filename":779,"language":579,"meta":580,"style":580},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  redact: false,\n})\n","index.ts (Hono \u002F Express \u002F Fastify)",[558,781,782,802,806,815,838,848],{"__ignoreMap":580},[584,783,784,786,788,791,793,795,797,800],{"class":586,"line":587},[584,785,685],{"class":590},[584,787,688],{"class":605},[584,789,790],{"class":601}," initLogger",[584,792,694],{"class":605},[584,794,697],{"class":590},[584,796,700],{"class":605},[584,798,799],{"class":625},"evlog",[584,801,706],{"class":605},[584,803,804],{"class":586,"line":609},[584,805,712],{"emptyLinePlaceholder":711},[584,807,808,811,813],{"class":586,"line":637},[584,809,810],{"class":597},"initLogger",[584,812,602],{"class":601},[584,814,606],{"class":605},[584,816,817,820,822,824,827,829,831,833,835],{"class":586,"line":648},[584,818,819],{"class":612},"  env",[584,821,616],{"class":605},[584,823,688],{"class":605},[584,825,826],{"class":612}," service",[584,828,616],{"class":605},[584,830,700],{"class":605},[584,832,754],{"class":625},[584,834,622],{"class":605},[584,836,837],{"class":605}," },\n",[584,839,840,842,844,846],{"class":586,"line":662},[584,841,763],{"class":612},[584,843,616],{"class":605},[584,845,657],{"class":656},[584,847,634],{"class":605},[584,849,850,852],{"class":586,"line":668},[584,851,671],{"class":605},[584,853,674],{"class":601},[540,855,856,857,860],{},"You can also enable redaction explicitly in development with ",[558,858,859],{},"redact: true",".",[862,863],"redaction-stream",{},[563,865,867],{"id":866},"smart-masking","Smart Masking",[540,869,870,871,874,875,878],{},"Built-in patterns use ",[544,872,873],{},"partial masking"," instead of flat ",[558,876,877],{},"[REDACTED]"," — preserving enough context for debugging while protecting the actual data.",[880,881,882,898],"table",{},[883,884,885],"thead",{},[886,887,888,892,895],"tr",{},[889,890,891],"th",{},"Pattern",[889,893,894],{},"Example Input",[889,896,897],{},"Masked Output",[899,900,901,919,936,953,970,987,1004],"tbody",{},[886,902,903,909,914],{},[904,905,906],"td",{},[558,907,908],{},"creditCard",[904,910,911],{},[558,912,913],{},"4111111111111111",[904,915,916],{},[558,917,918],{},"****1111",[886,920,921,926,931],{},[904,922,923],{},[558,924,925],{},"email",[904,927,928],{},[558,929,930],{},"alice@example.com",[904,932,933],{},[558,934,935],{},"a***@***.com",[886,937,938,943,948],{},[904,939,940],{},[558,941,942],{},"ipv4",[904,944,945],{},[558,946,947],{},"192.168.1.100",[904,949,950],{},[558,951,952],{},"***.***.***.100",[886,954,955,960,965],{},[904,956,957],{},[558,958,959],{},"phone",[904,961,962],{},[558,963,964],{},"+33 6 12 34 56 78",[904,966,967],{},[558,968,969],{},"+33 ****5678",[886,971,972,977,982],{},[904,973,974],{},[558,975,976],{},"jwt",[904,978,979],{},[558,980,981],{},"eyJhbGciOiJIUzI1NiIs...",[904,983,984],{},[558,985,986],{},"eyJ***.***",[886,988,989,994,999],{},[904,990,991],{},[558,992,993],{},"bearer",[904,995,996],{},[558,997,998],{},"Bearer sk_live_abc123...",[904,1000,1001],{},[558,1002,1003],{},"Bearer ***",[886,1005,1006,1011,1016],{},[904,1007,1008],{},[558,1009,1010],{},"iban",[904,1012,1013],{},[558,1014,1015],{},"FR76 3000 6000 0112 ...189",[904,1017,1018],{},[558,1019,1020],{},"FR76****189",[1022,1023,1025,1028,1029,1032],"callout",{"color":1024,"icon":13},"info",[558,1026,1027],{},"127.0.0.1"," and ",[558,1030,1031],{},"0.0.0.0"," are excluded from IPv4 masking since they are not real client addresses.",[563,1034,504],{"id":1035},"configuration",[1037,1038,1040],"h3",{"id":1039},"path-patterns","Path Patterns",[540,1042,1043,1044,1047,1048,1051,1052,1055,1056,616],{},"Use a single ",[558,1045,1046],{},"paths"," array with dot-notation and globs. A bare segment like ",[558,1049,1050],{},"password"," is shorthand for ",[558,1053,1054],{},"**.password"," — it redacts that key at ",[544,1057,1058],{},"any nesting depth",[574,1060,1062],{"className":576,"code":1061,"language":579,"meta":580,"style":580},"evlog: {\n  redact: {\n    paths: [\n      'password',              \u002F\u002F same as '**.password'\n      '*_token',               \u002F\u002F key-name glob at any depth\n      'headers.x-forwarded-for', \u002F\u002F exact path\n      'user.*',                \u002F\u002F everything directly under user\n    ],\n  }\n}\n",[558,1063,1064,1073,1081,1091,1106,1120,1134,1149,1157,1163],{"__ignoreMap":580},[584,1065,1066,1069,1071],{"class":586,"line":587},[584,1067,799],{"class":1068},"sBMFI",[584,1070,616],{"class":605},[584,1072,645],{"class":605},[584,1074,1075,1077,1079],{"class":586,"line":609},[584,1076,763],{"class":1068},[584,1078,616],{"class":605},[584,1080,645],{"class":605},[584,1082,1083,1086,1088],{"class":586,"line":637},[584,1084,1085],{"class":1068},"    paths",[584,1087,616],{"class":605},[584,1089,1090],{"class":612}," [\n",[584,1092,1093,1096,1098,1100,1102],{"class":586,"line":648},[584,1094,1095],{"class":605},"      '",[584,1097,1050],{"class":625},[584,1099,622],{"class":605},[584,1101,728],{"class":605},[584,1103,1105],{"class":1104},"sHwdD","              \u002F\u002F same as '**.password'\n",[584,1107,1108,1110,1113,1115,1117],{"class":586,"line":662},[584,1109,1095],{"class":605},[584,1111,1112],{"class":625},"*_token",[584,1114,622],{"class":605},[584,1116,728],{"class":605},[584,1118,1119],{"class":1104},"               \u002F\u002F key-name glob at any depth\n",[584,1121,1122,1124,1127,1129,1131],{"class":586,"line":668},[584,1123,1095],{"class":605},[584,1125,1126],{"class":625},"headers.x-forwarded-for",[584,1128,622],{"class":605},[584,1130,728],{"class":605},[584,1132,1133],{"class":1104}," \u002F\u002F exact path\n",[584,1135,1137,1139,1142,1144,1146],{"class":586,"line":1136},7,[584,1138,1095],{"class":605},[584,1140,1141],{"class":625},"user.*",[584,1143,622],{"class":605},[584,1145,728],{"class":605},[584,1147,1148],{"class":1104},"                \u002F\u002F everything directly under user\n",[584,1150,1152,1155],{"class":586,"line":1151},8,[584,1153,1154],{"class":612},"    ]",[584,1156,634],{"class":605},[584,1158,1160],{"class":586,"line":1159},9,[584,1161,1162],{"class":605},"  }\n",[584,1164,1166],{"class":586,"line":1165},10,[584,1167,1168],{"class":605},"}\n",[880,1170,1171,1180],{},[883,1172,1173],{},[886,1174,1175,1177],{},[889,1176,891],{},[889,1178,1179],{},"Matches",[899,1181,1182,1192,1206,1222,1236],{},[886,1183,1184,1189],{},[904,1185,1186],{},[558,1187,1188],{},"user.email",[904,1190,1191],{},"Exact path only",[886,1193,1194,1201],{},[904,1195,1196,1198,1199],{},[558,1197,1050],{}," or ",[558,1200,1054],{},[904,1202,1203,1205],{},[558,1204,1050],{}," key at any depth",[886,1207,1208,1212],{},[904,1209,1210],{},[558,1211,1112],{},[904,1213,1214,1215,1218,1219],{},"Key names like ",[558,1216,1217],{},"access_token",", ",[558,1220,1221],{},"refresh_token",[886,1223,1224,1228],{},[904,1225,1226],{},[558,1227,1141],{},[904,1229,1230,1218,1232,1235],{},[558,1231,1188],{},[558,1233,1234],{},"user.password",", etc.",[886,1237,1238,1243],{},[904,1239,1240],{},[558,1241,1242],{},"audit.changes.*.password",[904,1244,1245],{},"Mixed exact + wildcard segments",[540,1247,1248,1249,1252,1253,1256,1257,1260,1261,1264],{},"Path redaction replaces the ",[544,1250,1251],{},"entire value"," (including nested objects) with ",[558,1254,1255],{},"replacement",". Use ",[558,1258,1259],{},"patterns"," when you need regex on ",[544,1262,1263],{},"string values"," inside fields.",[540,1266,1267,1268,1271],{},"This matches ",[558,1269,1270],{},"auditDiff({ redactPaths: ['password'] })"," — same glob syntax, applied globally at emit time.",[1037,1273,1275],{"id":1274},"selective-built-ins","Selective Built-ins",[540,1277,1278],{},"Pick only the patterns you need:",[574,1280,1282],{"className":576,"code":1281,"language":579,"meta":580,"style":580},"evlog: {\n  redact: {\n    builtins: ['email', 'creditCard'],\n  }\n}\n",[558,1283,1284,1292,1300,1327,1331],{"__ignoreMap":580},[584,1285,1286,1288,1290],{"class":586,"line":587},[584,1287,799],{"class":1068},[584,1289,616],{"class":605},[584,1291,645],{"class":605},[584,1293,1294,1296,1298],{"class":586,"line":609},[584,1295,763],{"class":1068},[584,1297,616],{"class":605},[584,1299,645],{"class":605},[584,1301,1302,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325],{"class":586,"line":637},[584,1303,1304],{"class":1068},"    builtins",[584,1306,616],{"class":605},[584,1308,619],{"class":612},[584,1310,622],{"class":605},[584,1312,925],{"class":625},[584,1314,622],{"class":605},[584,1316,728],{"class":605},[584,1318,700],{"class":605},[584,1320,908],{"class":625},[584,1322,622],{"class":605},[584,1324,631],{"class":612},[584,1326,634],{"class":605},[584,1328,1329],{"class":586,"line":648},[584,1330,1162],{"class":605},[584,1332,1333],{"class":586,"line":662},[584,1334,1168],{"class":605},[1037,1336,1338],{"id":1337},"custom-patterns","Custom Patterns",[540,1340,1341,1342,1344],{},"Add your own regex patterns. These use the flat ",[558,1343,1255],{}," string, not smart masking:",[574,1346,1348],{"className":576,"code":1347,"language":579,"meta":580,"style":580},"evlog: {\n  redact: {\n    patterns: [\u002FSECRET_\\w+\u002Fg, \u002Fsk_live_\\w+\u002Fg],\n    replacement: '***',\n  }\n}\n",[558,1349,1350,1358,1366,1404,1420,1424],{"__ignoreMap":580},[584,1351,1352,1354,1356],{"class":586,"line":587},[584,1353,799],{"class":1068},[584,1355,616],{"class":605},[584,1357,645],{"class":605},[584,1359,1360,1362,1364],{"class":586,"line":609},[584,1361,763],{"class":1068},[584,1363,616],{"class":605},[584,1365,645],{"class":605},[584,1367,1368,1371,1373,1375,1378,1381,1384,1388,1390,1393,1396,1398,1400,1402],{"class":586,"line":637},[584,1369,1370],{"class":1068},"    patterns",[584,1372,616],{"class":605},[584,1374,619],{"class":612},[584,1376,1377],{"class":605},"\u002F",[584,1379,1380],{"class":625},"SECRET_\\w",[584,1382,1383],{"class":605},"+\u002F",[584,1385,1387],{"class":1386},"sbssI","g",[584,1389,728],{"class":605},[584,1391,1392],{"class":605}," \u002F",[584,1394,1395],{"class":625},"sk_live_\\w",[584,1397,1383],{"class":605},[584,1399,1387],{"class":1386},[584,1401,631],{"class":612},[584,1403,634],{"class":605},[584,1405,1406,1409,1411,1413,1416,1418],{"class":586,"line":648},[584,1407,1408],{"class":1068},"    replacement",[584,1410,616],{"class":605},[584,1412,700],{"class":605},[584,1414,1415],{"class":625},"***",[584,1417,622],{"class":605},[584,1419,634],{"class":605},[584,1421,1422],{"class":586,"line":662},[584,1423,1162],{"class":605},[584,1425,1426],{"class":586,"line":668},[584,1427,1168],{"class":605},[1037,1429,1431],{"id":1430},"computed-replacements","Computed Replacements",[540,1433,1434,1435,1438],{},"When the replacement has to be ",[544,1436,1437],{},"derived"," from the value it replaces, pass a function instead of a string. It runs at the same point as the rest of redaction — before the console write, before any drain.",[540,1440,1441],{},"The common case is keeping requests correlatable without exposing the credential that identifies them:",[574,1443,1445],{"className":576,"code":1444,"language":579,"meta":580,"style":580},"initLogger({\n  redact: {\n    patterns: [\u002F\\\u002Fpublic\\\u002Fclaim\\\u002F([A-Za-z0-9._-]{12,})\u002Fg],\n    replacement: (_match, ctx) => `\u002Fpublic\u002Fclaim\u002F[tok:${fingerprint(ctx.groups[0])}]`,\n  },\n})\n\u002F\u002F \u002Fpublic\u002Fclaim\u002FeyJhbGciOi...  →  \u002Fpublic\u002Fclaim\u002F[tok:9f3a1c]\n",[558,1446,1447,1455,1463,1501,1559,1563,1569],{"__ignoreMap":580},[584,1448,1449,1451,1453],{"class":586,"line":587},[584,1450,810],{"class":597},[584,1452,602],{"class":601},[584,1454,606],{"class":605},[584,1456,1457,1459,1461],{"class":586,"line":609},[584,1458,763],{"class":612},[584,1460,616],{"class":605},[584,1462,645],{"class":605},[584,1464,1465,1467,1469,1471,1473,1476,1479,1481,1484,1486,1489,1492,1495,1497,1499],{"class":586,"line":637},[584,1466,1370],{"class":612},[584,1468,616],{"class":605},[584,1470,619],{"class":601},[584,1472,1377],{"class":605},[584,1474,1475],{"class":601},"\\\u002F",[584,1477,1478],{"class":625},"public",[584,1480,1475],{"class":601},[584,1482,1483],{"class":625},"claim",[584,1485,1475],{"class":601},[584,1487,1488],{"class":605},"([",[584,1490,1491],{"class":625},"A-Za-z0-9._-",[584,1493,1494],{"class":605},"]{12,})\u002F",[584,1496,1387],{"class":1386},[584,1498,631],{"class":601},[584,1500,634],{"class":605},[584,1502,1503,1505,1507,1509,1513,1515,1518,1521,1524,1527,1530,1533,1536,1539,1541,1544,1547,1550,1552,1554,1557],{"class":586,"line":648},[584,1504,1408],{"class":597},[584,1506,616],{"class":605},[584,1508,556],{"class":605},[584,1510,1512],{"class":1511},"sHdIc","_match",[584,1514,728],{"class":605},[584,1516,1517],{"class":1511}," ctx",[584,1519,1520],{"class":605},")",[584,1522,1523],{"class":719}," =>",[584,1525,1526],{"class":605}," `",[584,1528,1529],{"class":625},"\u002Fpublic\u002Fclaim\u002F[tok:",[584,1531,1532],{"class":605},"${",[584,1534,1535],{"class":597},"fingerprint",[584,1537,1538],{"class":601},"(ctx",[584,1540,860],{"class":605},[584,1542,1543],{"class":601},"groups[",[584,1545,1546],{"class":1386},"0",[584,1548,1549],{"class":601},"])",[584,1551,671],{"class":605},[584,1553,631],{"class":625},[584,1555,1556],{"class":605},"`",[584,1558,634],{"class":605},[584,1560,1561],{"class":586,"line":662},[584,1562,665],{"class":605},[584,1564,1565,1567],{"class":586,"line":668},[584,1566,671],{"class":605},[584,1568,674],{"class":601},[584,1570,1571],{"class":586,"line":1136},[584,1572,1573],{"class":1104},"\u002F\u002F \u002Fpublic\u002Fclaim\u002FeyJhbGciOi...  →  \u002Fpublic\u002Fclaim\u002F[tok:9f3a1c]\n",[540,1575,1576],{},"The function receives the matched value and a context object:",[880,1578,1579,1592],{},[883,1580,1581],{},[886,1582,1583,1586,1589],{},[889,1584,1585],{},"Field",[889,1587,1588],{},"Type",[889,1590,1591],{},"Description",[899,1593,1594,1614,1630],{},[886,1595,1596,1601,1606],{},[904,1597,1598],{},[558,1599,1600],{},"path",[904,1602,1603],{},[558,1604,1605],{},"string",[904,1607,1608,1609,1218,1611,1520],{},"Dot-notation path from the event root (",[558,1610,1188],{},[558,1612,1613],{},"items.0.token",[886,1615,1616,1621,1625],{},[904,1617,1618],{},[558,1619,1620],{},"key",[904,1622,1623],{},[558,1624,1605],{},[904,1626,1627,1628,1520],{},"Leaf key of the field (",[558,1629,925],{},[886,1631,1632,1637,1642],{},[904,1633,1634],{},[558,1635,1636],{},"groups",[904,1638,1639],{},[558,1640,1641],{},"string[]",[904,1643,1644,1645,1647,1648],{},"Capture groups of the matching ",[558,1646,1259],{}," entry. Only set for ",[558,1649,1259],{},[540,1651,1652,1653,1655,1656,1659,1660,1662],{},"For ",[558,1654,1046],{},", the matched value is the ",[544,1657,1658],{},"whole field value"," — any type, since path redaction replaces entire subtrees. For ",[558,1661,1259],{},", it is the matched substring.",[540,1664,1665,1666,1668],{},"If the function throws or returns a non-string, redaction falls back to ",[558,1667,877],{}," and logs the failure. A broken policy degrades to over-redaction, never to leaking the value it was meant to scrub.",[1037,1670,1672],{"id":1671},"conditional-policies","Conditional Policies",[540,1674,1675,1676,616],{},"Some policies cannot be expressed as a list of paths — redact a field only for certain tenants, only when a sibling field has a given value, or keep an allowlist rather than a denylist. Use ",[558,1677,1678],{},"transform",[574,1680,1682],{"className":576,"code":1681,"language":579,"meta":580,"style":580},"initLogger({\n  redact: {\n    transform: (event) => {\n      if (event.tenant === 'regulated') delete event.query\n    },\n  },\n})\n",[558,1683,1684,1692,1700,1718,1756,1761,1765],{"__ignoreMap":580},[584,1685,1686,1688,1690],{"class":586,"line":587},[584,1687,810],{"class":597},[584,1689,602],{"class":601},[584,1691,606],{"class":605},[584,1693,1694,1696,1698],{"class":586,"line":609},[584,1695,763],{"class":612},[584,1697,616],{"class":605},[584,1699,645],{"class":605},[584,1701,1702,1705,1707,1709,1712,1714,1716],{"class":586,"line":637},[584,1703,1704],{"class":597},"    transform",[584,1706,616],{"class":605},[584,1708,556],{"class":605},[584,1710,1711],{"class":1511},"event",[584,1713,1520],{"class":605},[584,1715,1523],{"class":719},[584,1717,645],{"class":605},[584,1719,1720,1723,1725,1727,1729,1732,1735,1737,1740,1742,1745,1748,1751,1753],{"class":586,"line":648},[584,1721,1722],{"class":590},"      if",[584,1724,556],{"class":612},[584,1726,1711],{"class":601},[584,1728,860],{"class":605},[584,1730,1731],{"class":601},"tenant",[584,1733,1734],{"class":605}," ===",[584,1736,700],{"class":605},[584,1738,1739],{"class":625},"regulated",[584,1741,622],{"class":605},[584,1743,1744],{"class":612},") ",[584,1746,1747],{"class":605},"delete",[584,1749,1750],{"class":601}," event",[584,1752,860],{"class":605},[584,1754,1755],{"class":601},"query\n",[584,1757,1758],{"class":586,"line":662},[584,1759,1760],{"class":605},"    },\n",[584,1762,1763],{"class":586,"line":668},[584,1764,665],{"class":605},[584,1766,1767,1769],{"class":586,"line":1136},[584,1768,671],{"class":605},[584,1770,674],{"class":601},[540,1772,1773,1775,1776,1778,1779,1218,1781,1784,1785,1787],{},[558,1774,1678],{}," runs ",[544,1777,546],{}," ",[558,1780,1046],{},[558,1782,1783],{},"builtins",", and ",[558,1786,1259],{},", so it sees raw values and the declarative rules still apply to whatever it leaves behind — a hook that misses a field is not your last line of defence. Mutate the event in place; it is already a private clone, so the object you logged is never touched.",[540,1789,1790],{},"It must be synchronous, since it runs on the emit path before the console write. Errors are caught and reported like drain failures: the declarative stages still run and the event is still logged.",[1022,1792,1795,1796,1028,1798,1800,1801,1803,1804,1807,1808,1811],{"color":1793,"icon":1794},"warning","i-lucide-triangle-alert","Function-valued ",[558,1797,1255],{},[558,1799,1678],{}," cannot be declared in ",[558,1802,578],{}," or a Nitro module's options — that config is serialized to JSON at build time, which drops functions. Declare them at runtime with ",[558,1805,1806],{},"initLogger()"," from a server plugin, or with ",[558,1809,1810],{},"createEvlog()",". The modules emit a build-time warning if you do it anyway.",[1037,1813,1815],{"id":1814},"disable-built-ins","Disable Built-ins",[540,1817,1818],{},"If you only want custom redaction:",[574,1820,1822],{"className":576,"code":1821,"language":579,"meta":580,"style":580},"evlog: {\n  redact: {\n    builtins: false,\n    paths: ['user.ssn'],\n    patterns: [\u002FINTERNAL_\\w+\u002Fg],\n  }\n}\n",[558,1823,1824,1832,1840,1850,1869,1890,1894],{"__ignoreMap":580},[584,1825,1826,1828,1830],{"class":586,"line":587},[584,1827,799],{"class":1068},[584,1829,616],{"class":605},[584,1831,645],{"class":605},[584,1833,1834,1836,1838],{"class":586,"line":609},[584,1835,763],{"class":1068},[584,1837,616],{"class":605},[584,1839,645],{"class":605},[584,1841,1842,1844,1846,1848],{"class":586,"line":637},[584,1843,1304],{"class":1068},[584,1845,616],{"class":605},[584,1847,657],{"class":656},[584,1849,634],{"class":605},[584,1851,1852,1854,1856,1858,1860,1863,1865,1867],{"class":586,"line":648},[584,1853,1085],{"class":1068},[584,1855,616],{"class":605},[584,1857,619],{"class":612},[584,1859,622],{"class":605},[584,1861,1862],{"class":625},"user.ssn",[584,1864,622],{"class":605},[584,1866,631],{"class":612},[584,1868,634],{"class":605},[584,1870,1871,1873,1875,1877,1879,1882,1884,1886,1888],{"class":586,"line":662},[584,1872,1370],{"class":1068},[584,1874,616],{"class":605},[584,1876,619],{"class":612},[584,1878,1377],{"class":605},[584,1880,1881],{"class":625},"INTERNAL_\\w",[584,1883,1383],{"class":605},[584,1885,1387],{"class":1386},[584,1887,631],{"class":612},[584,1889,634],{"class":605},[584,1891,1892],{"class":586,"line":668},[584,1893,1162],{"class":605},[584,1895,1896],{"class":586,"line":1136},[584,1897,1168],{"class":605},[563,1899,1901],{"id":1900},"configuration-reference","Configuration Reference",[880,1903,1904,1918],{},[883,1905,1906],{},[886,1907,1908,1911,1913,1916],{},[889,1909,1910],{},"Option",[889,1912,1588],{},[889,1914,1915],{},"Default",[889,1917,1591],{},[899,1919,1920,1945,1971,1992,2011,2030],{},[886,1921,1922,1927,1932,1938],{},[904,1923,1924],{},[558,1925,1926],{},"redact",[904,1928,1929],{},[558,1930,1931],{},"boolean | RedactConfig",[904,1933,1934,1937],{},[558,1935,1936],{},"true"," in production",[904,1939,1940,1941,1944],{},"Enabled by default in production. ",[558,1942,1943],{},"false"," to disable. Object for fine-grained control",[886,1946,1947,1951,1955,1960],{},[904,1948,1949],{},[558,1950,1046],{},[904,1952,1953],{},[558,1954,1641],{},[904,1956,1957],{},[558,1958,1959],{},"undefined",[904,1961,1962,1963,1218,1965,1218,1967,1218,1969,1520],{},"Dot-notation paths with globs (",[558,1964,1050],{},[558,1966,1054],{},[558,1968,1112],{},[558,1970,1141],{},[886,1972,1973,1977,1982,1986],{},[904,1974,1975],{},[558,1976,1259],{},[904,1978,1979],{},[558,1980,1981],{},"RegExp[]",[904,1983,1984],{},[558,1985,1959],{},[904,1987,1988,1989,1991],{},"Custom regex on string values. Uses flat ",[558,1990,1255],{}," string",[886,1993,1994,1998,2003,2006],{},[904,1995,1996],{},[558,1997,1783],{},[904,1999,2000],{},[558,2001,2002],{},"false | string[]",[904,2004,2005],{},"All enabled",[904,2007,2008,2010],{},[558,2009,1943],{}," disables built-ins. Array selects specific ones",[886,2012,2013,2017,2022,2027],{},[904,2014,2015],{},[558,2016,1255],{},[904,2018,2019],{},[558,2020,2021],{},"string | (matched, ctx) => string",[904,2023,2024],{},[558,2025,2026],{},"'[REDACTED]'",[904,2028,2029],{},"Replacement for paths and custom patterns. Built-ins use smart masking instead. A function computes it from the matched value",[886,2031,2032,2036,2041,2045],{},[904,2033,2034],{},[558,2035,1678],{},[904,2037,2038],{},[558,2039,2040],{},"(event) => void",[904,2042,2043],{},[558,2044,1959],{},[904,2046,2047],{},"Escape hatch for policies that are conditional, tenant-scoped, or allowlist-shaped. Runs before the declarative stages",[540,2049,2050,2051,1218,2053,1218,2055,1218,2057,1218,2059,1218,2061,1218,2063,860],{},"Available built-in names: ",[558,2052,908],{},[558,2054,925],{},[558,2056,942],{},[558,2058,959],{},[558,2060,976],{},[558,2062,993],{},[558,2064,1010],{},[563,2066,2068],{"id":2067},"how-it-works","How It Works",[540,2070,2071],{},"Redaction runs inside the emit pipeline, after the wide event is fully built but before any output:",[2073,2074,2075,2085,2093,2099,2105,2111],"ol",{},[2076,2077,2078,2081,2082,2084],"li",{},[544,2079,2080],{},"Transform"," — your ",[558,2083,1678],{}," hook, if any, sees the raw event first",[2076,2086,2087,2090,2091],{},[544,2088,2089],{},"Path redaction"," — exact paths and globs replaced with ",[558,2092,877],{},[2076,2094,2095,2098],{},[544,2096,2097],{},"Smart masking"," — built-in patterns scan all string values recursively with partial masking",[2076,2100,2101,2104],{},[544,2102,2103],{},"Pattern redaction"," — custom regex patterns scan all string values with flat replacement",[2076,2106,2107,2110],{},[544,2108,2109],{},"Console output"," — masked event printed to stdout",[2076,2112,2113,2116],{},[544,2114,2115],{},"Drain"," — masked event sent to external services",[540,2118,2119,2120,2123,2124,2126,2127,860],{},"Redaction is the only stage that runs before the console write. ",[558,2121,2122],{},"enrich"," and drains run after it, so they cannot scrub what has already reached stdout — anything that needs to happen before output belongs in ",[558,2125,1678],{}," or a function-valued ",[558,2128,1255],{},[1022,2130,2131,2132,2135],{"color":1024,"icon":28},"Redaction runs ",[544,2133,2134],{},"after"," the HTTP response is sent, so it adds zero latency to your API responses.",[563,2137,2139],{"id":2138},"production-example","Production Example",[540,2141,2142],{},"Redaction is already on by default in production. Combine with sampling for a typical setup:",[571,2144,2145,2331,2473],{},[574,2146,2148],{"className":576,"code":2147,"filename":578,"language":579,"meta":580,"style":580},"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",[558,2149,2150,2162,2180,2188,2209,2213,2222,2231,2240,2269,2308,2314,2319,2324],{"__ignoreMap":580},[584,2151,2152,2154,2156,2158,2160],{"class":586,"line":587},[584,2153,591],{"class":590},[584,2155,594],{"class":590},[584,2157,598],{"class":597},[584,2159,602],{"class":601},[584,2161,606],{"class":605},[584,2163,2164,2166,2168,2170,2172,2174,2176,2178],{"class":586,"line":609},[584,2165,613],{"class":612},[584,2167,616],{"class":605},[584,2169,619],{"class":601},[584,2171,622],{"class":605},[584,2173,626],{"class":625},[584,2175,622],{"class":605},[584,2177,631],{"class":601},[584,2179,634],{"class":605},[584,2181,2182,2184,2186],{"class":586,"line":637},[584,2183,640],{"class":612},[584,2185,616],{"class":605},[584,2187,645],{"class":605},[584,2189,2190,2193,2195,2197,2199,2201,2203,2205,2207],{"class":586,"line":648},[584,2191,2192],{"class":612},"    env",[584,2194,616],{"class":605},[584,2196,688],{"class":605},[584,2198,826],{"class":612},[584,2200,616],{"class":605},[584,2202,700],{"class":605},[584,2204,754],{"class":625},[584,2206,622],{"class":605},[584,2208,837],{"class":605},[584,2210,2211],{"class":586,"line":662},[584,2212,665],{"class":605},[584,2214,2215,2218,2220],{"class":586,"line":668},[584,2216,2217],{"class":612},"  $production",[584,2219,616],{"class":605},[584,2221,645],{"class":605},[584,2223,2224,2227,2229],{"class":586,"line":1136},[584,2225,2226],{"class":612},"    evlog",[584,2228,616],{"class":605},[584,2230,645],{"class":605},[584,2232,2233,2236,2238],{"class":586,"line":1151},[584,2234,2235],{"class":612},"      sampling",[584,2237,616],{"class":605},[584,2239,645],{"class":605},[584,2241,2242,2245,2247,2249,2252,2254,2257,2259,2262,2264,2267],{"class":586,"line":1159},[584,2243,2244],{"class":612},"        rates",[584,2246,616],{"class":605},[584,2248,688],{"class":605},[584,2250,2251],{"class":612}," info",[584,2253,616],{"class":605},[584,2255,2256],{"class":1386}," 10",[584,2258,728],{"class":605},[584,2260,2261],{"class":612}," debug",[584,2263,616],{"class":605},[584,2265,2266],{"class":1386}," 0",[584,2268,837],{"class":605},[584,2270,2271,2274,2276,2278,2281,2284,2286,2289,2292,2294,2297,2299,2302,2304,2306],{"class":586,"line":1165},[584,2272,2273],{"class":612},"        keep",[584,2275,616],{"class":605},[584,2277,619],{"class":601},[584,2279,2280],{"class":605},"{",[584,2282,2283],{"class":612}," status",[584,2285,616],{"class":605},[584,2287,2288],{"class":1386}," 400",[584,2290,2291],{"class":605}," },",[584,2293,688],{"class":605},[584,2295,2296],{"class":612}," duration",[584,2298,616],{"class":605},[584,2300,2301],{"class":1386}," 1000",[584,2303,694],{"class":605},[584,2305,631],{"class":601},[584,2307,634],{"class":605},[584,2309,2311],{"class":586,"line":2310},11,[584,2312,2313],{"class":605},"      },\n",[584,2315,2317],{"class":586,"line":2316},12,[584,2318,1760],{"class":605},[584,2320,2322],{"class":586,"line":2321},13,[584,2323,665],{"class":605},[584,2325,2327,2329],{"class":586,"line":2326},14,[584,2328,671],{"class":605},[584,2330,674],{"class":601},[574,2332,2334],{"className":576,"code":2333,"filename":678,"language":579,"meta":580,"style":580},"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",[558,2335,2336,2354,2358,2382,2396,2405,2430,2463,2467],{"__ignoreMap":580},[584,2337,2338,2340,2342,2344,2346,2348,2350,2352],{"class":586,"line":587},[584,2339,685],{"class":590},[584,2341,688],{"class":605},[584,2343,691],{"class":601},[584,2345,694],{"class":605},[584,2347,697],{"class":590},[584,2349,700],{"class":605},[584,2351,703],{"class":625},[584,2353,706],{"class":605},[584,2355,2356],{"class":586,"line":609},[584,2357,712],{"emptyLinePlaceholder":711},[584,2359,2360,2362,2364,2366,2368,2370,2372,2374,2376,2378,2380],{"class":586,"line":637},[584,2361,591],{"class":590},[584,2363,720],{"class":719},[584,2365,688],{"class":605},[584,2367,725],{"class":601},[584,2369,728],{"class":605},[584,2371,731],{"class":601},[584,2373,671],{"class":605},[584,2375,736],{"class":605},[584,2377,691],{"class":597},[584,2379,602],{"class":601},[584,2381,606],{"class":605},[584,2383,2384,2386,2388,2390,2392,2394],{"class":586,"line":648},[584,2385,747],{"class":612},[584,2387,616],{"class":605},[584,2389,700],{"class":605},[584,2391,754],{"class":625},[584,2393,622],{"class":605},[584,2395,634],{"class":605},[584,2397,2398,2401,2403],{"class":586,"line":662},[584,2399,2400],{"class":612},"  sampling",[584,2402,616],{"class":605},[584,2404,645],{"class":605},[584,2406,2407,2410,2412,2414,2416,2418,2420,2422,2424,2426,2428],{"class":586,"line":668},[584,2408,2409],{"class":612},"    rates",[584,2411,616],{"class":605},[584,2413,688],{"class":605},[584,2415,2251],{"class":612},[584,2417,616],{"class":605},[584,2419,2256],{"class":1386},[584,2421,728],{"class":605},[584,2423,2261],{"class":612},[584,2425,616],{"class":605},[584,2427,2266],{"class":1386},[584,2429,837],{"class":605},[584,2431,2432,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461],{"class":586,"line":1136},[584,2433,2434],{"class":612},"    keep",[584,2436,616],{"class":605},[584,2438,619],{"class":601},[584,2440,2280],{"class":605},[584,2442,2283],{"class":612},[584,2444,616],{"class":605},[584,2446,2288],{"class":1386},[584,2448,2291],{"class":605},[584,2450,688],{"class":605},[584,2452,2296],{"class":612},[584,2454,616],{"class":605},[584,2456,2301],{"class":1386},[584,2458,694],{"class":605},[584,2460,631],{"class":601},[584,2462,634],{"class":605},[584,2464,2465],{"class":586,"line":1151},[584,2466,665],{"class":605},[584,2468,2469,2471],{"class":586,"line":1159},[584,2470,671],{"class":605},[584,2472,674],{"class":601},[574,2474,2476],{"className":576,"code":2475,"filename":779,"language":579,"meta":580,"style":580},"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",[558,2477,2478,2496,2500,2508,2528,2536,2560,2592,2596],{"__ignoreMap":580},[584,2479,2480,2482,2484,2486,2488,2490,2492,2494],{"class":586,"line":587},[584,2481,685],{"class":590},[584,2483,688],{"class":605},[584,2485,790],{"class":601},[584,2487,694],{"class":605},[584,2489,697],{"class":590},[584,2491,700],{"class":605},[584,2493,799],{"class":625},[584,2495,706],{"class":605},[584,2497,2498],{"class":586,"line":609},[584,2499,712],{"emptyLinePlaceholder":711},[584,2501,2502,2504,2506],{"class":586,"line":637},[584,2503,810],{"class":597},[584,2505,602],{"class":601},[584,2507,606],{"class":605},[584,2509,2510,2512,2514,2516,2518,2520,2522,2524,2526],{"class":586,"line":648},[584,2511,819],{"class":612},[584,2513,616],{"class":605},[584,2515,688],{"class":605},[584,2517,826],{"class":612},[584,2519,616],{"class":605},[584,2521,700],{"class":605},[584,2523,754],{"class":625},[584,2525,622],{"class":605},[584,2527,837],{"class":605},[584,2529,2530,2532,2534],{"class":586,"line":662},[584,2531,2400],{"class":612},[584,2533,616],{"class":605},[584,2535,645],{"class":605},[584,2537,2538,2540,2542,2544,2546,2548,2550,2552,2554,2556,2558],{"class":586,"line":668},[584,2539,2409],{"class":612},[584,2541,616],{"class":605},[584,2543,688],{"class":605},[584,2545,2251],{"class":612},[584,2547,616],{"class":605},[584,2549,2256],{"class":1386},[584,2551,728],{"class":605},[584,2553,2261],{"class":612},[584,2555,616],{"class":605},[584,2557,2266],{"class":1386},[584,2559,837],{"class":605},[584,2561,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582,2584,2586,2588,2590],{"class":586,"line":1136},[584,2563,2434],{"class":612},[584,2565,616],{"class":605},[584,2567,619],{"class":601},[584,2569,2280],{"class":605},[584,2571,2283],{"class":612},[584,2573,616],{"class":605},[584,2575,2288],{"class":1386},[584,2577,2291],{"class":605},[584,2579,688],{"class":605},[584,2581,2296],{"class":612},[584,2583,616],{"class":605},[584,2585,2301],{"class":1386},[584,2587,694],{"class":605},[584,2589,631],{"class":601},[584,2591,634],{"class":605},[584,2593,2594],{"class":586,"line":1151},[584,2595,665],{"class":605},[584,2597,2598,2600],{"class":586,"line":1159},[584,2599,671],{"class":605},[584,2601,674],{"class":601},[563,2603,2605],{"id":2604},"before-after","Before \u002F After",[540,2607,2608],{},"Without redaction, sensitive data lands in your logs and drains:",[574,2610,2614],{"className":2611,"code":2612,"language":2613,"meta":580,"style":580},"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",[558,2615,2616,2620,2670,2700,2719],{"__ignoreMap":580},[584,2617,2618],{"class":586,"line":587},[584,2619,606],{"class":605},[584,2621,2622,2625,2628,2631,2633,2635,2638,2640,2642,2644,2646,2648,2650,2652,2654,2657,2659,2661,2663,2666,2668],{"class":586,"line":609},[584,2623,2624],{"class":605},"  \"",[584,2626,2627],{"class":719},"user",[584,2629,2630],{"class":605},"\"",[584,2632,616],{"class":605},[584,2634,688],{"class":605},[584,2636,2637],{"class":605}," \"",[584,2639,925],{"class":1068},[584,2641,2630],{"class":605},[584,2643,616],{"class":605},[584,2645,2637],{"class":605},[584,2647,930],{"class":625},[584,2649,2630],{"class":605},[584,2651,728],{"class":605},[584,2653,2637],{"class":605},[584,2655,2656],{"class":1068},"ip",[584,2658,2630],{"class":605},[584,2660,616],{"class":605},[584,2662,2637],{"class":605},[584,2664,2665],{"class":625},"192.168.1.42",[584,2667,2630],{"class":605},[584,2669,837],{"class":605},[584,2671,2672,2674,2677,2679,2681,2683,2685,2688,2690,2692,2694,2696,2698],{"class":586,"line":637},[584,2673,2624],{"class":605},[584,2675,2676],{"class":719},"payment",[584,2678,2630],{"class":605},[584,2680,616],{"class":605},[584,2682,688],{"class":605},[584,2684,2637],{"class":605},[584,2686,2687],{"class":1068},"card",[584,2689,2630],{"class":605},[584,2691,616],{"class":605},[584,2693,2637],{"class":605},[584,2695,913],{"class":625},[584,2697,2630],{"class":605},[584,2699,837],{"class":605},[584,2701,2702,2704,2707,2709,2711,2713,2716],{"class":586,"line":648},[584,2703,2624],{"class":605},[584,2705,2706],{"class":719},"auth",[584,2708,2630],{"class":605},[584,2710,616],{"class":605},[584,2712,2637],{"class":605},[584,2714,2715],{"class":625},"Bearer sk_live_abc123def456",[584,2717,2718],{"class":605},"\"\n",[584,2720,2721],{"class":586,"line":662},[584,2722,1168],{"class":605},[540,2724,2725,2726,616],{},"With ",[558,2727,859],{},[574,2729,2731],{"className":2611,"code":2730,"language":2613,"meta":580,"style":580},"{\n  \"user\": { \"email\": \"a***@***.com\", \"ip\": \"***.***.***.42\" },\n  \"payment\": { \"card\": \"****1111\" },\n  \"auth\": \"Bearer ***\"\n}\n",[558,2732,2733,2737,2782,2810,2826],{"__ignoreMap":580},[584,2734,2735],{"class":586,"line":587},[584,2736,606],{"class":605},[584,2738,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2778,2780],{"class":586,"line":609},[584,2740,2624],{"class":605},[584,2742,2627],{"class":719},[584,2744,2630],{"class":605},[584,2746,616],{"class":605},[584,2748,688],{"class":605},[584,2750,2637],{"class":605},[584,2752,925],{"class":1068},[584,2754,2630],{"class":605},[584,2756,616],{"class":605},[584,2758,2637],{"class":605},[584,2760,935],{"class":625},[584,2762,2630],{"class":605},[584,2764,728],{"class":605},[584,2766,2637],{"class":605},[584,2768,2656],{"class":1068},[584,2770,2630],{"class":605},[584,2772,616],{"class":605},[584,2774,2637],{"class":605},[584,2776,2777],{"class":625},"***.***.***.42",[584,2779,2630],{"class":605},[584,2781,837],{"class":605},[584,2783,2784,2786,2788,2790,2792,2794,2796,2798,2800,2802,2804,2806,2808],{"class":586,"line":637},[584,2785,2624],{"class":605},[584,2787,2676],{"class":719},[584,2789,2630],{"class":605},[584,2791,616],{"class":605},[584,2793,688],{"class":605},[584,2795,2637],{"class":605},[584,2797,2687],{"class":1068},[584,2799,2630],{"class":605},[584,2801,616],{"class":605},[584,2803,2637],{"class":605},[584,2805,918],{"class":625},[584,2807,2630],{"class":605},[584,2809,837],{"class":605},[584,2811,2812,2814,2816,2818,2820,2822,2824],{"class":586,"line":648},[584,2813,2624],{"class":605},[584,2815,2706],{"class":719},[584,2817,2630],{"class":605},[584,2819,616],{"class":605},[584,2821,2637],{"class":605},[584,2823,1003],{"class":625},[584,2825,2718],{"class":605},[584,2827,2828],{"class":586,"line":662},[584,2829,1168],{"class":605},[540,2831,2832],{},"Same debugging context, no PII in your Axiom\u002FDatadog\u002FSentry.",[563,2834,2836],{"id":2835},"next-steps","Next Steps",[2838,2839,2840,2846,2851],"ul",{},[2076,2841,2842,2845],{},[2843,2844,517],"a",{"href":518}," - Security guidelines and production checklist",[2076,2847,2848,2850],{},[2843,2849,61],{"href":62}," - Control log volume in production",[2076,2852,2853,2855],{},[2843,2854,504],{"href":505}," - Full configuration reference",[2857,2858,2859],"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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":580,"searchDepth":609,"depth":609,"links":2861},[2862,2863,2864,2872,2873,2874,2875,2876],{"id":565,"depth":609,"text":566},{"id":866,"depth":609,"text":867},{"id":1035,"depth":609,"text":504,"children":2865},[2866,2867,2868,2869,2870,2871],{"id":1039,"depth":637,"text":1040},{"id":1274,"depth":637,"text":1275},{"id":1337,"depth":637,"text":1338},{"id":1430,"depth":637,"text":1431},{"id":1671,"depth":637,"text":1672},{"id":1814,"depth":637,"text":1815},{"id":1900,"depth":609,"text":1901},{"id":2067,"depth":609,"text":2068},{"id":2138,"depth":609,"text":2139},{"id":2604,"depth":609,"text":2605},{"id":2835,"depth":609,"text":2836},"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",[2880,2883],{"label":517,"icon":379,"to":518,"color":2881,"variant":2882},"neutral","subtle",{"label":504,"icon":507,"to":505,"color":2881,"variant":2882},{},{"icon":69},{"title":66,"description":2877},"HfrEtNSnA75I9MkDU0YNcjYxgfVyFHkVj0m_jAnHB9s",[2889,2891],{"title":61,"path":62,"stem":63,"description":2890,"icon":64,"children":-1},"Control log volume with two-tier sampling. Head sampling drops noise by level, tail sampling rescues critical events based on outcome. Never miss errors, slow requests, or critical paths.",{"title":71,"path":72,"stem":73,"description":2892,"icon":74,"children":-1},"Add compile-time type safety to your wide events with TypeScript module augmentation. Prevent typos and ensure consistent field names across your codebase.",1786743659051]