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