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