[{"data":1,"prerenderedAt":1781},["ShallowReactive",2],{"navigation_docs":3,"-learn-overview":520,"-learn-overview-surround":1776},[4,30,80,123,303,435,490],{"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,215],{"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,195],{"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},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[185,190],{"title":186,"path":187,"stem":188,"icon":189},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":191,"path":192,"stem":193,"icon":194},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":196,"path":197,"stem":198,"children":199,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[200,205,210],{"title":201,"path":202,"stem":203,"icon":204},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":206,"path":207,"stem":208,"icon":209},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":211,"path":212,"stem":213,"icon":214},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":216,"path":217,"stem":218,"children":219,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[220,224,229,234,239,244,249,254,259,264,269,274,279,284,288,293,298],{"title":36,"path":221,"stem":222,"icon":223},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":225,"path":226,"stem":227,"icon":228},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":230,"path":231,"stem":232,"icon":233},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":235,"path":236,"stem":237,"icon":238},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":240,"path":241,"stem":242,"icon":243},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":245,"path":246,"stem":247,"icon":248},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":250,"path":251,"stem":252,"icon":253},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":255,"path":256,"stem":257,"icon":258},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":260,"path":261,"stem":262,"icon":263},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":265,"path":266,"stem":267,"icon":268},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":270,"path":271,"stem":272,"icon":273},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":275,"path":276,"stem":277,"icon":278},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":280,"path":281,"stem":282,"icon":283},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":285,"path":286,"stem":287,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":289,"path":290,"stem":291,"icon":292},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":294,"path":295,"stem":296,"icon":297},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":299,"path":300,"stem":301,"icon":302},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":304,"path":305,"stem":306,"children":307,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[308,311,316,345,372,404,425,430],{"title":36,"path":309,"stem":310,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":312,"path":313,"stem":314,"icon":315},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[322,325,330,335,340],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":331,"path":332,"stem":333,"icon":334},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":336,"path":337,"stem":338,"icon":339},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":341,"path":342,"stem":343,"icon":344},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":346,"icon":347,"path":348,"stem":349,"children":350,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[351,354,359,364,368],{"title":36,"path":352,"stem":353,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":355,"path":356,"stem":357,"icon":358},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":360,"path":361,"stem":362,"icon":363},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":365,"path":366,"stem":367,"icon":315},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":369,"path":370,"stem":371,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":373,"icon":374,"path":375,"stem":376,"children":377,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[378,381,386,391,396,400],{"title":36,"path":379,"stem":380,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":382,"path":383,"stem":384,"icon":385},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":387,"path":388,"stem":389,"icon":390},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":392,"path":393,"stem":394,"icon":395},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":397,"path":398,"stem":399,"icon":374},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":401,"path":402,"stem":403,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":341,"icon":107,"path":405,"stem":406,"children":407,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[408,411,416,421],{"title":36,"path":409,"stem":410,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":412,"path":413,"stem":414,"icon":415},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":417,"path":418,"stem":419,"icon":420},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":422,"path":423,"stem":424,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":426,"path":427,"stem":428,"icon":429},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":431,"path":432,"stem":433,"icon":434},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":436,"path":437,"stem":438,"children":439,"page":29},"Extend","\u002Fextend","6.extend",[440,444,449,454,459,463,467,471,475,480,485],{"title":36,"path":441,"stem":442,"icon":443},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":445,"path":446,"stem":447,"icon":448},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":450,"path":451,"stem":452,"icon":453},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":455,"path":456,"stem":457,"icon":458},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":401,"path":460,"stem":461,"icon":462},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":464,"path":465,"stem":466,"icon":443},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":468,"path":469,"stem":470,"icon":429},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":472,"path":473,"stem":474,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":476,"path":477,"stem":478,"icon":479},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":481,"path":482,"stem":483,"icon":484},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":486,"path":487,"stem":488,"icon":489},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":422,"path":491,"stem":492,"children":493,"page":29},"\u002Freference","7.reference",[494,499,502,507,511,516],{"title":495,"path":496,"stem":497,"icon":498},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":369,"path":500,"stem":501,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":503,"path":504,"stem":505,"icon":506},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":508,"path":509,"stem":510,"icon":374},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":512,"path":513,"stem":514,"icon":515},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":517,"path":518,"stem":519,"icon":429},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":521,"title":522,"body":523,"description":1765,"extension":1766,"links":1767,"meta":1772,"navigation":1773,"path":37,"seo":1774,"stem":38,"__hash__":1775},"docs\u002F2.learn\u002F0.overview.md","Learn evlog",{"type":524,"value":525,"toc":1750},"minimark",[526,535,538,543,556,561,595,599,608,611,753,764,767,1033,1051,1055,1062,1218,1236,1240,1354,1358,1581,1590,1594,1597,1658,1662,1665,1734,1746],[527,528,529,530,534],"p",{},"This section is the ",[531,532,533],"strong",{},"mental model"," of evlog. By the end, you'll know exactly what evlog does, when each API fits, and how an event flows from your code to your drain.",[527,536,537],{},"If you're new, read it in order. If you've already shipped with evlog, jump to the page that matches your question.",[539,540,542],"callout",{"color":541,"icon":13},"info","All three modes coexist in the same logger. Pick per call — there's no upgrade path, no advanced mode, no toggle to flip. Same drains, same redaction, same types underneath.",[539,544,547,548,552,553,555],{"color":545,"icon":546},"neutral","i-lucide-globe","Not running an HTTP framework? See ",[549,550,551],"a",{"href":286},"Standalone TypeScript"," and ",[549,554,280],{"href":281},".",[557,558,560],"h2",{"id":559},"the-three-logging-modes","The three logging modes",[562,563,564,587,590],"card-group",{},[565,566,567,568,572,573,576,577,576,580,576,583,586],"card",{"color":545,"icon":44,"title":41,"to":42},"A fully-featured general-purpose logger. Replaces ",[569,570,571],"code",{},"console.log",", consola, pino, or winston with ",[569,574,575],{},"log.info",", ",[569,578,579],{},"log.error",[569,581,582],{},"log.warn",[569,584,585],{},"log.debug"," — same level filtering, drain pipeline, redaction, and pretty\u002FJSON output.",[565,588,589],{"color":545,"icon":49,"title":46,"to":47},"Accumulate context over a unit of work (a script, job, queue task, or request) then emit a single comprehensive event.",[565,591,594],{"color":545,"icon":592,"title":593,"to":221},"i-lucide-git-branch","Request Logging","Auto-managed wide events scoped to HTTP requests. Framework middleware creates the logger and emits it for you.",[557,596,598],{"id":597},"quick-comparison","Quick comparison",[600,601,603,604,607],"h3",{"id":602},"simple-logging-log","Simple Logging (",[569,605,606],{},"log",")",[527,609,610],{},"One event per call. No accumulation, no lifecycle management.",[612,613,619],"pre",{"className":614,"code":615,"filename":616,"language":617,"meta":618,"style":618},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined', userId: 42 })\n","src\u002Findex.ts","typescript","",[569,620,621,654,661,695],{"__ignoreMap":618},[622,623,626,630,634,638,641,644,647,651],"span",{"class":624,"line":625},"line",1,[622,627,629],{"class":628},"s7zQu","import",[622,631,633],{"class":632},"sMK4o"," {",[622,635,637],{"class":636},"sTEyZ"," log",[622,639,640],{"class":632}," }",[622,642,643],{"class":628}," from",[622,645,646],{"class":632}," '",[622,648,650],{"class":649},"sfazB","evlog",[622,652,653],{"class":632},"'\n",[622,655,657],{"class":624,"line":656},2,[622,658,660],{"emptyLinePlaceholder":659},true,"\n",[622,662,664,666,668,671,674,677,680,682,685,687,690,692],{"class":624,"line":663},3,[622,665,606],{"class":636},[622,667,555],{"class":632},[622,669,541],{"class":670},"s2Zo4",[622,672,673],{"class":636},"(",[622,675,676],{"class":632},"'",[622,678,679],{"class":649},"auth",[622,681,676],{"class":632},[622,683,684],{"class":632},",",[622,686,646],{"class":632},[622,688,689],{"class":649},"User logged in",[622,691,676],{"class":632},[622,693,694],{"class":636},")\n",[622,696,698,700,702,705,707,710,714,717,719,722,724,726,729,731,733,736,738,740,743,745,749,751],{"class":624,"line":697},4,[622,699,606],{"class":636},[622,701,555],{"class":632},[622,703,704],{"class":670},"error",[622,706,673],{"class":636},[622,708,709],{"class":632},"{",[622,711,713],{"class":712},"swJcz"," action",[622,715,716],{"class":632},":",[622,718,646],{"class":632},[622,720,721],{"class":649},"payment",[622,723,676],{"class":632},[622,725,684],{"class":632},[622,727,728],{"class":712}," error",[622,730,716],{"class":632},[622,732,646],{"class":632},[622,734,735],{"class":649},"card_declined",[622,737,676],{"class":632},[622,739,684],{"class":632},[622,741,742],{"class":712}," userId",[622,744,716],{"class":632},[622,746,748],{"class":747},"sbssI"," 42",[622,750,640],{"class":632},[622,752,694],{"class":636},[600,754,756,757,760,761,607],{"id":755},"wide-events-createlogger-createrequestlogger","Wide Events (",[569,758,759],{},"createLogger"," \u002F ",[569,762,763],{},"createRequestLogger",[527,765,766],{},"One event per unit of work. Accumulate context progressively, emit when done.",[768,769,770,903],"code-group",{},[612,771,774],{"className":614,"code":772,"filename":773,"language":617,"meta":618,"style":618},"import { createLogger } from 'evlog'\n\nconst log = createLogger({ jobId: 'sync-001', queue: 'emails' })\nlog.set({ batch: { size: 50, processed: 50 } })\nlog.emit()\n","scripts\u002Fsync-job.ts",[569,775,776,795,799,847,890],{"__ignoreMap":618},[622,777,778,780,782,785,787,789,791,793],{"class":624,"line":625},[622,779,629],{"class":628},[622,781,633],{"class":632},[622,783,784],{"class":636}," createLogger",[622,786,640],{"class":632},[622,788,643],{"class":628},[622,790,646],{"class":632},[622,792,650],{"class":649},[622,794,653],{"class":632},[622,796,797],{"class":624,"line":656},[622,798,660],{"emptyLinePlaceholder":659},[622,800,801,805,808,811,813,815,817,820,822,824,827,829,831,834,836,838,841,843,845],{"class":624,"line":663},[622,802,804],{"class":803},"spNyl","const",[622,806,807],{"class":636}," log ",[622,809,810],{"class":632},"=",[622,812,784],{"class":670},[622,814,673],{"class":636},[622,816,709],{"class":632},[622,818,819],{"class":712}," jobId",[622,821,716],{"class":632},[622,823,646],{"class":632},[622,825,826],{"class":649},"sync-001",[622,828,676],{"class":632},[622,830,684],{"class":632},[622,832,833],{"class":712}," queue",[622,835,716],{"class":632},[622,837,646],{"class":632},[622,839,840],{"class":649},"emails",[622,842,676],{"class":632},[622,844,640],{"class":632},[622,846,694],{"class":636},[622,848,849,851,853,856,858,860,863,865,867,870,872,875,877,880,882,884,886,888],{"class":624,"line":697},[622,850,606],{"class":636},[622,852,555],{"class":632},[622,854,855],{"class":670},"set",[622,857,673],{"class":636},[622,859,709],{"class":632},[622,861,862],{"class":712}," batch",[622,864,716],{"class":632},[622,866,633],{"class":632},[622,868,869],{"class":712}," size",[622,871,716],{"class":632},[622,873,874],{"class":747}," 50",[622,876,684],{"class":632},[622,878,879],{"class":712}," processed",[622,881,716],{"class":632},[622,883,874],{"class":747},[622,885,640],{"class":632},[622,887,640],{"class":632},[622,889,694],{"class":636},[622,891,893,895,897,900],{"class":624,"line":892},5,[622,894,606],{"class":636},[622,896,555],{"class":632},[622,898,899],{"class":670},"emit",[622,901,902],{"class":636},"()\n",[612,904,907],{"className":614,"code":905,"filename":906,"language":617,"meta":618,"style":618},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.emit()\n","src\u002Fworker.ts",[569,908,909,928,932,976,1023],{"__ignoreMap":618},[622,910,911,913,915,918,920,922,924,926],{"class":624,"line":625},[622,912,629],{"class":628},[622,914,633],{"class":632},[622,916,917],{"class":636}," createRequestLogger",[622,919,640],{"class":632},[622,921,643],{"class":628},[622,923,646],{"class":632},[622,925,650],{"class":649},[622,927,653],{"class":632},[622,929,930],{"class":624,"line":656},[622,931,660],{"emptyLinePlaceholder":659},[622,933,934,936,938,940,942,944,946,949,951,953,956,958,960,963,965,967,970,972,974],{"class":624,"line":663},[622,935,804],{"class":803},[622,937,807],{"class":636},[622,939,810],{"class":632},[622,941,917],{"class":670},[622,943,673],{"class":636},[622,945,709],{"class":632},[622,947,948],{"class":712}," method",[622,950,716],{"class":632},[622,952,646],{"class":632},[622,954,955],{"class":649},"POST",[622,957,676],{"class":632},[622,959,684],{"class":632},[622,961,962],{"class":712}," path",[622,964,716],{"class":632},[622,966,646],{"class":632},[622,968,969],{"class":649},"\u002Fapi\u002Fcheckout",[622,971,676],{"class":632},[622,973,640],{"class":632},[622,975,694],{"class":636},[622,977,978,980,982,984,986,988,991,993,995,998,1000,1003,1005,1008,1010,1012,1015,1017,1019,1021],{"class":624,"line":697},[622,979,606],{"class":636},[622,981,555],{"class":632},[622,983,855],{"class":670},[622,985,673],{"class":636},[622,987,709],{"class":632},[622,989,990],{"class":712}," user",[622,992,716],{"class":632},[622,994,633],{"class":632},[622,996,997],{"class":712}," id",[622,999,716],{"class":632},[622,1001,1002],{"class":747}," 1",[622,1004,684],{"class":632},[622,1006,1007],{"class":712}," plan",[622,1009,716],{"class":632},[622,1011,646],{"class":632},[622,1013,1014],{"class":649},"pro",[622,1016,676],{"class":632},[622,1018,640],{"class":632},[622,1020,640],{"class":632},[622,1022,694],{"class":636},[622,1024,1025,1027,1029,1031],{"class":624,"line":892},[622,1026,606],{"class":636},[622,1028,555],{"class":632},[622,1030,899],{"class":670},[622,1032,902],{"class":636},[527,1034,1035,1037,1038,1040,1041,576,1044,1047,1048,555],{},[569,1036,763],{}," is a thin wrapper around ",[569,1039,759],{}," that pre-populates ",[569,1042,1043],{},"method",[569,1045,1046],{},"path",", and ",[569,1049,1050],{},"requestId",[600,1052,1054],{"id":1053},"request-logging-framework-middleware","Request Logging (framework middleware)",[527,1056,1057,1058,1061],{},"Framework integrations create a wide event logger automatically on each request. ",[569,1059,1060],{},"useLogger(event)"," retrieves the logger that's already attached to the request context:",[612,1063,1066],{"className":614,"code":1064,"filename":1065,"language":617,"meta":618,"style":618},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return { success: true }\n  \u002F\u002F auto-emitted on response end\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[569,1067,1068,1087,1091,1122,1140,1183,1203,1210],{"__ignoreMap":618},[622,1069,1070,1072,1074,1077,1079,1081,1083,1085],{"class":624,"line":625},[622,1071,629],{"class":628},[622,1073,633],{"class":632},[622,1075,1076],{"class":636}," useLogger",[622,1078,640],{"class":632},[622,1080,643],{"class":628},[622,1082,646],{"class":632},[622,1084,650],{"class":649},[622,1086,653],{"class":632},[622,1088,1089],{"class":624,"line":656},[622,1090,660],{"emptyLinePlaceholder":659},[622,1092,1093,1096,1099,1102,1104,1107,1110,1114,1116,1119],{"class":624,"line":663},[622,1094,1095],{"class":628},"export",[622,1097,1098],{"class":628}," default",[622,1100,1101],{"class":670}," defineEventHandler",[622,1103,673],{"class":636},[622,1105,1106],{"class":803},"async",[622,1108,1109],{"class":632}," (",[622,1111,1113],{"class":1112},"sHdIc","event",[622,1115,607],{"class":632},[622,1117,1118],{"class":803}," =>",[622,1120,1121],{"class":632}," {\n",[622,1123,1124,1127,1129,1132,1134,1136,1138],{"class":624,"line":697},[622,1125,1126],{"class":803},"  const",[622,1128,637],{"class":636},[622,1130,1131],{"class":632}," =",[622,1133,1076],{"class":670},[622,1135,673],{"class":712},[622,1137,1113],{"class":636},[622,1139,694],{"class":712},[622,1141,1142,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181],{"class":624,"line":892},[622,1143,1144],{"class":636},"  log",[622,1146,555],{"class":632},[622,1148,855],{"class":670},[622,1150,673],{"class":712},[622,1152,709],{"class":632},[622,1154,990],{"class":712},[622,1156,716],{"class":632},[622,1158,633],{"class":632},[622,1160,997],{"class":712},[622,1162,716],{"class":632},[622,1164,1002],{"class":747},[622,1166,684],{"class":632},[622,1168,1007],{"class":712},[622,1170,716],{"class":632},[622,1172,646],{"class":632},[622,1174,1014],{"class":649},[622,1176,676],{"class":632},[622,1178,640],{"class":632},[622,1180,640],{"class":632},[622,1182,694],{"class":712},[622,1184,1186,1189,1191,1194,1196,1200],{"class":624,"line":1185},6,[622,1187,1188],{"class":628},"  return",[622,1190,633],{"class":632},[622,1192,1193],{"class":712}," success",[622,1195,716],{"class":632},[622,1197,1199],{"class":1198},"sfNiH"," true",[622,1201,1202],{"class":632}," }\n",[622,1204,1206],{"class":624,"line":1205},7,[622,1207,1209],{"class":1208},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[622,1211,1213,1216],{"class":624,"line":1212},8,[622,1214,1215],{"class":632},"}",[622,1217,694],{"class":636},[539,1219,1220,1222,1223,576,1226,576,1229,1232,1233,1235],{"color":541,"icon":13},[569,1221,1060],{}," doesn't create a logger, it retrieves the one the framework middleware already attached to the event. Each framework has its own way to access it (",[569,1224,1225],{},"useLogger",[569,1227,1228],{},"req.log",[569,1230,1231],{},"c.get('log')",", etc.). In Nuxt, ",[569,1234,1225],{}," is auto-imported.",[557,1237,1239],{"id":1238},"when-to-use-what","When to use what",[1241,1242,1243,1265],"table",{},[1244,1245,1246],"thead",{},[1247,1248,1249,1252,1256,1262],"tr",{},[1250,1251],"th",{},[1250,1253,1254],{},[569,1255,606],{},[1250,1257,1258,760,1260],{},[569,1259,759],{},[569,1261,763],{},[1250,1263,1264],{},"Framework middleware",[1266,1267,1268,1285,1305,1324,1339],"tbody",{},[1247,1269,1270,1276,1279,1282],{},[1271,1272,1273],"td",{},[531,1274,1275],{},"Use case",[1271,1277,1278],{},"Quick one-off events",[1271,1280,1281],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1271,1283,1284],{},"API routes with a framework integration",[1247,1286,1287,1292,1295,1301],{},[1271,1288,1289],{},[531,1290,1291],{},"Context",[1271,1293,1294],{},"Single call",[1271,1296,1297,1298],{},"Accumulate with ",[569,1299,1300],{},"set()",[1271,1302,1297,1303],{},[569,1304,1300],{},[1247,1306,1307,1312,1315,1321],{},[1271,1308,1309],{},[531,1310,1311],{},"Emit",[1271,1313,1314],{},"Immediate",[1271,1316,1317,1318],{},"Manual ",[569,1319,1320],{},"emit()",[1271,1322,1323],{},"Automatic on response end",[1247,1325,1326,1330,1333,1336],{},[1271,1327,1328],{},[531,1329,56],{},[1271,1331,1332],{},"None",[1271,1334,1335],{},"You manage it",[1271,1337,1338],{},"Framework manages it",[1247,1340,1341,1346,1349,1351],{},[1271,1342,1343],{},[531,1344,1345],{},"Output",[1271,1347,1348],{},"Console + drain",[1271,1350,1348],{},[1271,1352,1353],{},"Console + drain + enrich",[600,1355,1357],{"id":1356},"by-context","By context",[1241,1359,1360,1372],{},[1244,1361,1362],{},[1247,1363,1364,1366,1369],{},[1250,1365,1291],{},[1250,1367,1368],{},"Best fit",[1250,1370,1371],{},"Why",[1266,1373,1374,1392,1407,1428,1449,1467,1491,1509,1525,1545,1560],{},[1247,1375,1376,1381,1389],{},[1271,1377,1378],{},[531,1379,1380],{},"HTTP route in Nuxt \u002F Next \u002F Hono \u002F Express \u002F …",[1271,1382,1383,1385,1386],{},[569,1384,1060],{}," via ",[549,1387,1388],{"href":221},"framework integration",[1271,1390,1391],{},"One wide event per request, auto-emitted on response end",[1247,1393,1394,1399,1404],{},[1271,1395,1396],{},[531,1397,1398],{},"HTTP handler without a framework",[1271,1400,1401],{},[569,1402,1403],{},"createRequestLogger({ method, path })",[1271,1405,1406],{},"Same shape as framework middleware, manual emit",[1247,1408,1409,1414,1425],{},[1271,1410,1411],{},[531,1412,1413],{},"CLI tool \u002F one-shot script",[1271,1415,1416,1419,1420,1422,1423],{},[569,1417,1418],{},"log.*"," for steps + ",[569,1421,759],{}," for the run summary — see ",[549,1424,285],{"href":286},[1271,1426,1427],{},"Pretty in dev, structured in CI, one summary event for the whole run",[1247,1429,1430,1435,1446],{},[1271,1431,1432],{},[531,1433,1434],{},"Published library",[1271,1436,1437,1439,1440,1443,1444],{},[569,1438,759],{}," only — never ",[569,1441,1442],{},"initLogger"," — see ",[549,1445,285],{"href":286},[1271,1447,1448],{},"Don't pollute the host app's global config or force a drain on consumers",[1247,1450,1451,1456,1464],{},[1271,1452,1453],{},[531,1454,1455],{},"Background job \u002F queue worker \u002F cron",[1271,1457,1458,1461,1462],{},[569,1459,1460],{},"createLogger({ jobId, queue })"," per invocation — see ",[549,1463,285],{"href":286},[1271,1465,1466],{},"One wide event per job run, perfect for retry analysis",[1247,1468,1469,1474,1484],{},[1271,1470,1471],{},[531,1472,1473],{},"Cloudflare Worker \u002F edge function",[1271,1475,1476,1479,1480,1443,1482],{},[569,1477,1478],{},"createWorkersLogger(req)"," or ",[569,1481,763],{},[549,1483,280],{"href":281},[1271,1485,1486,1487,1490],{},"Per-request event, no ",[569,1488,1489],{},"process"," globals required",[1247,1492,1493,1497,1506],{},[1271,1494,1495],{},[531,1496,299],{},[1271,1498,1499,1501,1502,1461,1504],{},[569,1500,1442],{}," once + ",[569,1503,759],{},[549,1505,299],{"href":300},[1271,1507,1508],{},"Cold-start init, per-event scope, drain flush in the handler",[1247,1510,1511,1516,1522],{},[1271,1512,1513],{},[531,1514,1515],{},"Batch \u002F pipeline step",[1271,1517,1518,1521],{},[569,1519,1520],{},"createLogger({ step })"," per stage",[1271,1523,1524],{},"One event per stage with inputs and outputs side by side",[1247,1526,1527,1532,1542],{},[1271,1528,1529],{},[531,1530,1531],{},"AI agent \u002F LLM call",[1271,1533,1534,1536,1537],{},[569,1535,759],{}," + ",[549,1538,1539],{"href":323},[569,1540,1541],{},"createAILogger",[1271,1543,1544],{},"Token usage, tool calls, streaming metrics on the same wide event",[1247,1546,1547,1552,1557],{},[1271,1548,1549],{},[531,1550,1551],{},"Library function called inside a request",[1271,1553,1554,1556],{},[569,1555,1060],{}," from caller, or accept a logger as argument",[1271,1558,1559],{},"Inherit the parent's request context, contribute to the same wide event",[1247,1561,1562,1567,1572],{},[1271,1563,1564],{},[531,1565,1566],{},"Shared workspace package",[1271,1568,1569,1570],{},"Treat it like a library — see ",[549,1571,285],{"href":286},[1271,1573,1574,1575,1577,1578,1580],{},"Host app owns ",[569,1576,1442],{}," \u002F drain; packages use ",[569,1579,759],{}," or accept a logger",[539,1582,1584,1585,552,1587,1589],{"color":541,"icon":1583},"i-lucide-lightbulb","None of these is an \"upgrade\" of another. Use ",[569,1586,606],{},[569,1588,759],{}," in the same file when it makes sense — they share the global drain, redaction, and types.",[557,1591,1593],{"id":1592},"shared-foundation","Shared foundation",[527,1595,1596],{},"All three modes share the same foundation:",[1598,1599,1600,1611,1619,1641,1646,1652],"ul",{},[1601,1602,1603,1606,1607,1610],"li",{},[531,1604,1605],{},"Pretty output"," in development, ",[531,1608,1609],{},"JSON"," in production (default, no configuration needed)",[1601,1612,1613,1615,1616],{},[531,1614,486],{}," to send events to Axiom, Sentry, PostHog, and more — see ",[549,1617,1618],{"href":138},"Integrate \u002F Adapters",[1601,1620,1621,1624,1625,576,1628,1047,1631,1634,1635,1640],{},[531,1622,1623],{},"Structured errors"," with ",[569,1626,1627],{},"why",[569,1629,1630],{},"fix",[569,1632,1633],{},"link",", plus optional backend-only ",[531,1636,1637],{},[569,1638,1639],{},"internal"," for logs",[1601,1642,1643,1645],{},[531,1644,61],{}," (head + tail) to control log volume in production",[1601,1647,1648,1651],{},[531,1649,1650],{},"Redaction"," that wipes secrets before they ever leave the process",[1601,1653,1654,1657],{},[531,1655,1656],{},"Zero dependencies",", ~6 kB gzip",[557,1659,1661],{"id":1660},"the-rest-of-this-section","The rest of this section",[527,1663,1664],{},"After the three modes, the rest of Learn covers the concepts that show up across every mode:",[1598,1666,1667,1688,1693,1701,1706,1719],{},[1601,1668,1669,1671,1672,576,1674,576,1676,576,1678,1680,1681,1684,1685],{},[549,1670,51],{"href":52}," — ",[569,1673,1627],{},[569,1675,1630],{},[569,1677,1633],{},[569,1679,1639],{},", and how ",[569,1682,1683],{},"createError"," differs from ",[569,1686,1687],{},"throw new Error",[1601,1689,1690,1692],{},[549,1691,76],{"href":77}," — typed error \u002F audit catalogs that survive refactors",[1601,1694,1695,1697,1698,1700],{},[549,1696,56],{"href":57}," — exactly what happens between ",[569,1699,1320],{}," and your drain",[1601,1702,1703,1705],{},[549,1704,61],{"href":62}," — keep all errors and slow requests; drop healthy noise",[1601,1707,1708,1710,1711,1714,1715,1718],{},[549,1709,71],{"href":72}," — augment ",[569,1712,1713],{},"RequestLogger"," so ",[569,1716,1717],{},"log.set"," is autocompleted",[1601,1720,1721,1723,1724,576,1727,576,1730,1733],{},[549,1722,1650],{"href":67}," — the rules that strip ",[569,1725,1726],{},"authorization",[569,1728,1729],{},"password",[569,1731,1732],{},"token",", etc. before drain",[527,1735,1736,1737,1739,1740,1745],{},"When you're done with Learn, head to ",[549,1738,124],{"href":221}," to wire evlog into your stack — or run ",[549,1741,1742],{"href":95},[569,1743,1744],{},"evlog map"," first to see which parts of your app currently have no way of telling you what went wrong.",[1747,1748,1749],"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":618,"searchDepth":656,"depth":656,"links":1751},[1752,1753,1760,1763,1764],{"id":559,"depth":656,"text":560},{"id":597,"depth":656,"text":598,"children":1754},[1755,1757,1759],{"id":602,"depth":663,"text":1756},"Simple Logging (log)",{"id":755,"depth":663,"text":1758},"Wide Events (createLogger \u002F createRequestLogger)",{"id":1053,"depth":663,"text":1054},{"id":1238,"depth":656,"text":1239,"children":1761},[1762],{"id":1356,"depth":663,"text":1357},{"id":1592,"depth":656,"text":1593},{"id":1660,"depth":656,"text":1661},"The mental model — three logging modes, the wide event lifecycle, sampling, typed fields, and redaction. Read this section in order if you're new; pick what you need if you're not.","md",[1768,1770,1771],{"label":41,"icon":44,"to":42,"color":545,"variant":1769},"subtle",{"label":46,"icon":49,"to":47,"color":545,"variant":1769},{"label":56,"icon":59,"to":57,"color":545,"variant":1769},{},{"title":36,"icon":39},{"title":522,"description":1765},"OUKiT2SigEz8N-HurMAvRCdRRRmAfxMJiGXT6mbQ7Fo",[1777,1779],{"title":25,"path":26,"stem":27,"description":1778,"icon":28,"children":-1},"Get up and running with evlog in minutes. Learn the log API, createLogger for wide events, useLogger for requests, and structured errors.",{"title":41,"path":42,"stem":43,"description":1780,"icon":44,"children":-1},"evlog's general-purpose logger. A drop-in for console.log, pino, or consola, with the same level filtering, drain pipeline, redaction, and pretty\u002FJSON output as wide events.",1785611700160]