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