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