[{"data":1,"prerenderedAt":2888},["ShallowReactive",2],{"navigation_docs":3,"-learn-redaction":529,"-learn-redaction-surround":2883},[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],{"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",{"id":530,"title":66,"body":531,"description":2872,"extension":2873,"links":2874,"meta":2879,"navigation":2880,"path":67,"seo":2881,"stem":68,"__hash__":2882},"docs\u002F2.learn\u002F6.redaction.md",{"type":532,"value":533,"toc":2855},"minimark",[534,546,557,562,565,849,856,859,863,874,1016,1028,1031,1036,1054,1164,1241,1260,1267,1271,1274,1330,1334,1340,1423,1427,1434,1437,1569,1572,1645,1658,1664,1668,1674,1766,1783,1786,1807,1811,1814,1893,1897,2043,2060,2064,2067,2112,2124,2131,2135,2138,2597,2601,2604,2718,2723,2825,2828,2832,2851],[535,536,537,538,542,543,545],"p",{},"Wide events capture comprehensive context, which makes it easy to accidentally log sensitive data. Auto-redaction scrubs PII from events ",[539,540,541],"strong",{},"before"," console output and ",[539,544,541],{}," any drain sees the data.",[535,547,548,551,552,556],{},[539,549,550],{},"Redaction is enabled by default in production"," (",[553,554,555],"code",{},"NODE_ENV === 'production'","). In development, it is off so you see full values for debugging. No configuration needed — just deploy.",[558,559,561],"h2",{"id":560},"opting-out","Opting Out",[535,563,564],{},"If you need to disable redaction in production:",[566,567,568,670,771],"code-group",{},[569,570,576],"pre",{"className":571,"code":572,"filename":573,"language":574,"meta":575,"style":575},"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","",[553,577,578,602,630,641,655,661],{"__ignoreMap":575},[579,580,583,587,590,594,598],"span",{"class":581,"line":582},"line",1,[579,584,586],{"class":585},"s7zQu","export",[579,588,589],{"class":585}," default",[579,591,593],{"class":592},"s2Zo4"," defineNuxtConfig",[579,595,597],{"class":596},"sTEyZ","(",[579,599,601],{"class":600},"sMK4o","{\n",[579,603,605,609,612,615,618,622,624,627],{"class":581,"line":604},2,[579,606,608],{"class":607},"swJcz","  modules",[579,610,611],{"class":600},":",[579,613,614],{"class":596}," [",[579,616,617],{"class":600},"'",[579,619,621],{"class":620},"sfazB","evlog\u002Fnuxt",[579,623,617],{"class":600},[579,625,626],{"class":596},"]",[579,628,629],{"class":600},",\n",[579,631,633,636,638],{"class":581,"line":632},3,[579,634,635],{"class":607},"  evlog",[579,637,611],{"class":600},[579,639,640],{"class":600}," {\n",[579,642,644,647,649,653],{"class":581,"line":643},4,[579,645,646],{"class":607},"    redact",[579,648,611],{"class":600},[579,650,652],{"class":651},"sfNiH"," false",[579,654,629],{"class":600},[579,656,658],{"class":581,"line":657},5,[579,659,660],{"class":600},"  },\n",[579,662,664,667],{"class":581,"line":663},6,[579,665,666],{"class":600},"}",[579,668,669],{"class":596},")\n",[569,671,674],{"className":571,"code":672,"filename":673,"language":574,"meta":575,"style":575},"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)",[553,675,676,702,708,738,754,765],{"__ignoreMap":575},[579,677,678,681,684,687,690,693,696,699],{"class":581,"line":582},[579,679,680],{"class":585},"import",[579,682,683],{"class":600}," {",[579,685,686],{"class":596}," createEvlog",[579,688,689],{"class":600}," }",[579,691,692],{"class":585}," from",[579,694,695],{"class":600}," '",[579,697,698],{"class":620},"evlog\u002Fnext",[579,700,701],{"class":600},"'\n",[579,703,704],{"class":581,"line":604},[579,705,707],{"emptyLinePlaceholder":706},true,"\n",[579,709,710,712,716,718,721,724,727,729,732,734,736],{"class":581,"line":632},[579,711,586],{"class":585},[579,713,715],{"class":714},"spNyl"," const",[579,717,683],{"class":600},[579,719,720],{"class":596}," withEvlog",[579,722,723],{"class":600},",",[579,725,726],{"class":596}," useLogger ",[579,728,666],{"class":600},[579,730,731],{"class":600}," =",[579,733,686],{"class":592},[579,735,597],{"class":596},[579,737,601],{"class":600},[579,739,740,743,745,747,750,752],{"class":581,"line":643},[579,741,742],{"class":607},"  service",[579,744,611],{"class":600},[579,746,695],{"class":600},[579,748,749],{"class":620},"my-app",[579,751,617],{"class":600},[579,753,629],{"class":600},[579,755,756,759,761,763],{"class":581,"line":657},[579,757,758],{"class":607},"  redact",[579,760,611],{"class":600},[579,762,652],{"class":651},[579,764,629],{"class":600},[579,766,767,769],{"class":581,"line":663},[579,768,666],{"class":600},[579,770,669],{"class":596},[569,772,775],{"className":571,"code":773,"filename":774,"language":574,"meta":575,"style":575},"import { initLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n  redact: false,\n})\n","index.ts (Hono \u002F Express \u002F Fastify)",[553,776,777,797,801,810,833,843],{"__ignoreMap":575},[579,778,779,781,783,786,788,790,792,795],{"class":581,"line":582},[579,780,680],{"class":585},[579,782,683],{"class":600},[579,784,785],{"class":596}," initLogger",[579,787,689],{"class":600},[579,789,692],{"class":585},[579,791,695],{"class":600},[579,793,794],{"class":620},"evlog",[579,796,701],{"class":600},[579,798,799],{"class":581,"line":604},[579,800,707],{"emptyLinePlaceholder":706},[579,802,803,806,808],{"class":581,"line":632},[579,804,805],{"class":592},"initLogger",[579,807,597],{"class":596},[579,809,601],{"class":600},[579,811,812,815,817,819,822,824,826,828,830],{"class":581,"line":643},[579,813,814],{"class":607},"  env",[579,816,611],{"class":600},[579,818,683],{"class":600},[579,820,821],{"class":607}," service",[579,823,611],{"class":600},[579,825,695],{"class":600},[579,827,749],{"class":620},[579,829,617],{"class":600},[579,831,832],{"class":600}," },\n",[579,834,835,837,839,841],{"class":581,"line":657},[579,836,758],{"class":607},[579,838,611],{"class":600},[579,840,652],{"class":651},[579,842,629],{"class":600},[579,844,845,847],{"class":581,"line":663},[579,846,666],{"class":600},[579,848,669],{"class":596},[535,850,851,852,855],{},"You can also enable redaction explicitly in development with ",[553,853,854],{},"redact: true",".",[857,858],"redaction-stream",{},[558,860,862],{"id":861},"smart-masking","Smart Masking",[535,864,865,866,869,870,873],{},"Built-in patterns use ",[539,867,868],{},"partial masking"," instead of flat ",[553,871,872],{},"[REDACTED]"," — preserving enough context for debugging while protecting the actual data.",[875,876,877,893],"table",{},[878,879,880],"thead",{},[881,882,883,887,890],"tr",{},[884,885,886],"th",{},"Pattern",[884,888,889],{},"Example Input",[884,891,892],{},"Masked Output",[894,895,896,914,931,948,965,982,999],"tbody",{},[881,897,898,904,909],{},[899,900,901],"td",{},[553,902,903],{},"creditCard",[899,905,906],{},[553,907,908],{},"4111111111111111",[899,910,911],{},[553,912,913],{},"****1111",[881,915,916,921,926],{},[899,917,918],{},[553,919,920],{},"email",[899,922,923],{},[553,924,925],{},"alice@example.com",[899,927,928],{},[553,929,930],{},"a***@***.com",[881,932,933,938,943],{},[899,934,935],{},[553,936,937],{},"ipv4",[899,939,940],{},[553,941,942],{},"192.168.1.100",[899,944,945],{},[553,946,947],{},"***.***.***.100",[881,949,950,955,960],{},[899,951,952],{},[553,953,954],{},"phone",[899,956,957],{},[553,958,959],{},"+33 6 12 34 56 78",[899,961,962],{},[553,963,964],{},"+33 ****5678",[881,966,967,972,977],{},[899,968,969],{},[553,970,971],{},"jwt",[899,973,974],{},[553,975,976],{},"eyJhbGciOiJIUzI1NiIs...",[899,978,979],{},[553,980,981],{},"eyJ***.***",[881,983,984,989,994],{},[899,985,986],{},[553,987,988],{},"bearer",[899,990,991],{},[553,992,993],{},"Bearer sk_live_abc123...",[899,995,996],{},[553,997,998],{},"Bearer ***",[881,1000,1001,1006,1011],{},[899,1002,1003],{},[553,1004,1005],{},"iban",[899,1007,1008],{},[553,1009,1010],{},"FR76 3000 6000 0112 ...189",[899,1012,1013],{},[553,1014,1015],{},"FR76****189",[1017,1018,1020,1023,1024,1027],"callout",{"color":1019,"icon":13},"info",[553,1021,1022],{},"127.0.0.1"," and ",[553,1025,1026],{},"0.0.0.0"," are excluded from IPv4 masking since they are not real client addresses.",[558,1029,504],{"id":1030},"configuration",[1032,1033,1035],"h3",{"id":1034},"path-patterns","Path Patterns",[535,1037,1038,1039,1042,1043,1046,1047,1050,1051,611],{},"Use a single ",[553,1040,1041],{},"paths"," array with dot-notation and globs. A bare segment like ",[553,1044,1045],{},"password"," is shorthand for ",[553,1048,1049],{},"**.password"," — it redacts that key at ",[539,1052,1053],{},"any nesting depth",[569,1055,1057],{"className":571,"code":1056,"language":574,"meta":575,"style":575},"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",[553,1058,1059,1068,1076,1086,1101,1115,1129,1144,1152,1158],{"__ignoreMap":575},[579,1060,1061,1064,1066],{"class":581,"line":582},[579,1062,794],{"class":1063},"sBMFI",[579,1065,611],{"class":600},[579,1067,640],{"class":600},[579,1069,1070,1072,1074],{"class":581,"line":604},[579,1071,758],{"class":1063},[579,1073,611],{"class":600},[579,1075,640],{"class":600},[579,1077,1078,1081,1083],{"class":581,"line":632},[579,1079,1080],{"class":1063},"    paths",[579,1082,611],{"class":600},[579,1084,1085],{"class":607}," [\n",[579,1087,1088,1091,1093,1095,1097],{"class":581,"line":643},[579,1089,1090],{"class":600},"      '",[579,1092,1045],{"class":620},[579,1094,617],{"class":600},[579,1096,723],{"class":600},[579,1098,1100],{"class":1099},"sHwdD","              \u002F\u002F same as '**.password'\n",[579,1102,1103,1105,1108,1110,1112],{"class":581,"line":657},[579,1104,1090],{"class":600},[579,1106,1107],{"class":620},"*_token",[579,1109,617],{"class":600},[579,1111,723],{"class":600},[579,1113,1114],{"class":1099},"               \u002F\u002F key-name glob at any depth\n",[579,1116,1117,1119,1122,1124,1126],{"class":581,"line":663},[579,1118,1090],{"class":600},[579,1120,1121],{"class":620},"headers.x-forwarded-for",[579,1123,617],{"class":600},[579,1125,723],{"class":600},[579,1127,1128],{"class":1099}," \u002F\u002F exact path\n",[579,1130,1132,1134,1137,1139,1141],{"class":581,"line":1131},7,[579,1133,1090],{"class":600},[579,1135,1136],{"class":620},"user.*",[579,1138,617],{"class":600},[579,1140,723],{"class":600},[579,1142,1143],{"class":1099},"                \u002F\u002F everything directly under user\n",[579,1145,1147,1150],{"class":581,"line":1146},8,[579,1148,1149],{"class":607},"    ]",[579,1151,629],{"class":600},[579,1153,1155],{"class":581,"line":1154},9,[579,1156,1157],{"class":600},"  }\n",[579,1159,1161],{"class":581,"line":1160},10,[579,1162,1163],{"class":600},"}\n",[875,1165,1166,1175],{},[878,1167,1168],{},[881,1169,1170,1172],{},[884,1171,886],{},[884,1173,1174],{},"Matches",[894,1176,1177,1187,1201,1217,1231],{},[881,1178,1179,1184],{},[899,1180,1181],{},[553,1182,1183],{},"user.email",[899,1185,1186],{},"Exact path only",[881,1188,1189,1196],{},[899,1190,1191,1193,1194],{},[553,1192,1045],{}," or ",[553,1195,1049],{},[899,1197,1198,1200],{},[553,1199,1045],{}," key at any depth",[881,1202,1203,1207],{},[899,1204,1205],{},[553,1206,1107],{},[899,1208,1209,1210,1213,1214],{},"Key names like ",[553,1211,1212],{},"access_token",", ",[553,1215,1216],{},"refresh_token",[881,1218,1219,1223],{},[899,1220,1221],{},[553,1222,1136],{},[899,1224,1225,1213,1227,1230],{},[553,1226,1183],{},[553,1228,1229],{},"user.password",", etc.",[881,1232,1233,1238],{},[899,1234,1235],{},[553,1236,1237],{},"audit.changes.*.password",[899,1239,1240],{},"Mixed exact + wildcard segments",[535,1242,1243,1244,1247,1248,1251,1252,1255,1256,1259],{},"Path redaction replaces the ",[539,1245,1246],{},"entire value"," (including nested objects) with ",[553,1249,1250],{},"replacement",". Use ",[553,1253,1254],{},"patterns"," when you need regex on ",[539,1257,1258],{},"string values"," inside fields.",[535,1261,1262,1263,1266],{},"This matches ",[553,1264,1265],{},"auditDiff({ redactPaths: ['password'] })"," — same glob syntax, applied globally at emit time.",[1032,1268,1270],{"id":1269},"selective-built-ins","Selective Built-ins",[535,1272,1273],{},"Pick only the patterns you need:",[569,1275,1277],{"className":571,"code":1276,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    builtins: ['email', 'creditCard'],\n  }\n}\n",[553,1278,1279,1287,1295,1322,1326],{"__ignoreMap":575},[579,1280,1281,1283,1285],{"class":581,"line":582},[579,1282,794],{"class":1063},[579,1284,611],{"class":600},[579,1286,640],{"class":600},[579,1288,1289,1291,1293],{"class":581,"line":604},[579,1290,758],{"class":1063},[579,1292,611],{"class":600},[579,1294,640],{"class":600},[579,1296,1297,1300,1302,1304,1306,1308,1310,1312,1314,1316,1318,1320],{"class":581,"line":632},[579,1298,1299],{"class":1063},"    builtins",[579,1301,611],{"class":600},[579,1303,614],{"class":607},[579,1305,617],{"class":600},[579,1307,920],{"class":620},[579,1309,617],{"class":600},[579,1311,723],{"class":600},[579,1313,695],{"class":600},[579,1315,903],{"class":620},[579,1317,617],{"class":600},[579,1319,626],{"class":607},[579,1321,629],{"class":600},[579,1323,1324],{"class":581,"line":643},[579,1325,1157],{"class":600},[579,1327,1328],{"class":581,"line":657},[579,1329,1163],{"class":600},[1032,1331,1333],{"id":1332},"custom-patterns","Custom Patterns",[535,1335,1336,1337,1339],{},"Add your own regex patterns. These use the flat ",[553,1338,1250],{}," string, not smart masking:",[569,1341,1343],{"className":571,"code":1342,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    patterns: [\u002FSECRET_\\w+\u002Fg, \u002Fsk_live_\\w+\u002Fg],\n    replacement: '***',\n  }\n}\n",[553,1344,1345,1353,1361,1399,1415,1419],{"__ignoreMap":575},[579,1346,1347,1349,1351],{"class":581,"line":582},[579,1348,794],{"class":1063},[579,1350,611],{"class":600},[579,1352,640],{"class":600},[579,1354,1355,1357,1359],{"class":581,"line":604},[579,1356,758],{"class":1063},[579,1358,611],{"class":600},[579,1360,640],{"class":600},[579,1362,1363,1366,1368,1370,1373,1376,1379,1383,1385,1388,1391,1393,1395,1397],{"class":581,"line":632},[579,1364,1365],{"class":1063},"    patterns",[579,1367,611],{"class":600},[579,1369,614],{"class":607},[579,1371,1372],{"class":600},"\u002F",[579,1374,1375],{"class":620},"SECRET_\\w",[579,1377,1378],{"class":600},"+\u002F",[579,1380,1382],{"class":1381},"sbssI","g",[579,1384,723],{"class":600},[579,1386,1387],{"class":600}," \u002F",[579,1389,1390],{"class":620},"sk_live_\\w",[579,1392,1378],{"class":600},[579,1394,1382],{"class":1381},[579,1396,626],{"class":607},[579,1398,629],{"class":600},[579,1400,1401,1404,1406,1408,1411,1413],{"class":581,"line":643},[579,1402,1403],{"class":1063},"    replacement",[579,1405,611],{"class":600},[579,1407,695],{"class":600},[579,1409,1410],{"class":620},"***",[579,1412,617],{"class":600},[579,1414,629],{"class":600},[579,1416,1417],{"class":581,"line":657},[579,1418,1157],{"class":600},[579,1420,1421],{"class":581,"line":663},[579,1422,1163],{"class":600},[1032,1424,1426],{"id":1425},"computed-replacements","Computed Replacements",[535,1428,1429,1430,1433],{},"When the replacement has to be ",[539,1431,1432],{},"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.",[535,1435,1436],{},"The common case is keeping requests correlatable without exposing the credential that identifies them:",[569,1438,1440],{"className":571,"code":1439,"language":574,"meta":575,"style":575},"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",[553,1441,1442,1450,1458,1496,1554,1558,1564],{"__ignoreMap":575},[579,1443,1444,1446,1448],{"class":581,"line":582},[579,1445,805],{"class":592},[579,1447,597],{"class":596},[579,1449,601],{"class":600},[579,1451,1452,1454,1456],{"class":581,"line":604},[579,1453,758],{"class":607},[579,1455,611],{"class":600},[579,1457,640],{"class":600},[579,1459,1460,1462,1464,1466,1468,1471,1474,1476,1479,1481,1484,1487,1490,1492,1494],{"class":581,"line":632},[579,1461,1365],{"class":607},[579,1463,611],{"class":600},[579,1465,614],{"class":596},[579,1467,1372],{"class":600},[579,1469,1470],{"class":596},"\\\u002F",[579,1472,1473],{"class":620},"public",[579,1475,1470],{"class":596},[579,1477,1478],{"class":620},"claim",[579,1480,1470],{"class":596},[579,1482,1483],{"class":600},"([",[579,1485,1486],{"class":620},"A-Za-z0-9._-",[579,1488,1489],{"class":600},"]{12,})\u002F",[579,1491,1382],{"class":1381},[579,1493,626],{"class":596},[579,1495,629],{"class":600},[579,1497,1498,1500,1502,1504,1508,1510,1513,1516,1519,1522,1525,1528,1531,1534,1536,1539,1542,1545,1547,1549,1552],{"class":581,"line":643},[579,1499,1403],{"class":592},[579,1501,611],{"class":600},[579,1503,551],{"class":600},[579,1505,1507],{"class":1506},"sHdIc","_match",[579,1509,723],{"class":600},[579,1511,1512],{"class":1506}," ctx",[579,1514,1515],{"class":600},")",[579,1517,1518],{"class":714}," =>",[579,1520,1521],{"class":600}," `",[579,1523,1524],{"class":620},"\u002Fpublic\u002Fclaim\u002F[tok:",[579,1526,1527],{"class":600},"${",[579,1529,1530],{"class":592},"fingerprint",[579,1532,1533],{"class":596},"(ctx",[579,1535,855],{"class":600},[579,1537,1538],{"class":596},"groups[",[579,1540,1541],{"class":1381},"0",[579,1543,1544],{"class":596},"])",[579,1546,666],{"class":600},[579,1548,626],{"class":620},[579,1550,1551],{"class":600},"`",[579,1553,629],{"class":600},[579,1555,1556],{"class":581,"line":657},[579,1557,660],{"class":600},[579,1559,1560,1562],{"class":581,"line":663},[579,1561,666],{"class":600},[579,1563,669],{"class":596},[579,1565,1566],{"class":581,"line":1131},[579,1567,1568],{"class":1099},"\u002F\u002F \u002Fpublic\u002Fclaim\u002FeyJhbGciOi...  →  \u002Fpublic\u002Fclaim\u002F[tok:9f3a1c]\n",[535,1570,1571],{},"The function receives the matched value and a context object:",[875,1573,1574,1587],{},[878,1575,1576],{},[881,1577,1578,1581,1584],{},[884,1579,1580],{},"Field",[884,1582,1583],{},"Type",[884,1585,1586],{},"Description",[894,1588,1589,1609,1625],{},[881,1590,1591,1596,1601],{},[899,1592,1593],{},[553,1594,1595],{},"path",[899,1597,1598],{},[553,1599,1600],{},"string",[899,1602,1603,1604,1213,1606,1515],{},"Dot-notation path from the event root (",[553,1605,1183],{},[553,1607,1608],{},"items.0.token",[881,1610,1611,1616,1620],{},[899,1612,1613],{},[553,1614,1615],{},"key",[899,1617,1618],{},[553,1619,1600],{},[899,1621,1622,1623,1515],{},"Leaf key of the field (",[553,1624,920],{},[881,1626,1627,1632,1637],{},[899,1628,1629],{},[553,1630,1631],{},"groups",[899,1633,1634],{},[553,1635,1636],{},"string[]",[899,1638,1639,1640,1642,1643],{},"Capture groups of the matching ",[553,1641,1254],{}," entry. Only set for ",[553,1644,1254],{},[535,1646,1647,1648,1650,1651,1654,1655,1657],{},"For ",[553,1649,1041],{},", the matched value is the ",[539,1652,1653],{},"whole field value"," — any type, since path redaction replaces entire subtrees. For ",[553,1656,1254],{},", it is the matched substring.",[535,1659,1660,1661,1663],{},"If the function throws or returns a non-string, redaction falls back to ",[553,1662,872],{}," and logs the failure. A broken policy degrades to over-redaction, never to leaking the value it was meant to scrub.",[1032,1665,1667],{"id":1666},"conditional-policies","Conditional Policies",[535,1669,1670,1671,611],{},"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 ",[553,1672,1673],{},"transform",[569,1675,1677],{"className":571,"code":1676,"language":574,"meta":575,"style":575},"initLogger({\n  redact: {\n    transform: (event) => {\n      if (event.tenant === 'regulated') delete event.query\n    },\n  },\n})\n",[553,1678,1679,1687,1695,1713,1751,1756,1760],{"__ignoreMap":575},[579,1680,1681,1683,1685],{"class":581,"line":582},[579,1682,805],{"class":592},[579,1684,597],{"class":596},[579,1686,601],{"class":600},[579,1688,1689,1691,1693],{"class":581,"line":604},[579,1690,758],{"class":607},[579,1692,611],{"class":600},[579,1694,640],{"class":600},[579,1696,1697,1700,1702,1704,1707,1709,1711],{"class":581,"line":632},[579,1698,1699],{"class":592},"    transform",[579,1701,611],{"class":600},[579,1703,551],{"class":600},[579,1705,1706],{"class":1506},"event",[579,1708,1515],{"class":600},[579,1710,1518],{"class":714},[579,1712,640],{"class":600},[579,1714,1715,1718,1720,1722,1724,1727,1730,1732,1735,1737,1740,1743,1746,1748],{"class":581,"line":643},[579,1716,1717],{"class":585},"      if",[579,1719,551],{"class":607},[579,1721,1706],{"class":596},[579,1723,855],{"class":600},[579,1725,1726],{"class":596},"tenant",[579,1728,1729],{"class":600}," ===",[579,1731,695],{"class":600},[579,1733,1734],{"class":620},"regulated",[579,1736,617],{"class":600},[579,1738,1739],{"class":607},") ",[579,1741,1742],{"class":600},"delete",[579,1744,1745],{"class":596}," event",[579,1747,855],{"class":600},[579,1749,1750],{"class":596},"query\n",[579,1752,1753],{"class":581,"line":657},[579,1754,1755],{"class":600},"    },\n",[579,1757,1758],{"class":581,"line":663},[579,1759,660],{"class":600},[579,1761,1762,1764],{"class":581,"line":1131},[579,1763,666],{"class":600},[579,1765,669],{"class":596},[535,1767,1768,1770,1771,1773,1774,1213,1776,1779,1780,1782],{},[553,1769,1673],{}," runs ",[539,1772,541],{}," ",[553,1775,1041],{},[553,1777,1778],{},"builtins",", and ",[553,1781,1254],{},", 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.",[535,1784,1785],{},"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.",[1017,1787,1790,1791,1023,1793,1795,1796,1798,1799,1802,1803,1806],{"color":1788,"icon":1789},"warning","i-lucide-triangle-alert","Function-valued ",[553,1792,1250],{},[553,1794,1673],{}," cannot be declared in ",[553,1797,573],{}," or a Nitro module's options — that config is serialized to JSON at build time, which drops functions. Declare them at runtime with ",[553,1800,1801],{},"initLogger()"," from a server plugin, or with ",[553,1804,1805],{},"createEvlog()",". The modules emit a build-time warning if you do it anyway.",[1032,1808,1810],{"id":1809},"disable-built-ins","Disable Built-ins",[535,1812,1813],{},"If you only want custom redaction:",[569,1815,1817],{"className":571,"code":1816,"language":574,"meta":575,"style":575},"evlog: {\n  redact: {\n    builtins: false,\n    paths: ['user.ssn'],\n    patterns: [\u002FINTERNAL_\\w+\u002Fg],\n  }\n}\n",[553,1818,1819,1827,1835,1845,1864,1885,1889],{"__ignoreMap":575},[579,1820,1821,1823,1825],{"class":581,"line":582},[579,1822,794],{"class":1063},[579,1824,611],{"class":600},[579,1826,640],{"class":600},[579,1828,1829,1831,1833],{"class":581,"line":604},[579,1830,758],{"class":1063},[579,1832,611],{"class":600},[579,1834,640],{"class":600},[579,1836,1837,1839,1841,1843],{"class":581,"line":632},[579,1838,1299],{"class":1063},[579,1840,611],{"class":600},[579,1842,652],{"class":651},[579,1844,629],{"class":600},[579,1846,1847,1849,1851,1853,1855,1858,1860,1862],{"class":581,"line":643},[579,1848,1080],{"class":1063},[579,1850,611],{"class":600},[579,1852,614],{"class":607},[579,1854,617],{"class":600},[579,1856,1857],{"class":620},"user.ssn",[579,1859,617],{"class":600},[579,1861,626],{"class":607},[579,1863,629],{"class":600},[579,1865,1866,1868,1870,1872,1874,1877,1879,1881,1883],{"class":581,"line":657},[579,1867,1365],{"class":1063},[579,1869,611],{"class":600},[579,1871,614],{"class":607},[579,1873,1372],{"class":600},[579,1875,1876],{"class":620},"INTERNAL_\\w",[579,1878,1378],{"class":600},[579,1880,1382],{"class":1381},[579,1882,626],{"class":607},[579,1884,629],{"class":600},[579,1886,1887],{"class":581,"line":663},[579,1888,1157],{"class":600},[579,1890,1891],{"class":581,"line":1131},[579,1892,1163],{"class":600},[558,1894,1896],{"id":1895},"configuration-reference","Configuration Reference",[875,1898,1899,1913],{},[878,1900,1901],{},[881,1902,1903,1906,1908,1911],{},[884,1904,1905],{},"Option",[884,1907,1583],{},[884,1909,1910],{},"Default",[884,1912,1586],{},[894,1914,1915,1940,1966,1987,2006,2025],{},[881,1916,1917,1922,1927,1933],{},[899,1918,1919],{},[553,1920,1921],{},"redact",[899,1923,1924],{},[553,1925,1926],{},"boolean | RedactConfig",[899,1928,1929,1932],{},[553,1930,1931],{},"true"," in production",[899,1934,1935,1936,1939],{},"Enabled by default in production. ",[553,1937,1938],{},"false"," to disable. Object for fine-grained control",[881,1941,1942,1946,1950,1955],{},[899,1943,1944],{},[553,1945,1041],{},[899,1947,1948],{},[553,1949,1636],{},[899,1951,1952],{},[553,1953,1954],{},"undefined",[899,1956,1957,1958,1213,1960,1213,1962,1213,1964,1515],{},"Dot-notation paths with globs (",[553,1959,1045],{},[553,1961,1049],{},[553,1963,1107],{},[553,1965,1136],{},[881,1967,1968,1972,1977,1981],{},[899,1969,1970],{},[553,1971,1254],{},[899,1973,1974],{},[553,1975,1976],{},"RegExp[]",[899,1978,1979],{},[553,1980,1954],{},[899,1982,1983,1984,1986],{},"Custom regex on string values. Uses flat ",[553,1985,1250],{}," string",[881,1988,1989,1993,1998,2001],{},[899,1990,1991],{},[553,1992,1778],{},[899,1994,1995],{},[553,1996,1997],{},"false | string[]",[899,1999,2000],{},"All enabled",[899,2002,2003,2005],{},[553,2004,1938],{}," disables built-ins. Array selects specific ones",[881,2007,2008,2012,2017,2022],{},[899,2009,2010],{},[553,2011,1250],{},[899,2013,2014],{},[553,2015,2016],{},"string | (matched, ctx) => string",[899,2018,2019],{},[553,2020,2021],{},"'[REDACTED]'",[899,2023,2024],{},"Replacement for paths and custom patterns. Built-ins use smart masking instead. A function computes it from the matched value",[881,2026,2027,2031,2036,2040],{},[899,2028,2029],{},[553,2030,1673],{},[899,2032,2033],{},[553,2034,2035],{},"(event) => void",[899,2037,2038],{},[553,2039,1954],{},[899,2041,2042],{},"Escape hatch for policies that are conditional, tenant-scoped, or allowlist-shaped. Runs before the declarative stages",[535,2044,2045,2046,1213,2048,1213,2050,1213,2052,1213,2054,1213,2056,1213,2058,855],{},"Available built-in names: ",[553,2047,903],{},[553,2049,920],{},[553,2051,937],{},[553,2053,954],{},[553,2055,971],{},[553,2057,988],{},[553,2059,1005],{},[558,2061,2063],{"id":2062},"how-it-works","How It Works",[535,2065,2066],{},"Redaction runs inside the emit pipeline, after the wide event is fully built but before any output:",[2068,2069,2070,2080,2088,2094,2100,2106],"ol",{},[2071,2072,2073,2076,2077,2079],"li",{},[539,2074,2075],{},"Transform"," — your ",[553,2078,1673],{}," hook, if any, sees the raw event first",[2071,2081,2082,2085,2086],{},[539,2083,2084],{},"Path redaction"," — exact paths and globs replaced with ",[553,2087,872],{},[2071,2089,2090,2093],{},[539,2091,2092],{},"Smart masking"," — built-in patterns scan all string values recursively with partial masking",[2071,2095,2096,2099],{},[539,2097,2098],{},"Pattern redaction"," — custom regex patterns scan all string values with flat replacement",[2071,2101,2102,2105],{},[539,2103,2104],{},"Console output"," — masked event printed to stdout",[2071,2107,2108,2111],{},[539,2109,2110],{},"Drain"," — masked event sent to external services",[535,2113,2114,2115,2118,2119,2121,2122,855],{},"Redaction is the only stage that runs before the console write. ",[553,2116,2117],{},"enrich"," and drains run after it, so they cannot scrub what has already reached stdout — anything that needs to happen before output belongs in ",[553,2120,1673],{}," or a function-valued ",[553,2123,1250],{},[1017,2125,2126,2127,2130],{"color":1019,"icon":28},"Redaction runs ",[539,2128,2129],{},"after"," the HTTP response is sent, so it adds zero latency to your API responses.",[558,2132,2134],{"id":2133},"production-example","Production Example",[535,2136,2137],{},"Redaction is already on by default in production. Combine with sampling for a typical setup:",[566,2139,2140,2326,2468],{},[569,2141,2143],{"className":571,"code":2142,"filename":573,"language":574,"meta":575,"style":575},"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",[553,2144,2145,2157,2175,2183,2204,2208,2217,2226,2235,2264,2303,2309,2314,2319],{"__ignoreMap":575},[579,2146,2147,2149,2151,2153,2155],{"class":581,"line":582},[579,2148,586],{"class":585},[579,2150,589],{"class":585},[579,2152,593],{"class":592},[579,2154,597],{"class":596},[579,2156,601],{"class":600},[579,2158,2159,2161,2163,2165,2167,2169,2171,2173],{"class":581,"line":604},[579,2160,608],{"class":607},[579,2162,611],{"class":600},[579,2164,614],{"class":596},[579,2166,617],{"class":600},[579,2168,621],{"class":620},[579,2170,617],{"class":600},[579,2172,626],{"class":596},[579,2174,629],{"class":600},[579,2176,2177,2179,2181],{"class":581,"line":632},[579,2178,635],{"class":607},[579,2180,611],{"class":600},[579,2182,640],{"class":600},[579,2184,2185,2188,2190,2192,2194,2196,2198,2200,2202],{"class":581,"line":643},[579,2186,2187],{"class":607},"    env",[579,2189,611],{"class":600},[579,2191,683],{"class":600},[579,2193,821],{"class":607},[579,2195,611],{"class":600},[579,2197,695],{"class":600},[579,2199,749],{"class":620},[579,2201,617],{"class":600},[579,2203,832],{"class":600},[579,2205,2206],{"class":581,"line":657},[579,2207,660],{"class":600},[579,2209,2210,2213,2215],{"class":581,"line":663},[579,2211,2212],{"class":607},"  $production",[579,2214,611],{"class":600},[579,2216,640],{"class":600},[579,2218,2219,2222,2224],{"class":581,"line":1131},[579,2220,2221],{"class":607},"    evlog",[579,2223,611],{"class":600},[579,2225,640],{"class":600},[579,2227,2228,2231,2233],{"class":581,"line":1146},[579,2229,2230],{"class":607},"      sampling",[579,2232,611],{"class":600},[579,2234,640],{"class":600},[579,2236,2237,2240,2242,2244,2247,2249,2252,2254,2257,2259,2262],{"class":581,"line":1154},[579,2238,2239],{"class":607},"        rates",[579,2241,611],{"class":600},[579,2243,683],{"class":600},[579,2245,2246],{"class":607}," info",[579,2248,611],{"class":600},[579,2250,2251],{"class":1381}," 10",[579,2253,723],{"class":600},[579,2255,2256],{"class":607}," debug",[579,2258,611],{"class":600},[579,2260,2261],{"class":1381}," 0",[579,2263,832],{"class":600},[579,2265,2266,2269,2271,2273,2276,2279,2281,2284,2287,2289,2292,2294,2297,2299,2301],{"class":581,"line":1160},[579,2267,2268],{"class":607},"        keep",[579,2270,611],{"class":600},[579,2272,614],{"class":596},[579,2274,2275],{"class":600},"{",[579,2277,2278],{"class":607}," status",[579,2280,611],{"class":600},[579,2282,2283],{"class":1381}," 400",[579,2285,2286],{"class":600}," },",[579,2288,683],{"class":600},[579,2290,2291],{"class":607}," duration",[579,2293,611],{"class":600},[579,2295,2296],{"class":1381}," 1000",[579,2298,689],{"class":600},[579,2300,626],{"class":596},[579,2302,629],{"class":600},[579,2304,2306],{"class":581,"line":2305},11,[579,2307,2308],{"class":600},"      },\n",[579,2310,2312],{"class":581,"line":2311},12,[579,2313,1755],{"class":600},[579,2315,2317],{"class":581,"line":2316},13,[579,2318,660],{"class":600},[579,2320,2322,2324],{"class":581,"line":2321},14,[579,2323,666],{"class":600},[579,2325,669],{"class":596},[569,2327,2329],{"className":571,"code":2328,"filename":673,"language":574,"meta":575,"style":575},"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",[553,2330,2331,2349,2353,2377,2391,2400,2425,2458,2462],{"__ignoreMap":575},[579,2332,2333,2335,2337,2339,2341,2343,2345,2347],{"class":581,"line":582},[579,2334,680],{"class":585},[579,2336,683],{"class":600},[579,2338,686],{"class":596},[579,2340,689],{"class":600},[579,2342,692],{"class":585},[579,2344,695],{"class":600},[579,2346,698],{"class":620},[579,2348,701],{"class":600},[579,2350,2351],{"class":581,"line":604},[579,2352,707],{"emptyLinePlaceholder":706},[579,2354,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375],{"class":581,"line":632},[579,2356,586],{"class":585},[579,2358,715],{"class":714},[579,2360,683],{"class":600},[579,2362,720],{"class":596},[579,2364,723],{"class":600},[579,2366,726],{"class":596},[579,2368,666],{"class":600},[579,2370,731],{"class":600},[579,2372,686],{"class":592},[579,2374,597],{"class":596},[579,2376,601],{"class":600},[579,2378,2379,2381,2383,2385,2387,2389],{"class":581,"line":643},[579,2380,742],{"class":607},[579,2382,611],{"class":600},[579,2384,695],{"class":600},[579,2386,749],{"class":620},[579,2388,617],{"class":600},[579,2390,629],{"class":600},[579,2392,2393,2396,2398],{"class":581,"line":657},[579,2394,2395],{"class":607},"  sampling",[579,2397,611],{"class":600},[579,2399,640],{"class":600},[579,2401,2402,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423],{"class":581,"line":663},[579,2403,2404],{"class":607},"    rates",[579,2406,611],{"class":600},[579,2408,683],{"class":600},[579,2410,2246],{"class":607},[579,2412,611],{"class":600},[579,2414,2251],{"class":1381},[579,2416,723],{"class":600},[579,2418,2256],{"class":607},[579,2420,611],{"class":600},[579,2422,2261],{"class":1381},[579,2424,832],{"class":600},[579,2426,2427,2430,2432,2434,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456],{"class":581,"line":1131},[579,2428,2429],{"class":607},"    keep",[579,2431,611],{"class":600},[579,2433,614],{"class":596},[579,2435,2275],{"class":600},[579,2437,2278],{"class":607},[579,2439,611],{"class":600},[579,2441,2283],{"class":1381},[579,2443,2286],{"class":600},[579,2445,683],{"class":600},[579,2447,2291],{"class":607},[579,2449,611],{"class":600},[579,2451,2296],{"class":1381},[579,2453,689],{"class":600},[579,2455,626],{"class":596},[579,2457,629],{"class":600},[579,2459,2460],{"class":581,"line":1146},[579,2461,660],{"class":600},[579,2463,2464,2466],{"class":581,"line":1154},[579,2465,666],{"class":600},[579,2467,669],{"class":596},[569,2469,2471],{"className":571,"code":2470,"filename":774,"language":574,"meta":575,"style":575},"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",[553,2472,2473,2491,2495,2503,2523,2531,2555,2587,2591],{"__ignoreMap":575},[579,2474,2475,2477,2479,2481,2483,2485,2487,2489],{"class":581,"line":582},[579,2476,680],{"class":585},[579,2478,683],{"class":600},[579,2480,785],{"class":596},[579,2482,689],{"class":600},[579,2484,692],{"class":585},[579,2486,695],{"class":600},[579,2488,794],{"class":620},[579,2490,701],{"class":600},[579,2492,2493],{"class":581,"line":604},[579,2494,707],{"emptyLinePlaceholder":706},[579,2496,2497,2499,2501],{"class":581,"line":632},[579,2498,805],{"class":592},[579,2500,597],{"class":596},[579,2502,601],{"class":600},[579,2504,2505,2507,2509,2511,2513,2515,2517,2519,2521],{"class":581,"line":643},[579,2506,814],{"class":607},[579,2508,611],{"class":600},[579,2510,683],{"class":600},[579,2512,821],{"class":607},[579,2514,611],{"class":600},[579,2516,695],{"class":600},[579,2518,749],{"class":620},[579,2520,617],{"class":600},[579,2522,832],{"class":600},[579,2524,2525,2527,2529],{"class":581,"line":657},[579,2526,2395],{"class":607},[579,2528,611],{"class":600},[579,2530,640],{"class":600},[579,2532,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553],{"class":581,"line":663},[579,2534,2404],{"class":607},[579,2536,611],{"class":600},[579,2538,683],{"class":600},[579,2540,2246],{"class":607},[579,2542,611],{"class":600},[579,2544,2251],{"class":1381},[579,2546,723],{"class":600},[579,2548,2256],{"class":607},[579,2550,611],{"class":600},[579,2552,2261],{"class":1381},[579,2554,832],{"class":600},[579,2556,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585],{"class":581,"line":1131},[579,2558,2429],{"class":607},[579,2560,611],{"class":600},[579,2562,614],{"class":596},[579,2564,2275],{"class":600},[579,2566,2278],{"class":607},[579,2568,611],{"class":600},[579,2570,2283],{"class":1381},[579,2572,2286],{"class":600},[579,2574,683],{"class":600},[579,2576,2291],{"class":607},[579,2578,611],{"class":600},[579,2580,2296],{"class":1381},[579,2582,689],{"class":600},[579,2584,626],{"class":596},[579,2586,629],{"class":600},[579,2588,2589],{"class":581,"line":1146},[579,2590,660],{"class":600},[579,2592,2593,2595],{"class":581,"line":1154},[579,2594,666],{"class":600},[579,2596,669],{"class":596},[558,2598,2600],{"id":2599},"before-after","Before \u002F After",[535,2602,2603],{},"Without redaction, sensitive data lands in your logs and drains:",[569,2605,2609],{"className":2606,"code":2607,"language":2608,"meta":575,"style":575},"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",[553,2610,2611,2615,2665,2695,2714],{"__ignoreMap":575},[579,2612,2613],{"class":581,"line":582},[579,2614,601],{"class":600},[579,2616,2617,2620,2623,2626,2628,2630,2633,2635,2637,2639,2641,2643,2645,2647,2649,2652,2654,2656,2658,2661,2663],{"class":581,"line":604},[579,2618,2619],{"class":600},"  \"",[579,2621,2622],{"class":714},"user",[579,2624,2625],{"class":600},"\"",[579,2627,611],{"class":600},[579,2629,683],{"class":600},[579,2631,2632],{"class":600}," \"",[579,2634,920],{"class":1063},[579,2636,2625],{"class":600},[579,2638,611],{"class":600},[579,2640,2632],{"class":600},[579,2642,925],{"class":620},[579,2644,2625],{"class":600},[579,2646,723],{"class":600},[579,2648,2632],{"class":600},[579,2650,2651],{"class":1063},"ip",[579,2653,2625],{"class":600},[579,2655,611],{"class":600},[579,2657,2632],{"class":600},[579,2659,2660],{"class":620},"192.168.1.42",[579,2662,2625],{"class":600},[579,2664,832],{"class":600},[579,2666,2667,2669,2672,2674,2676,2678,2680,2683,2685,2687,2689,2691,2693],{"class":581,"line":632},[579,2668,2619],{"class":600},[579,2670,2671],{"class":714},"payment",[579,2673,2625],{"class":600},[579,2675,611],{"class":600},[579,2677,683],{"class":600},[579,2679,2632],{"class":600},[579,2681,2682],{"class":1063},"card",[579,2684,2625],{"class":600},[579,2686,611],{"class":600},[579,2688,2632],{"class":600},[579,2690,908],{"class":620},[579,2692,2625],{"class":600},[579,2694,832],{"class":600},[579,2696,2697,2699,2702,2704,2706,2708,2711],{"class":581,"line":643},[579,2698,2619],{"class":600},[579,2700,2701],{"class":714},"auth",[579,2703,2625],{"class":600},[579,2705,611],{"class":600},[579,2707,2632],{"class":600},[579,2709,2710],{"class":620},"Bearer sk_live_abc123def456",[579,2712,2713],{"class":600},"\"\n",[579,2715,2716],{"class":581,"line":657},[579,2717,1163],{"class":600},[535,2719,2720,2721,611],{},"With ",[553,2722,854],{},[569,2724,2726],{"className":2606,"code":2725,"language":2608,"meta":575,"style":575},"{\n  \"user\": { \"email\": \"a***@***.com\", \"ip\": \"***.***.***.42\" },\n  \"payment\": { \"card\": \"****1111\" },\n  \"auth\": \"Bearer ***\"\n}\n",[553,2727,2728,2732,2777,2805,2821],{"__ignoreMap":575},[579,2729,2730],{"class":581,"line":582},[579,2731,601],{"class":600},[579,2733,2734,2736,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768,2770,2773,2775],{"class":581,"line":604},[579,2735,2619],{"class":600},[579,2737,2622],{"class":714},[579,2739,2625],{"class":600},[579,2741,611],{"class":600},[579,2743,683],{"class":600},[579,2745,2632],{"class":600},[579,2747,920],{"class":1063},[579,2749,2625],{"class":600},[579,2751,611],{"class":600},[579,2753,2632],{"class":600},[579,2755,930],{"class":620},[579,2757,2625],{"class":600},[579,2759,723],{"class":600},[579,2761,2632],{"class":600},[579,2763,2651],{"class":1063},[579,2765,2625],{"class":600},[579,2767,611],{"class":600},[579,2769,2632],{"class":600},[579,2771,2772],{"class":620},"***.***.***.42",[579,2774,2625],{"class":600},[579,2776,832],{"class":600},[579,2778,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803],{"class":581,"line":632},[579,2780,2619],{"class":600},[579,2782,2671],{"class":714},[579,2784,2625],{"class":600},[579,2786,611],{"class":600},[579,2788,683],{"class":600},[579,2790,2632],{"class":600},[579,2792,2682],{"class":1063},[579,2794,2625],{"class":600},[579,2796,611],{"class":600},[579,2798,2632],{"class":600},[579,2800,913],{"class":620},[579,2802,2625],{"class":600},[579,2804,832],{"class":600},[579,2806,2807,2809,2811,2813,2815,2817,2819],{"class":581,"line":643},[579,2808,2619],{"class":600},[579,2810,2701],{"class":714},[579,2812,2625],{"class":600},[579,2814,611],{"class":600},[579,2816,2632],{"class":600},[579,2818,998],{"class":620},[579,2820,2713],{"class":600},[579,2822,2823],{"class":581,"line":657},[579,2824,1163],{"class":600},[535,2826,2827],{},"Same debugging context, no PII in your Axiom\u002FDatadog\u002FSentry.",[558,2829,2831],{"id":2830},"next-steps","Next Steps",[2833,2834,2835,2841,2846],"ul",{},[2071,2836,2837,2840],{},[2838,2839,517],"a",{"href":518}," - Security guidelines and production checklist",[2071,2842,2843,2845],{},[2838,2844,61],{"href":62}," - Control log volume in production",[2071,2847,2848,2850],{},[2838,2849,504],{"href":505}," - Full configuration reference",[2852,2853,2854],"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":575,"searchDepth":604,"depth":604,"links":2856},[2857,2858,2859,2867,2868,2869,2870,2871],{"id":560,"depth":604,"text":561},{"id":861,"depth":604,"text":862},{"id":1030,"depth":604,"text":504,"children":2860},[2861,2862,2863,2864,2865,2866],{"id":1034,"depth":632,"text":1035},{"id":1269,"depth":632,"text":1270},{"id":1332,"depth":632,"text":1333},{"id":1425,"depth":632,"text":1426},{"id":1666,"depth":632,"text":1667},{"id":1809,"depth":632,"text":1810},{"id":1895,"depth":604,"text":1896},{"id":2062,"depth":604,"text":2063},{"id":2133,"depth":604,"text":2134},{"id":2599,"depth":604,"text":2600},{"id":2830,"depth":604,"text":2831},"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",[2875,2878],{"label":517,"icon":379,"to":518,"color":2876,"variant":2877},"neutral","subtle",{"label":504,"icon":507,"to":505,"color":2876,"variant":2877},{},{"icon":69},{"title":66,"description":2872},"HfrEtNSnA75I9MkDU0YNcjYxgfVyFHkVj0m_jAnHB9s",[2884,2886],{"title":61,"path":62,"stem":63,"description":2885,"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":2887,"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.",1786045419267]