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