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