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