[{"data":1,"prerenderedAt":2453},["ShallowReactive",2],{"navigation_docs":3,"-learn-redaction":439,"-learn-redaction-surround":2448},[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":2437,"extension":2438,"links":2439,"meta":2444,"navigation":2445,"path":67,"seo":2446,"stem":68,"__hash__":2447},"docs\u002F2.learn\u002F6.redaction.md",{"type":442,"value":443,"toc":2421},"minimark",[444,456,467,472,475,759,766,769,773,784,926,938,941,946,965,1076,1098,1105,1109,1112,1179,1202,1206,1209,1265,1269,1275,1356,1360,1363,1443,1447,1618,1635,1639,1642,1686,1693,1697,1700,2163,2167,2170,2284,2289,2391,2394,2398,2417],[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},"key-based-redaction","Key-Based Redaction",[445,947,948,949,952,953,956,957,960,961,964],{},"Redact fields by ",[449,950,951],{},"key name at any nesting depth"," — no need to know the full dot-notation path. A single ",[463,954,955],{},"password"," entry covers ",[463,958,959],{},"user.password",", ",[463,962,963],{},"data.a.b.password",", and every other occurrence:",[479,966,968],{"className":481,"code":967,"language":484,"meta":485,"style":485},"evlog: {\n  redact: {\n    keys: ['password', 'apiKey', 'authorization', 'cookie'],\n    keyPatterns: [\u002F.*_token$\u002Fi],\n  }\n}\n",[463,969,970,979,987,1033,1066,1071],{"__ignoreMap":485},[489,971,972,975,977],{"class":491,"line":492},[489,973,704],{"class":974},"sBMFI",[489,976,521],{"class":510},[489,978,550],{"class":510},[489,980,981,983,985],{"class":491,"line":514},[489,982,668],{"class":974},[489,984,521],{"class":510},[489,986,550],{"class":510},[489,988,989,992,994,996,998,1000,1002,1004,1006,1009,1011,1013,1015,1018,1020,1022,1024,1027,1029,1031],{"class":491,"line":542},[489,990,991],{"class":974},"    keys",[489,993,521],{"class":510},[489,995,524],{"class":517},[489,997,527],{"class":510},[489,999,955],{"class":530},[489,1001,527],{"class":510},[489,1003,633],{"class":510},[489,1005,605],{"class":510},[489,1007,1008],{"class":530},"apiKey",[489,1010,527],{"class":510},[489,1012,633],{"class":510},[489,1014,605],{"class":510},[489,1016,1017],{"class":530},"authorization",[489,1019,527],{"class":510},[489,1021,633],{"class":510},[489,1023,605],{"class":510},[489,1025,1026],{"class":530},"cookie",[489,1028,527],{"class":510},[489,1030,536],{"class":517},[489,1032,539],{"class":510},[489,1034,1035,1038,1040,1042,1045,1047,1050,1053,1056,1058,1062,1064],{"class":491,"line":553},[489,1036,1037],{"class":974},"    keyPatterns",[489,1039,521],{"class":510},[489,1041,524],{"class":517},[489,1043,1044],{"class":510},"\u002F",[489,1046,765],{"class":530},[489,1048,1049],{"class":510},"*",[489,1051,1052],{"class":530},"_token",[489,1054,1055],{"class":495},"$",[489,1057,1044],{"class":510},[489,1059,1061],{"class":1060},"sbssI","i",[489,1063,536],{"class":517},[489,1065,539],{"class":510},[489,1067,1068],{"class":491,"line":567},[489,1069,1070],{"class":510},"  }\n",[489,1072,1073],{"class":491,"line":573},[489,1074,1075],{"class":510},"}\n",[445,1077,1078,1079,1082,1083,1086,1087,1090,1091,1094,1095,765],{},"Key-based redaction replaces the ",[449,1080,1081],{},"entire value"," (including nested objects) with ",[463,1084,1085],{},"replacement",". Use ",[463,1088,1089],{},"keyPatterns"," for regex on property names; use ",[463,1092,1093],{},"patterns"," when you need regex on ",[449,1096,1097],{},"string values",[445,1099,1100,1101,1104],{},"This matches the semantics of ",[463,1102,1103],{},"auditDiff({ redactPaths: ['password'] })"," — the same key-name rules, but applied globally at emit time.",[942,1106,1108],{"id":1107},"custom-paths","Custom Paths",[445,1110,1111],{},"Add exact dot-notation paths when you need to target one location only (e.g. hyphenated header keys):",[479,1113,1115],{"className":481,"code":1114,"language":484,"meta":485,"style":485},"evlog: {\n  redact: {\n    paths: ['headers.x-forwarded-for'],\n    keys: ['authorization'],\n  }\n}\n",[463,1116,1117,1125,1133,1153,1171,1175],{"__ignoreMap":485},[489,1118,1119,1121,1123],{"class":491,"line":492},[489,1120,704],{"class":974},[489,1122,521],{"class":510},[489,1124,550],{"class":510},[489,1126,1127,1129,1131],{"class":491,"line":514},[489,1128,668],{"class":974},[489,1130,521],{"class":510},[489,1132,550],{"class":510},[489,1134,1135,1138,1140,1142,1144,1147,1149,1151],{"class":491,"line":542},[489,1136,1137],{"class":974},"    paths",[489,1139,521],{"class":510},[489,1141,524],{"class":517},[489,1143,527],{"class":510},[489,1145,1146],{"class":530},"headers.x-forwarded-for",[489,1148,527],{"class":510},[489,1150,536],{"class":517},[489,1152,539],{"class":510},[489,1154,1155,1157,1159,1161,1163,1165,1167,1169],{"class":491,"line":553},[489,1156,991],{"class":974},[489,1158,521],{"class":510},[489,1160,524],{"class":517},[489,1162,527],{"class":510},[489,1164,1017],{"class":530},[489,1166,527],{"class":510},[489,1168,536],{"class":517},[489,1170,539],{"class":510},[489,1172,1173],{"class":491,"line":567},[489,1174,1070],{"class":510},[489,1176,1177],{"class":491,"line":573},[489,1178,1075],{"class":510},[445,1180,1181,1182,1185,1186,1188,1189,1191,1192,960,1195,1198,1199,1201],{},"Path-based redaction replaces the ",[449,1183,1184],{},"entire leaf value"," with the ",[463,1187,1085],{}," string (default ",[463,1190,782],{},"), regardless of content. Unlike ",[463,1193,1194],{},"keys",[463,1196,1197],{},"paths: ['password']"," only redacts a top-level ",[463,1200,955],{}," field.",[942,1203,1205],{"id":1204},"selective-built-ins","Selective Built-ins",[445,1207,1208],{},"Pick only the patterns you need:",[479,1210,1212],{"className":481,"code":1211,"language":484,"meta":485,"style":485},"evlog: {\n  redact: {\n    builtins: ['email', 'creditCard'],\n  }\n}\n",[463,1213,1214,1222,1230,1257,1261],{"__ignoreMap":485},[489,1215,1216,1218,1220],{"class":491,"line":492},[489,1217,704],{"class":974},[489,1219,521],{"class":510},[489,1221,550],{"class":510},[489,1223,1224,1226,1228],{"class":491,"line":514},[489,1225,668],{"class":974},[489,1227,521],{"class":510},[489,1229,550],{"class":510},[489,1231,1232,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255],{"class":491,"line":542},[489,1233,1234],{"class":974},"    builtins",[489,1236,521],{"class":510},[489,1238,524],{"class":517},[489,1240,527],{"class":510},[489,1242,830],{"class":530},[489,1244,527],{"class":510},[489,1246,633],{"class":510},[489,1248,605],{"class":510},[489,1250,813],{"class":530},[489,1252,527],{"class":510},[489,1254,536],{"class":517},[489,1256,539],{"class":510},[489,1258,1259],{"class":491,"line":553},[489,1260,1070],{"class":510},[489,1262,1263],{"class":491,"line":567},[489,1264,1075],{"class":510},[942,1266,1268],{"id":1267},"custom-patterns","Custom Patterns",[445,1270,1271,1272,1274],{},"Add your own regex patterns. These use the flat ",[463,1273,1085],{}," string, not smart masking:",[479,1276,1278],{"className":481,"code":1277,"language":484,"meta":485,"style":485},"evlog: {\n  redact: {\n    patterns: [\u002FSECRET_\\w+\u002Fg, \u002Fsk_live_\\w+\u002Fg],\n    replacement: '***',\n  }\n}\n",[463,1279,1280,1288,1296,1332,1348,1352],{"__ignoreMap":485},[489,1281,1282,1284,1286],{"class":491,"line":492},[489,1283,704],{"class":974},[489,1285,521],{"class":510},[489,1287,550],{"class":510},[489,1289,1290,1292,1294],{"class":491,"line":514},[489,1291,668],{"class":974},[489,1293,521],{"class":510},[489,1295,550],{"class":510},[489,1297,1298,1301,1303,1305,1307,1310,1313,1316,1318,1321,1324,1326,1328,1330],{"class":491,"line":542},[489,1299,1300],{"class":974},"    patterns",[489,1302,521],{"class":510},[489,1304,524],{"class":517},[489,1306,1044],{"class":510},[489,1308,1309],{"class":530},"SECRET_\\w",[489,1311,1312],{"class":510},"+\u002F",[489,1314,1315],{"class":1060},"g",[489,1317,633],{"class":510},[489,1319,1320],{"class":510}," \u002F",[489,1322,1323],{"class":530},"sk_live_\\w",[489,1325,1312],{"class":510},[489,1327,1315],{"class":1060},[489,1329,536],{"class":517},[489,1331,539],{"class":510},[489,1333,1334,1337,1339,1341,1344,1346],{"class":491,"line":553},[489,1335,1336],{"class":974},"    replacement",[489,1338,521],{"class":510},[489,1340,605],{"class":510},[489,1342,1343],{"class":530},"***",[489,1345,527],{"class":510},[489,1347,539],{"class":510},[489,1349,1350],{"class":491,"line":567},[489,1351,1070],{"class":510},[489,1353,1354],{"class":491,"line":573},[489,1355,1075],{"class":510},[942,1357,1359],{"id":1358},"disable-built-ins","Disable Built-ins",[445,1361,1362],{},"If you only want custom redaction:",[479,1364,1366],{"className":481,"code":1365,"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,1367,1368,1376,1384,1394,1413,1434,1438],{"__ignoreMap":485},[489,1369,1370,1372,1374],{"class":491,"line":492},[489,1371,704],{"class":974},[489,1373,521],{"class":510},[489,1375,550],{"class":510},[489,1377,1378,1380,1382],{"class":491,"line":514},[489,1379,668],{"class":974},[489,1381,521],{"class":510},[489,1383,550],{"class":510},[489,1385,1386,1388,1390,1392],{"class":491,"line":542},[489,1387,1234],{"class":974},[489,1389,521],{"class":510},[489,1391,562],{"class":561},[489,1393,539],{"class":510},[489,1395,1396,1398,1400,1402,1404,1407,1409,1411],{"class":491,"line":553},[489,1397,1137],{"class":974},[489,1399,521],{"class":510},[489,1401,524],{"class":517},[489,1403,527],{"class":510},[489,1405,1406],{"class":530},"user.ssn",[489,1408,527],{"class":510},[489,1410,536],{"class":517},[489,1412,539],{"class":510},[489,1414,1415,1417,1419,1421,1423,1426,1428,1430,1432],{"class":491,"line":567},[489,1416,1300],{"class":974},[489,1418,521],{"class":510},[489,1420,524],{"class":517},[489,1422,1044],{"class":510},[489,1424,1425],{"class":530},"INTERNAL_\\w",[489,1427,1312],{"class":510},[489,1429,1315],{"class":1060},[489,1431,536],{"class":517},[489,1433,539],{"class":510},[489,1435,1436],{"class":491,"line":573},[489,1437,1070],{"class":510},[489,1439,1441],{"class":491,"line":1440},7,[489,1442,1075],{"class":510},[468,1444,1446],{"id":1445},"configuration-reference","Configuration Reference",[785,1448,1449,1465],{},[788,1450,1451],{},[791,1452,1453,1456,1459,1462],{},[794,1454,1455],{},"Option",[794,1457,1458],{},"Type",[794,1460,1461],{},"Default",[794,1463,1464],{},"Description",[804,1466,1467,1492,1517,1539,1559,1579,1599],{},[791,1468,1469,1474,1479,1485],{},[809,1470,1471],{},[463,1472,1473],{},"redact",[809,1475,1476],{},[463,1477,1478],{},"boolean | RedactConfig",[809,1480,1481,1484],{},[463,1482,1483],{},"true"," in production",[809,1486,1487,1488,1491],{},"Enabled by default in production. ",[463,1489,1490],{},"false"," to disable. Object for fine-grained control",[791,1493,1494,1498,1503,1508],{},[809,1495,1496],{},[463,1497,1194],{},[809,1499,1500],{},[463,1501,1502],{},"string[]",[809,1504,1505],{},[463,1506,1507],{},"undefined",[809,1509,1510,1511,1513,1514,1516],{},"Object key names to redact at any depth (e.g. ",[463,1512,955],{}," → all ",[463,1515,955],{}," fields)",[791,1518,1519,1523,1528,1532],{},[809,1520,1521],{},[463,1522,1089],{},[809,1524,1525],{},[463,1526,1527],{},"RegExp[]",[809,1529,1530],{},[463,1531,1507],{},[809,1533,1534,1535,1538],{},"Regex on object key names at any depth (e.g. ",[463,1536,1537],{},"\u002F.*_token$\u002F",")",[791,1540,1541,1546,1550,1554],{},[809,1542,1543],{},[463,1544,1545],{},"paths",[809,1547,1548],{},[463,1549,1502],{},[809,1551,1552],{},[463,1553,1507],{},[809,1555,1556,1557,1538],{},"Exact dot-notation paths only (e.g. ",[463,1558,1146],{},[791,1560,1561,1565,1569,1573],{},[809,1562,1563],{},[463,1564,1093],{},[809,1566,1567],{},[463,1568,1527],{},[809,1570,1571],{},[463,1572,1507],{},[809,1574,1575,1576,1578],{},"Custom regex on string values. Uses flat ",[463,1577,1085],{}," string",[791,1580,1581,1586,1591,1594],{},[809,1582,1583],{},[463,1584,1585],{},"builtins",[809,1587,1588],{},[463,1589,1590],{},"false | string[]",[809,1592,1593],{},"All enabled",[809,1595,1596,1598],{},[463,1597,1490],{}," disables built-ins. Array selects specific ones",[791,1600,1601,1605,1610,1615],{},[809,1602,1603],{},[463,1604,1085],{},[809,1606,1607],{},[463,1608,1609],{},"string",[809,1611,1612],{},[463,1613,1614],{},"'[REDACTED]'",[809,1616,1617],{},"Replacement for keys, paths, and custom patterns. Built-ins use smart masking instead",[445,1619,1620,1621,960,1623,960,1625,960,1627,960,1629,960,1631,960,1633,765],{},"Available built-in names: ",[463,1622,813],{},[463,1624,830],{},[463,1626,847],{},[463,1628,864],{},[463,1630,881],{},[463,1632,898],{},[463,1634,915],{},[468,1636,1638],{"id":1637},"how-it-works","How It Works",[445,1640,1641],{},"Redaction runs inside the emit pipeline, after the wide event is fully built but before any output:",[1643,1644,1645,1654,1662,1668,1674,1680],"ol",{},[1646,1647,1648,1651,1652],"li",{},[449,1649,1650],{},"Key redaction"," — matching key names at any depth replaced with ",[463,1653,782],{},[1646,1655,1656,1659,1660],{},[449,1657,1658],{},"Path redaction"," — exact dot-notation leaves replaced with ",[463,1661,782],{},[1646,1663,1664,1667],{},[449,1665,1666],{},"Smart masking"," — built-in patterns scan all string values recursively with partial masking",[1646,1669,1670,1673],{},[449,1671,1672],{},"Pattern redaction"," — custom regex patterns scan all string values with flat replacement",[1646,1675,1676,1679],{},[449,1677,1678],{},"Console output"," — masked event printed to stdout",[1646,1681,1682,1685],{},[449,1683,1684],{},"Drain"," — masked event sent to external services",[927,1687,1688,1689,1692],{"color":929,"icon":28},"Redaction runs ",[449,1690,1691],{},"after"," the HTTP response is sent, so it adds zero latency to your API responses.",[468,1694,1696],{"id":1695},"production-example","Production Example",[445,1698,1699],{},"Redaction is already on by default in production. Combine with sampling for a typical setup:",[476,1701,1702,1892,2034],{},[479,1703,1705],{"className":481,"code":1704,"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,1706,1707,1719,1737,1745,1766,1770,1779,1788,1798,1828,1868,1874,1880,1885],{"__ignoreMap":485},[489,1708,1709,1711,1713,1715,1717],{"class":491,"line":492},[489,1710,496],{"class":495},[489,1712,499],{"class":495},[489,1714,503],{"class":502},[489,1716,507],{"class":506},[489,1718,511],{"class":510},[489,1720,1721,1723,1725,1727,1729,1731,1733,1735],{"class":491,"line":514},[489,1722,518],{"class":517},[489,1724,521],{"class":510},[489,1726,524],{"class":506},[489,1728,527],{"class":510},[489,1730,531],{"class":530},[489,1732,527],{"class":510},[489,1734,536],{"class":506},[489,1736,539],{"class":510},[489,1738,1739,1741,1743],{"class":491,"line":542},[489,1740,545],{"class":517},[489,1742,521],{"class":510},[489,1744,550],{"class":510},[489,1746,1747,1750,1752,1754,1756,1758,1760,1762,1764],{"class":491,"line":553},[489,1748,1749],{"class":517},"    env",[489,1751,521],{"class":510},[489,1753,593],{"class":510},[489,1755,731],{"class":517},[489,1757,521],{"class":510},[489,1759,605],{"class":510},[489,1761,659],{"class":530},[489,1763,527],{"class":510},[489,1765,742],{"class":510},[489,1767,1768],{"class":491,"line":567},[489,1769,570],{"class":510},[489,1771,1772,1775,1777],{"class":491,"line":573},[489,1773,1774],{"class":517},"  $production",[489,1776,521],{"class":510},[489,1778,550],{"class":510},[489,1780,1781,1784,1786],{"class":491,"line":1440},[489,1782,1783],{"class":517},"    evlog",[489,1785,521],{"class":510},[489,1787,550],{"class":510},[489,1789,1791,1794,1796],{"class":491,"line":1790},8,[489,1792,1793],{"class":517},"      sampling",[489,1795,521],{"class":510},[489,1797,550],{"class":510},[489,1799,1801,1804,1806,1808,1811,1813,1816,1818,1821,1823,1826],{"class":491,"line":1800},9,[489,1802,1803],{"class":517},"        rates",[489,1805,521],{"class":510},[489,1807,593],{"class":510},[489,1809,1810],{"class":517}," info",[489,1812,521],{"class":510},[489,1814,1815],{"class":1060}," 10",[489,1817,633],{"class":510},[489,1819,1820],{"class":517}," debug",[489,1822,521],{"class":510},[489,1824,1825],{"class":1060}," 0",[489,1827,742],{"class":510},[489,1829,1831,1834,1836,1838,1841,1844,1846,1849,1852,1854,1857,1859,1862,1864,1866],{"class":491,"line":1830},10,[489,1832,1833],{"class":517},"        keep",[489,1835,521],{"class":510},[489,1837,524],{"class":506},[489,1839,1840],{"class":510},"{",[489,1842,1843],{"class":517}," status",[489,1845,521],{"class":510},[489,1847,1848],{"class":1060}," 400",[489,1850,1851],{"class":510}," },",[489,1853,593],{"class":510},[489,1855,1856],{"class":517}," duration",[489,1858,521],{"class":510},[489,1860,1861],{"class":1060}," 1000",[489,1863,599],{"class":510},[489,1865,536],{"class":506},[489,1867,539],{"class":510},[489,1869,1871],{"class":491,"line":1870},11,[489,1872,1873],{"class":510},"      },\n",[489,1875,1877],{"class":491,"line":1876},12,[489,1878,1879],{"class":510},"    },\n",[489,1881,1883],{"class":491,"line":1882},13,[489,1884,570],{"class":510},[489,1886,1888,1890],{"class":491,"line":1887},14,[489,1889,576],{"class":510},[489,1891,579],{"class":506},[479,1893,1895],{"className":481,"code":1894,"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,1896,1897,1915,1919,1943,1957,1966,1991,2024,2028],{"__ignoreMap":485},[489,1898,1899,1901,1903,1905,1907,1909,1911,1913],{"class":491,"line":492},[489,1900,590],{"class":495},[489,1902,593],{"class":510},[489,1904,596],{"class":506},[489,1906,599],{"class":510},[489,1908,602],{"class":495},[489,1910,605],{"class":510},[489,1912,608],{"class":530},[489,1914,611],{"class":510},[489,1916,1917],{"class":491,"line":514},[489,1918,617],{"emptyLinePlaceholder":616},[489,1920,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941],{"class":491,"line":542},[489,1922,496],{"class":495},[489,1924,625],{"class":624},[489,1926,593],{"class":510},[489,1928,630],{"class":506},[489,1930,633],{"class":510},[489,1932,636],{"class":506},[489,1934,576],{"class":510},[489,1936,641],{"class":510},[489,1938,596],{"class":502},[489,1940,507],{"class":506},[489,1942,511],{"class":510},[489,1944,1945,1947,1949,1951,1953,1955],{"class":491,"line":553},[489,1946,652],{"class":517},[489,1948,521],{"class":510},[489,1950,605],{"class":510},[489,1952,659],{"class":530},[489,1954,527],{"class":510},[489,1956,539],{"class":510},[489,1958,1959,1962,1964],{"class":491,"line":567},[489,1960,1961],{"class":517},"  sampling",[489,1963,521],{"class":510},[489,1965,550],{"class":510},[489,1967,1968,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989],{"class":491,"line":573},[489,1969,1970],{"class":517},"    rates",[489,1972,521],{"class":510},[489,1974,593],{"class":510},[489,1976,1810],{"class":517},[489,1978,521],{"class":510},[489,1980,1815],{"class":1060},[489,1982,633],{"class":510},[489,1984,1820],{"class":517},[489,1986,521],{"class":510},[489,1988,1825],{"class":1060},[489,1990,742],{"class":510},[489,1992,1993,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014,2016,2018,2020,2022],{"class":491,"line":1440},[489,1994,1995],{"class":517},"    keep",[489,1997,521],{"class":510},[489,1999,524],{"class":506},[489,2001,1840],{"class":510},[489,2003,1843],{"class":517},[489,2005,521],{"class":510},[489,2007,1848],{"class":1060},[489,2009,1851],{"class":510},[489,2011,593],{"class":510},[489,2013,1856],{"class":517},[489,2015,521],{"class":510},[489,2017,1861],{"class":1060},[489,2019,599],{"class":510},[489,2021,536],{"class":506},[489,2023,539],{"class":510},[489,2025,2026],{"class":491,"line":1790},[489,2027,570],{"class":510},[489,2029,2030,2032],{"class":491,"line":1800},[489,2031,576],{"class":510},[489,2033,579],{"class":506},[479,2035,2037],{"className":481,"code":2036,"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,2038,2039,2057,2061,2069,2089,2097,2121,2153,2157],{"__ignoreMap":485},[489,2040,2041,2043,2045,2047,2049,2051,2053,2055],{"class":491,"line":492},[489,2042,590],{"class":495},[489,2044,593],{"class":510},[489,2046,695],{"class":506},[489,2048,599],{"class":510},[489,2050,602],{"class":495},[489,2052,605],{"class":510},[489,2054,704],{"class":530},[489,2056,611],{"class":510},[489,2058,2059],{"class":491,"line":514},[489,2060,617],{"emptyLinePlaceholder":616},[489,2062,2063,2065,2067],{"class":491,"line":542},[489,2064,715],{"class":502},[489,2066,507],{"class":506},[489,2068,511],{"class":510},[489,2070,2071,2073,2075,2077,2079,2081,2083,2085,2087],{"class":491,"line":553},[489,2072,724],{"class":517},[489,2074,521],{"class":510},[489,2076,593],{"class":510},[489,2078,731],{"class":517},[489,2080,521],{"class":510},[489,2082,605],{"class":510},[489,2084,659],{"class":530},[489,2086,527],{"class":510},[489,2088,742],{"class":510},[489,2090,2091,2093,2095],{"class":491,"line":567},[489,2092,1961],{"class":517},[489,2094,521],{"class":510},[489,2096,550],{"class":510},[489,2098,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119],{"class":491,"line":573},[489,2100,1970],{"class":517},[489,2102,521],{"class":510},[489,2104,593],{"class":510},[489,2106,1810],{"class":517},[489,2108,521],{"class":510},[489,2110,1815],{"class":1060},[489,2112,633],{"class":510},[489,2114,1820],{"class":517},[489,2116,521],{"class":510},[489,2118,1825],{"class":1060},[489,2120,742],{"class":510},[489,2122,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151],{"class":491,"line":1440},[489,2124,1995],{"class":517},[489,2126,521],{"class":510},[489,2128,524],{"class":506},[489,2130,1840],{"class":510},[489,2132,1843],{"class":517},[489,2134,521],{"class":510},[489,2136,1848],{"class":1060},[489,2138,1851],{"class":510},[489,2140,593],{"class":510},[489,2142,1856],{"class":517},[489,2144,521],{"class":510},[489,2146,1861],{"class":1060},[489,2148,599],{"class":510},[489,2150,536],{"class":506},[489,2152,539],{"class":510},[489,2154,2155],{"class":491,"line":1790},[489,2156,570],{"class":510},[489,2158,2159,2161],{"class":491,"line":1800},[489,2160,576],{"class":510},[489,2162,579],{"class":506},[468,2164,2166],{"id":2165},"before-after","Before \u002F After",[445,2168,2169],{},"Without redaction, sensitive data lands in your logs and drains:",[479,2171,2175],{"className":2172,"code":2173,"language":2174,"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,2176,2177,2181,2231,2261,2280],{"__ignoreMap":485},[489,2178,2179],{"class":491,"line":492},[489,2180,511],{"class":510},[489,2182,2183,2186,2189,2192,2194,2196,2199,2201,2203,2205,2207,2209,2211,2213,2215,2218,2220,2222,2224,2227,2229],{"class":491,"line":514},[489,2184,2185],{"class":510},"  \"",[489,2187,2188],{"class":624},"user",[489,2190,2191],{"class":510},"\"",[489,2193,521],{"class":510},[489,2195,593],{"class":510},[489,2197,2198],{"class":510}," \"",[489,2200,830],{"class":974},[489,2202,2191],{"class":510},[489,2204,521],{"class":510},[489,2206,2198],{"class":510},[489,2208,835],{"class":530},[489,2210,2191],{"class":510},[489,2212,633],{"class":510},[489,2214,2198],{"class":510},[489,2216,2217],{"class":974},"ip",[489,2219,2191],{"class":510},[489,2221,521],{"class":510},[489,2223,2198],{"class":510},[489,2225,2226],{"class":530},"192.168.1.42",[489,2228,2191],{"class":510},[489,2230,742],{"class":510},[489,2232,2233,2235,2238,2240,2242,2244,2246,2249,2251,2253,2255,2257,2259],{"class":491,"line":542},[489,2234,2185],{"class":510},[489,2236,2237],{"class":624},"payment",[489,2239,2191],{"class":510},[489,2241,521],{"class":510},[489,2243,593],{"class":510},[489,2245,2198],{"class":510},[489,2247,2248],{"class":974},"card",[489,2250,2191],{"class":510},[489,2252,521],{"class":510},[489,2254,2198],{"class":510},[489,2256,818],{"class":530},[489,2258,2191],{"class":510},[489,2260,742],{"class":510},[489,2262,2263,2265,2268,2270,2272,2274,2277],{"class":491,"line":553},[489,2264,2185],{"class":510},[489,2266,2267],{"class":624},"auth",[489,2269,2191],{"class":510},[489,2271,521],{"class":510},[489,2273,2198],{"class":510},[489,2275,2276],{"class":530},"Bearer sk_live_abc123def456",[489,2278,2279],{"class":510},"\"\n",[489,2281,2282],{"class":491,"line":567},[489,2283,1075],{"class":510},[445,2285,2286,2287,521],{},"With ",[463,2288,764],{},[479,2290,2292],{"className":2172,"code":2291,"language":2174,"meta":485,"style":485},"{\n  \"user\": { \"email\": \"a***@***.com\", \"ip\": \"***.***.***.42\" },\n  \"payment\": { \"card\": \"****1111\" },\n  \"auth\": \"Bearer ***\"\n}\n",[463,2293,2294,2298,2343,2371,2387],{"__ignoreMap":485},[489,2295,2296],{"class":491,"line":492},[489,2297,511],{"class":510},[489,2299,2300,2302,2304,2306,2308,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2339,2341],{"class":491,"line":514},[489,2301,2185],{"class":510},[489,2303,2188],{"class":624},[489,2305,2191],{"class":510},[489,2307,521],{"class":510},[489,2309,593],{"class":510},[489,2311,2198],{"class":510},[489,2313,830],{"class":974},[489,2315,2191],{"class":510},[489,2317,521],{"class":510},[489,2319,2198],{"class":510},[489,2321,840],{"class":530},[489,2323,2191],{"class":510},[489,2325,633],{"class":510},[489,2327,2198],{"class":510},[489,2329,2217],{"class":974},[489,2331,2191],{"class":510},[489,2333,521],{"class":510},[489,2335,2198],{"class":510},[489,2337,2338],{"class":530},"***.***.***.42",[489,2340,2191],{"class":510},[489,2342,742],{"class":510},[489,2344,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369],{"class":491,"line":542},[489,2346,2185],{"class":510},[489,2348,2237],{"class":624},[489,2350,2191],{"class":510},[489,2352,521],{"class":510},[489,2354,593],{"class":510},[489,2356,2198],{"class":510},[489,2358,2248],{"class":974},[489,2360,2191],{"class":510},[489,2362,521],{"class":510},[489,2364,2198],{"class":510},[489,2366,823],{"class":530},[489,2368,2191],{"class":510},[489,2370,742],{"class":510},[489,2372,2373,2375,2377,2379,2381,2383,2385],{"class":491,"line":553},[489,2374,2185],{"class":510},[489,2376,2267],{"class":624},[489,2378,2191],{"class":510},[489,2380,521],{"class":510},[489,2382,2198],{"class":510},[489,2384,908],{"class":530},[489,2386,2279],{"class":510},[489,2388,2389],{"class":491,"line":567},[489,2390,1075],{"class":510},[445,2392,2393],{},"Same debugging context, no PII in your Axiom\u002FDatadog\u002FSentry.",[468,2395,2397],{"id":2396},"next-steps","Next Steps",[2399,2400,2401,2407,2412],"ul",{},[1646,2402,2403,2406],{},[2404,2405,427],"a",{"href":428}," - Security guidelines and production checklist",[1646,2408,2409,2411],{},[2404,2410,61],{"href":62}," - Control log volume in production",[1646,2413,2414,2416],{},[2404,2415,414],{"href":415}," - Full configuration reference",[2418,2419,2420],"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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":485,"searchDepth":514,"depth":514,"links":2422},[2423,2424,2425,2432,2433,2434,2435,2436],{"id":470,"depth":514,"text":471},{"id":771,"depth":514,"text":772},{"id":940,"depth":514,"text":414,"children":2426},[2427,2428,2429,2430,2431],{"id":944,"depth":542,"text":945},{"id":1107,"depth":542,"text":1108},{"id":1204,"depth":542,"text":1205},{"id":1267,"depth":542,"text":1268},{"id":1358,"depth":542,"text":1359},{"id":1445,"depth":514,"text":1446},{"id":1637,"depth":514,"text":1638},{"id":1695,"depth":514,"text":1696},{"id":2165,"depth":514,"text":2166},{"id":2396,"depth":514,"text":2397},"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",[2440,2443],{"label":427,"icon":318,"to":428,"color":2441,"variant":2442},"neutral","subtle",{"label":414,"icon":417,"to":415,"color":2441,"variant":2442},{},{"icon":69},{"title":66,"description":2437},"JfUnX1C1AtbgffW40VTlnt_-mkIFZDR2xkIykZBh1qQ",[2449,2451],{"title":61,"path":62,"stem":63,"description":2450,"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":2452,"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.",1781122986606]