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