[{"data":1,"prerenderedAt":4726},["ShallowReactive",2],{"navigation_docs":3,"-learn-wide-events":505,"-learn-wide-events-surround":4721},[4,30,80,123,288,420,475],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"CLI","\u002Fcli","3.cli",[85,88,93,98,103,108,113,118],{"title":36,"path":86,"stem":87,"icon":44},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":89,"path":90,"stem":91,"icon":92},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":94,"path":95,"stem":96,"icon":97},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":99,"path":100,"stem":101,"icon":102},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":104,"path":105,"stem":106,"icon":107},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":109,"path":110,"stem":111,"icon":112},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":114,"path":115,"stem":116,"icon":117},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":119,"path":120,"stem":121,"icon":122},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":124,"path":125,"stem":126,"children":127,"page":29},"Integrate","\u002Fintegrate","4.integrate",[128,132,200],{"title":36,"path":129,"stem":130,"icon":131},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":133,"path":134,"stem":135,"children":136,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[137,140,180],{"title":36,"path":138,"stem":139,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":141,"path":142,"stem":143,"children":144,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[145,150,155,160,165,170,175],{"title":146,"path":147,"stem":148,"icon":149},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":151,"path":152,"stem":153,"icon":154},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","4.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":156,"path":157,"stem":158,"icon":159},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":161,"path":162,"stem":163,"icon":164},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":166,"path":167,"stem":168,"icon":169},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":171,"path":172,"stem":173,"icon":174},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":176,"path":177,"stem":178,"icon":179},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","4.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":181,"path":182,"stem":183,"children":184,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[185,190,195],{"title":186,"path":187,"stem":188,"icon":189},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":191,"path":192,"stem":193,"icon":194},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":196,"path":197,"stem":198,"icon":199},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":201,"path":202,"stem":203,"children":204,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[205,209,214,219,224,229,234,239,244,249,254,259,264,269,273,278,283],{"title":36,"path":206,"stem":207,"icon":208},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":210,"path":211,"stem":212,"icon":213},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":215,"path":216,"stem":217,"icon":218},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":220,"path":221,"stem":222,"icon":223},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":225,"path":226,"stem":227,"icon":228},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":230,"path":231,"stem":232,"icon":233},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":235,"path":236,"stem":237,"icon":238},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":240,"path":241,"stem":242,"icon":243},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":245,"path":246,"stem":247,"icon":248},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":250,"path":251,"stem":252,"icon":253},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":255,"path":256,"stem":257,"icon":258},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":260,"path":261,"stem":262,"icon":263},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":265,"path":266,"stem":267,"icon":268},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":270,"path":271,"stem":272,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":274,"path":275,"stem":276,"icon":277},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":279,"path":280,"stem":281,"icon":282},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":284,"path":285,"stem":286,"icon":287},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":289,"path":290,"stem":291,"children":292,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[293,296,301,330,357,389,410,415],{"title":36,"path":294,"stem":295,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":297,"path":298,"stem":299,"icon":300},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":302,"icon":303,"path":304,"stem":305,"children":306,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[307,310,315,320,325],{"title":36,"path":308,"stem":309,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":311,"path":312,"stem":313,"icon":314},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":316,"path":317,"stem":318,"icon":319},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":321,"path":322,"stem":323,"icon":324},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":326,"path":327,"stem":328,"icon":329},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":331,"icon":332,"path":333,"stem":334,"children":335,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[336,339,344,349,353],{"title":36,"path":337,"stem":338,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":340,"path":341,"stem":342,"icon":343},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":345,"path":346,"stem":347,"icon":348},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":350,"path":351,"stem":352,"icon":300},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":354,"path":355,"stem":356,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":358,"icon":359,"path":360,"stem":361,"children":362,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[363,366,371,376,381,385],{"title":36,"path":364,"stem":365,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":367,"path":368,"stem":369,"icon":370},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":372,"path":373,"stem":374,"icon":375},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":377,"path":378,"stem":379,"icon":380},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":382,"path":383,"stem":384,"icon":359},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":386,"path":387,"stem":388,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":326,"icon":107,"path":390,"stem":391,"children":392,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[393,396,401,406],{"title":36,"path":394,"stem":395,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":397,"path":398,"stem":399,"icon":400},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":402,"path":403,"stem":404,"icon":405},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":407,"path":408,"stem":409,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":411,"path":412,"stem":413,"icon":414},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":416,"path":417,"stem":418,"icon":419},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":421,"path":422,"stem":423,"children":424,"page":29},"Extend","\u002Fextend","6.extend",[425,429,434,439,444,448,452,456,460,465,470],{"title":36,"path":426,"stem":427,"icon":428},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":430,"path":431,"stem":432,"icon":433},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":435,"path":436,"stem":437,"icon":438},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":440,"path":441,"stem":442,"icon":443},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":386,"path":445,"stem":446,"icon":447},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":449,"path":450,"stem":451,"icon":428},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":453,"path":454,"stem":455,"icon":414},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":457,"path":458,"stem":459,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":461,"path":462,"stem":463,"icon":464},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":466,"path":467,"stem":468,"icon":469},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":471,"path":472,"stem":473,"icon":474},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":407,"path":476,"stem":477,"children":478,"page":29},"\u002Freference","7.reference",[479,484,487,492,496,501],{"title":480,"path":481,"stem":482,"icon":483},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":354,"path":485,"stem":486,"icon":107},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":488,"path":489,"stem":490,"icon":491},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":493,"path":494,"stem":495,"icon":359},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":497,"path":498,"stem":499,"icon":500},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":502,"path":503,"stem":504,"icon":414},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"id":506,"title":46,"body":507,"description":4711,"extension":4712,"links":4713,"meta":4717,"navigation":4718,"path":47,"seo":4719,"stem":48,"__hash__":4720},"docs\u002F2.learn\u002F2.wide-events.md",{"type":508,"value":509,"toc":4682},"minimark",[510,514,528,574,579,582,585,787,790,817,820,1319,1322,1326,1334,1341,1672,1679,1699,1908,1920,1927,1934,2130,2138,2142,2190,2209,2215,2244,2269,2276,2292,2299,2457,2461,2474,2478,2481,2679,2689,2693,2696,2784,2788,2791,2958,2962,2965,3141,3144,3148,3244,3248,3407,3411,3418,3815,3819,3822,4217,4221,4245,4330,4351,4355,4358,4652,4656,4678],[511,512,513],"p",{},"Wide events are the core concept behind evlog. Instead of scattering logs throughout your codebase, you accumulate context over any unit of work, whether a request, script, job, or workflow, and emit a single, comprehensive log event.",[515,516,519,520,524,525,527],"callout",{"color":517,"icon":518},"neutral","i-lucide-globe","Not running an HTTP framework? See ",[521,522,523],"a",{"href":271},"Standalone TypeScript"," and ",[521,526,265],{"href":266}," — wide events apply just as cleanly outside of request lifecycles.",[529,530,533,536,561],"prompt",{":actions":531,"description":532,"icon":49},"[\"copy\",\"cursor\",\"claude\"]","Convert my request handlers to wide events",[511,534,535],{},"Convert my existing request handlers from scattered logs to evlog wide events.",[537,538,539,543,546,549,552,555,558],"ul",{},[540,541,542],"li",{},"Find handlers that call console.log\u002Flogger.info multiple times per request",[540,544,545],{},"Replace those with a single useLogger(event) (or framework equivalent) at the top",[540,547,548],{},"Use log.set({ user, cart, payment, ... }) to accumulate context as the request progresses",[540,550,551],{},"Group related fields into nested objects (user, cart, payment) instead of flat keys",[540,553,554],{},"Remove redundant info-level logs once the wide event captures the same information",[540,556,557],{},"Keep error logs that capture distinct failure cases via log.error()",[540,559,560],{},"Trust the framework integration to auto-emit one wide event per request",[511,562,563,564,569,570],{},"Docs: ",[521,565,566],{"href":566,"rel":567},"https:\u002F\u002Fwww.evlog.dev\u002Flearn\u002Fwide-events",[568],"nofollow","\nBest practices: ",[521,571,572],{"href":572,"rel":573},"https:\u002F\u002Fwww.evlog.dev\u002Freference\u002Fbest-practices",[568],[575,576,578],"h2",{"id":577},"why-wide-events","Why Wide Events?",[580,581],"wide-event-collapse",{},[511,583,584],{},"Traditional logging creates noise:",[586,587,593],"pre",{"className":588,"code":589,"filename":590,"language":591,"meta":592,"style":592},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","logger.info('Job started')\nlogger.info('User authenticated', { userId: user.id })\nlogger.info('Fetching data', { source: 'postgres' })\nlogger.info('Processing records')\nlogger.info('Processing complete')\nlogger.info('Job finished', { duration: 234 })\n","src\u002Fservice.ts","typescript","",[594,595,596,628,672,712,732,752],"code",{"__ignoreMap":592},[597,598,601,605,609,613,616,619,623,625],"span",{"class":599,"line":600},"line",1,[597,602,604],{"class":603},"sTEyZ","logger",[597,606,608],{"class":607},"sMK4o",".",[597,610,612],{"class":611},"s2Zo4","info",[597,614,615],{"class":603},"(",[597,617,618],{"class":607},"'",[597,620,622],{"class":621},"sfazB","Job started",[597,624,618],{"class":607},[597,626,627],{"class":603},")\n",[597,629,631,633,635,637,639,641,644,646,649,652,656,659,662,664,667,670],{"class":599,"line":630},2,[597,632,604],{"class":603},[597,634,608],{"class":607},[597,636,612],{"class":611},[597,638,615],{"class":603},[597,640,618],{"class":607},[597,642,643],{"class":621},"User authenticated",[597,645,618],{"class":607},[597,647,648],{"class":607},",",[597,650,651],{"class":607}," {",[597,653,655],{"class":654},"swJcz"," userId",[597,657,658],{"class":607},":",[597,660,661],{"class":603}," user",[597,663,608],{"class":607},[597,665,666],{"class":603},"id ",[597,668,669],{"class":607},"}",[597,671,627],{"class":603},[597,673,675,677,679,681,683,685,688,690,692,694,697,699,702,705,707,710],{"class":599,"line":674},3,[597,676,604],{"class":603},[597,678,608],{"class":607},[597,680,612],{"class":611},[597,682,615],{"class":603},[597,684,618],{"class":607},[597,686,687],{"class":621},"Fetching data",[597,689,618],{"class":607},[597,691,648],{"class":607},[597,693,651],{"class":607},[597,695,696],{"class":654}," source",[597,698,658],{"class":607},[597,700,701],{"class":607}," '",[597,703,704],{"class":621},"postgres",[597,706,618],{"class":607},[597,708,709],{"class":607}," }",[597,711,627],{"class":603},[597,713,715,717,719,721,723,725,728,730],{"class":599,"line":714},4,[597,716,604],{"class":603},[597,718,608],{"class":607},[597,720,612],{"class":611},[597,722,615],{"class":603},[597,724,618],{"class":607},[597,726,727],{"class":621},"Processing records",[597,729,618],{"class":607},[597,731,627],{"class":603},[597,733,735,737,739,741,743,745,748,750],{"class":599,"line":734},5,[597,736,604],{"class":603},[597,738,608],{"class":607},[597,740,612],{"class":611},[597,742,615],{"class":603},[597,744,618],{"class":607},[597,746,747],{"class":621},"Processing complete",[597,749,618],{"class":607},[597,751,627],{"class":603},[597,753,755,757,759,761,763,765,768,770,772,774,777,779,783,785],{"class":599,"line":754},6,[597,756,604],{"class":603},[597,758,608],{"class":607},[597,760,612],{"class":611},[597,762,615],{"class":603},[597,764,618],{"class":607},[597,766,767],{"class":621},"Job finished",[597,769,618],{"class":607},[597,771,648],{"class":607},[597,773,651],{"class":607},[597,775,776],{"class":654}," duration",[597,778,658],{"class":607},[597,780,782],{"class":781},"sbssI"," 234",[597,784,709],{"class":607},[597,786,627],{"class":603},[511,788,789],{},"This approach has problems:",[537,791,792,799,805,811],{},[540,793,794,798],{},[795,796,797],"strong",{},"Scattered context",": Information is spread across multiple log lines",[540,800,801,804],{},[795,802,803],{},"Hard to correlate",": Matching logs to operations requires IDs everywhere",[540,806,807,810],{},[795,808,809],{},"Noise",": 10+ log lines per operation makes finding issues harder",[540,812,813,816],{},[795,814,815],{},"Incomplete",": Some logs might be missing if errors occur",[511,818,819],{},"Wide events solve this:",[821,822,823,1033,1204],"code-group",{},[586,824,827],{"className":588,"code":825,"filename":826,"language":591,"meta":592,"style":592},"import { useLogger } from 'evlog'\n\nconst log = useLogger(event)\n\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.set({ cart: { id: 42, items: 3, total: 9999 } })\nlog.set({ payment: { method: 'card', status: 'success' } })\n","server\u002Fapi\u002Fcheckout.post.ts",[594,828,829,853,859,876,880,929,981],{"__ignoreMap":592},[597,830,831,835,837,840,842,845,847,850],{"class":599,"line":600},[597,832,834],{"class":833},"s7zQu","import",[597,836,651],{"class":607},[597,838,839],{"class":603}," useLogger",[597,841,709],{"class":607},[597,843,844],{"class":833}," from",[597,846,701],{"class":607},[597,848,849],{"class":621},"evlog",[597,851,852],{"class":607},"'\n",[597,854,855],{"class":599,"line":630},[597,856,858],{"emptyLinePlaceholder":857},true,"\n",[597,860,861,865,868,871,873],{"class":599,"line":674},[597,862,864],{"class":863},"spNyl","const",[597,866,867],{"class":603}," log ",[597,869,870],{"class":607},"=",[597,872,839],{"class":611},[597,874,875],{"class":603},"(event)\n",[597,877,878],{"class":599,"line":714},[597,879,858],{"emptyLinePlaceholder":857},[597,881,882,885,887,890,892,895,897,899,901,904,906,909,911,914,916,918,921,923,925,927],{"class":599,"line":734},[597,883,884],{"class":603},"log",[597,886,608],{"class":607},[597,888,889],{"class":611},"set",[597,891,615],{"class":603},[597,893,894],{"class":607},"{",[597,896,661],{"class":654},[597,898,658],{"class":607},[597,900,651],{"class":607},[597,902,903],{"class":654}," id",[597,905,658],{"class":607},[597,907,908],{"class":781}," 1",[597,910,648],{"class":607},[597,912,913],{"class":654}," plan",[597,915,658],{"class":607},[597,917,701],{"class":607},[597,919,920],{"class":621},"pro",[597,922,618],{"class":607},[597,924,709],{"class":607},[597,926,709],{"class":607},[597,928,627],{"class":603},[597,930,931,933,935,937,939,941,944,946,948,950,952,955,957,960,962,965,967,970,972,975,977,979],{"class":599,"line":754},[597,932,884],{"class":603},[597,934,608],{"class":607},[597,936,889],{"class":611},[597,938,615],{"class":603},[597,940,894],{"class":607},[597,942,943],{"class":654}," cart",[597,945,658],{"class":607},[597,947,651],{"class":607},[597,949,903],{"class":654},[597,951,658],{"class":607},[597,953,954],{"class":781}," 42",[597,956,648],{"class":607},[597,958,959],{"class":654}," items",[597,961,658],{"class":607},[597,963,964],{"class":781}," 3",[597,966,648],{"class":607},[597,968,969],{"class":654}," total",[597,971,658],{"class":607},[597,973,974],{"class":781}," 9999",[597,976,709],{"class":607},[597,978,709],{"class":607},[597,980,627],{"class":603},[597,982,984,986,988,990,992,994,997,999,1001,1004,1006,1008,1011,1013,1015,1018,1020,1022,1025,1027,1029,1031],{"class":599,"line":983},7,[597,985,884],{"class":603},[597,987,608],{"class":607},[597,989,889],{"class":611},[597,991,615],{"class":603},[597,993,894],{"class":607},[597,995,996],{"class":654}," payment",[597,998,658],{"class":607},[597,1000,651],{"class":607},[597,1002,1003],{"class":654}," method",[597,1005,658],{"class":607},[597,1007,701],{"class":607},[597,1009,1010],{"class":621},"card",[597,1012,618],{"class":607},[597,1014,648],{"class":607},[597,1016,1017],{"class":654}," status",[597,1019,658],{"class":607},[597,1021,701],{"class":607},[597,1023,1024],{"class":621},"success",[597,1026,618],{"class":607},[597,1028,709],{"class":607},[597,1030,709],{"class":607},[597,1032,627],{"class":603},[586,1034,1037],{"className":588,"code":1035,"filename":1036,"language":591,"meta":592,"style":592},"import { createLogger } from 'evlog'\n\nconst log = createLogger({ jobId: 'sync-001', queue: 'emails' })\n\nlog.set({ source: 'postgres', target: 's3' })\nlog.set({ records: { found: 1250, synced: 1250 } })\nlog.emit()\n","scripts\u002Fsync-data.ts",[594,1038,1039,1058,1062,1106,1110,1150,1192],{"__ignoreMap":592},[597,1040,1041,1043,1045,1048,1050,1052,1054,1056],{"class":599,"line":600},[597,1042,834],{"class":833},[597,1044,651],{"class":607},[597,1046,1047],{"class":603}," createLogger",[597,1049,709],{"class":607},[597,1051,844],{"class":833},[597,1053,701],{"class":607},[597,1055,849],{"class":621},[597,1057,852],{"class":607},[597,1059,1060],{"class":599,"line":630},[597,1061,858],{"emptyLinePlaceholder":857},[597,1063,1064,1066,1068,1070,1072,1074,1076,1079,1081,1083,1086,1088,1090,1093,1095,1097,1100,1102,1104],{"class":599,"line":674},[597,1065,864],{"class":863},[597,1067,867],{"class":603},[597,1069,870],{"class":607},[597,1071,1047],{"class":611},[597,1073,615],{"class":603},[597,1075,894],{"class":607},[597,1077,1078],{"class":654}," jobId",[597,1080,658],{"class":607},[597,1082,701],{"class":607},[597,1084,1085],{"class":621},"sync-001",[597,1087,618],{"class":607},[597,1089,648],{"class":607},[597,1091,1092],{"class":654}," queue",[597,1094,658],{"class":607},[597,1096,701],{"class":607},[597,1098,1099],{"class":621},"emails",[597,1101,618],{"class":607},[597,1103,709],{"class":607},[597,1105,627],{"class":603},[597,1107,1108],{"class":599,"line":714},[597,1109,858],{"emptyLinePlaceholder":857},[597,1111,1112,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1137,1139,1141,1144,1146,1148],{"class":599,"line":734},[597,1113,884],{"class":603},[597,1115,608],{"class":607},[597,1117,889],{"class":611},[597,1119,615],{"class":603},[597,1121,894],{"class":607},[597,1123,696],{"class":654},[597,1125,658],{"class":607},[597,1127,701],{"class":607},[597,1129,704],{"class":621},[597,1131,618],{"class":607},[597,1133,648],{"class":607},[597,1135,1136],{"class":654}," target",[597,1138,658],{"class":607},[597,1140,701],{"class":607},[597,1142,1143],{"class":621},"s3",[597,1145,618],{"class":607},[597,1147,709],{"class":607},[597,1149,627],{"class":603},[597,1151,1152,1154,1156,1158,1160,1162,1165,1167,1169,1172,1174,1177,1179,1182,1184,1186,1188,1190],{"class":599,"line":754},[597,1153,884],{"class":603},[597,1155,608],{"class":607},[597,1157,889],{"class":611},[597,1159,615],{"class":603},[597,1161,894],{"class":607},[597,1163,1164],{"class":654}," records",[597,1166,658],{"class":607},[597,1168,651],{"class":607},[597,1170,1171],{"class":654}," found",[597,1173,658],{"class":607},[597,1175,1176],{"class":781}," 1250",[597,1178,648],{"class":607},[597,1180,1181],{"class":654}," synced",[597,1183,658],{"class":607},[597,1185,1176],{"class":781},[597,1187,709],{"class":607},[597,1189,709],{"class":607},[597,1191,627],{"class":603},[597,1193,1194,1196,1198,1201],{"class":599,"line":983},[597,1195,884],{"class":603},[597,1197,608],{"class":607},[597,1199,1200],{"class":611},"emit",[597,1202,1203],{"class":603},"()\n",[586,1205,1210],{"className":1206,"code":1207,"filename":1208,"language":1209,"meta":592,"style":592},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[INFO] POST \u002Fapi\u002Fcheckout (234ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { id: 42, items: 3, total: 9999 }\n  payment: { method: 'card', status: 'success' }\n  status: 200\n","Output","bash",[594,1211,1212,1232,1257,1282,1311],{"__ignoreMap":592},[597,1213,1214,1217,1220,1223,1226,1230],{"class":599,"line":600},[597,1215,1216],{"class":607},"[",[597,1218,1219],{"class":603},"INFO",[597,1221,1222],{"class":607},"]",[597,1224,1225],{"class":603}," POST \u002Fapi\u002Fcheckout (",[597,1227,1229],{"class":1228},"sBMFI","234ms",[597,1231,627],{"class":603},[597,1233,1234,1237,1239,1242,1245,1248,1250,1252,1254],{"class":599,"line":630},[597,1235,1236],{"class":1228},"  user:",[597,1238,651],{"class":621},[597,1240,1241],{"class":621}," id:",[597,1243,1244],{"class":621}," 1,",[597,1246,1247],{"class":621}," plan:",[597,1249,701],{"class":607},[597,1251,920],{"class":621},[597,1253,618],{"class":607},[597,1255,1256],{"class":621}," }\n",[597,1258,1259,1262,1264,1266,1269,1272,1275,1278,1280],{"class":599,"line":674},[597,1260,1261],{"class":1228},"  cart:",[597,1263,651],{"class":621},[597,1265,1241],{"class":621},[597,1267,1268],{"class":621}," 42,",[597,1270,1271],{"class":621}," items:",[597,1273,1274],{"class":621}," 3,",[597,1276,1277],{"class":621}," total:",[597,1279,974],{"class":781},[597,1281,1256],{"class":621},[597,1283,1284,1287,1289,1292,1294,1296,1298,1300,1303,1305,1307,1309],{"class":599,"line":714},[597,1285,1286],{"class":1228},"  payment:",[597,1288,651],{"class":621},[597,1290,1291],{"class":621}," method:",[597,1293,701],{"class":607},[597,1295,1010],{"class":621},[597,1297,618],{"class":607},[597,1299,648],{"class":621},[597,1301,1302],{"class":621}," status:",[597,1304,701],{"class":607},[597,1306,1024],{"class":621},[597,1308,618],{"class":607},[597,1310,1256],{"class":621},[597,1312,1313,1316],{"class":599,"line":734},[597,1314,1315],{"class":1228},"  status:",[597,1317,1318],{"class":781}," 200\n",[511,1320,1321],{},"One log, all context. Everything you need to understand what happened.",[575,1323,1325],{"id":1324},"creating-wide-events","Creating Wide Events",[1327,1328,1330,1333],"h3",{"id":1329},"createlogger-general-purpose",[594,1331,1332],{},"createLogger"," (General Purpose)",[511,1335,1336,1337,1340],{},"Use ",[594,1338,1339],{},"createLogger()"," for scripts, background jobs, queue workers, cron jobs, or any operation where you manage the lifecycle:",[586,1342,1345],{"className":588,"code":1343,"filename":1344,"language":591,"meta":592,"style":592},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'migrate' } })\n\nconst log = createLogger({ task: 'user-migration' })\n\nconst users = await db.query('SELECT * FROM legacy_users')\nlog.set({ found: users.length })\n\nlet migrated = 0\nfor (const user of users) {\n  await newDb.upsert({ id: user.id, email: user.email, plan: user.plan })\n  migrated++\n}\n\nlog.set({ migrated, status: 'complete' })\nlog.emit()\n","scripts\u002Fmigrate-users.ts",[594,1346,1347,1370,1374,1408,1412,1442,1446,1477,1506,1511,1525,1548,1608,1617,1623,1628,1661],{"__ignoreMap":592},[597,1348,1349,1351,1353,1356,1358,1360,1362,1364,1366,1368],{"class":599,"line":600},[597,1350,834],{"class":833},[597,1352,651],{"class":607},[597,1354,1355],{"class":603}," initLogger",[597,1357,648],{"class":607},[597,1359,1047],{"class":603},[597,1361,709],{"class":607},[597,1363,844],{"class":833},[597,1365,701],{"class":607},[597,1367,849],{"class":621},[597,1369,852],{"class":607},[597,1371,1372],{"class":599,"line":630},[597,1373,858],{"emptyLinePlaceholder":857},[597,1375,1376,1379,1381,1383,1386,1388,1390,1393,1395,1397,1400,1402,1404,1406],{"class":599,"line":674},[597,1377,1378],{"class":611},"initLogger",[597,1380,615],{"class":603},[597,1382,894],{"class":607},[597,1384,1385],{"class":654}," env",[597,1387,658],{"class":607},[597,1389,651],{"class":607},[597,1391,1392],{"class":654}," service",[597,1394,658],{"class":607},[597,1396,701],{"class":607},[597,1398,1399],{"class":621},"migrate",[597,1401,618],{"class":607},[597,1403,709],{"class":607},[597,1405,709],{"class":607},[597,1407,627],{"class":603},[597,1409,1410],{"class":599,"line":714},[597,1411,858],{"emptyLinePlaceholder":857},[597,1413,1414,1416,1418,1420,1422,1424,1426,1429,1431,1433,1436,1438,1440],{"class":599,"line":734},[597,1415,864],{"class":863},[597,1417,867],{"class":603},[597,1419,870],{"class":607},[597,1421,1047],{"class":611},[597,1423,615],{"class":603},[597,1425,894],{"class":607},[597,1427,1428],{"class":654}," task",[597,1430,658],{"class":607},[597,1432,701],{"class":607},[597,1434,1435],{"class":621},"user-migration",[597,1437,618],{"class":607},[597,1439,709],{"class":607},[597,1441,627],{"class":603},[597,1443,1444],{"class":599,"line":754},[597,1445,858],{"emptyLinePlaceholder":857},[597,1447,1448,1450,1453,1455,1458,1461,1463,1466,1468,1470,1473,1475],{"class":599,"line":983},[597,1449,864],{"class":863},[597,1451,1452],{"class":603}," users ",[597,1454,870],{"class":607},[597,1456,1457],{"class":833}," await",[597,1459,1460],{"class":603}," db",[597,1462,608],{"class":607},[597,1464,1465],{"class":611},"query",[597,1467,615],{"class":603},[597,1469,618],{"class":607},[597,1471,1472],{"class":621},"SELECT * FROM legacy_users",[597,1474,618],{"class":607},[597,1476,627],{"class":603},[597,1478,1480,1482,1484,1486,1488,1490,1492,1494,1497,1499,1502,1504],{"class":599,"line":1479},8,[597,1481,884],{"class":603},[597,1483,608],{"class":607},[597,1485,889],{"class":611},[597,1487,615],{"class":603},[597,1489,894],{"class":607},[597,1491,1171],{"class":654},[597,1493,658],{"class":607},[597,1495,1496],{"class":603}," users",[597,1498,608],{"class":607},[597,1500,1501],{"class":603},"length ",[597,1503,669],{"class":607},[597,1505,627],{"class":603},[597,1507,1509],{"class":599,"line":1508},9,[597,1510,858],{"emptyLinePlaceholder":857},[597,1512,1514,1517,1520,1522],{"class":599,"line":1513},10,[597,1515,1516],{"class":863},"let",[597,1518,1519],{"class":603}," migrated ",[597,1521,870],{"class":607},[597,1523,1524],{"class":781}," 0\n",[597,1526,1528,1531,1534,1536,1539,1542,1545],{"class":599,"line":1527},11,[597,1529,1530],{"class":833},"for",[597,1532,1533],{"class":603}," (",[597,1535,864],{"class":863},[597,1537,1538],{"class":603}," user ",[597,1540,1541],{"class":607},"of",[597,1543,1544],{"class":603}," users) ",[597,1546,1547],{"class":607},"{\n",[597,1549,1551,1554,1557,1559,1562,1564,1566,1568,1570,1572,1574,1577,1579,1582,1584,1586,1588,1591,1593,1595,1597,1599,1601,1604,1606],{"class":599,"line":1550},12,[597,1552,1553],{"class":833},"  await",[597,1555,1556],{"class":603}," newDb",[597,1558,608],{"class":607},[597,1560,1561],{"class":611},"upsert",[597,1563,615],{"class":654},[597,1565,894],{"class":607},[597,1567,903],{"class":654},[597,1569,658],{"class":607},[597,1571,661],{"class":603},[597,1573,608],{"class":607},[597,1575,1576],{"class":603},"id",[597,1578,648],{"class":607},[597,1580,1581],{"class":654}," email",[597,1583,658],{"class":607},[597,1585,661],{"class":603},[597,1587,608],{"class":607},[597,1589,1590],{"class":603},"email",[597,1592,648],{"class":607},[597,1594,913],{"class":654},[597,1596,658],{"class":607},[597,1598,661],{"class":603},[597,1600,608],{"class":607},[597,1602,1603],{"class":603},"plan",[597,1605,709],{"class":607},[597,1607,627],{"class":654},[597,1609,1611,1614],{"class":599,"line":1610},13,[597,1612,1613],{"class":603},"  migrated",[597,1615,1616],{"class":607},"++\n",[597,1618,1620],{"class":599,"line":1619},14,[597,1621,1622],{"class":607},"}\n",[597,1624,1626],{"class":599,"line":1625},15,[597,1627,858],{"emptyLinePlaceholder":857},[597,1629,1631,1633,1635,1637,1639,1641,1644,1646,1648,1650,1652,1655,1657,1659],{"class":599,"line":1630},16,[597,1632,884],{"class":603},[597,1634,608],{"class":607},[597,1636,889],{"class":611},[597,1638,615],{"class":603},[597,1640,894],{"class":607},[597,1642,1643],{"class":603}," migrated",[597,1645,648],{"class":607},[597,1647,1017],{"class":654},[597,1649,658],{"class":607},[597,1651,701],{"class":607},[597,1653,1654],{"class":621},"complete",[597,1656,618],{"class":607},[597,1658,709],{"class":607},[597,1660,627],{"class":603},[597,1662,1664,1666,1668,1670],{"class":599,"line":1663},17,[597,1665,884],{"class":603},[597,1667,608],{"class":607},[597,1669,1200],{"class":611},[597,1671,1203],{"class":603},[1327,1673,1675,1678],{"id":1674},"createrequestlogger-http-contexts",[594,1676,1677],{},"createRequestLogger"," (HTTP Contexts)",[511,1680,1336,1681,1684,1685,1687,1688,1691,1692,1695,1696,658],{},[594,1682,1683],{},"createRequestLogger()"," when working with HTTP requests outside of a framework integration. It's a thin wrapper around ",[594,1686,1332],{}," that pre-populates ",[594,1689,1690],{},"method",", ",[594,1693,1694],{},"path",", and ",[594,1697,1698],{},"requestId",[586,1700,1703],{"className":588,"code":1701,"filename":1702,"language":591,"meta":592,"style":592},"import { initLogger, createRequestLogger } from 'evlog'\n\ninitLogger({ env: { service: 'my-worker' } })\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\n\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.set({ cart: { items: 3, total: 9999 } })\n\nlog.emit()\n","src\u002Fworker.ts",[594,1704,1705,1728,1732,1763,1767,1810,1814,1856,1894,1898],{"__ignoreMap":592},[597,1706,1707,1709,1711,1713,1715,1718,1720,1722,1724,1726],{"class":599,"line":600},[597,1708,834],{"class":833},[597,1710,651],{"class":607},[597,1712,1355],{"class":603},[597,1714,648],{"class":607},[597,1716,1717],{"class":603}," createRequestLogger",[597,1719,709],{"class":607},[597,1721,844],{"class":833},[597,1723,701],{"class":607},[597,1725,849],{"class":621},[597,1727,852],{"class":607},[597,1729,1730],{"class":599,"line":630},[597,1731,858],{"emptyLinePlaceholder":857},[597,1733,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1755,1757,1759,1761],{"class":599,"line":674},[597,1735,1378],{"class":611},[597,1737,615],{"class":603},[597,1739,894],{"class":607},[597,1741,1385],{"class":654},[597,1743,658],{"class":607},[597,1745,651],{"class":607},[597,1747,1392],{"class":654},[597,1749,658],{"class":607},[597,1751,701],{"class":607},[597,1753,1754],{"class":621},"my-worker",[597,1756,618],{"class":607},[597,1758,709],{"class":607},[597,1760,709],{"class":607},[597,1762,627],{"class":603},[597,1764,1765],{"class":599,"line":714},[597,1766,858],{"emptyLinePlaceholder":857},[597,1768,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1790,1792,1794,1797,1799,1801,1804,1806,1808],{"class":599,"line":734},[597,1770,864],{"class":863},[597,1772,867],{"class":603},[597,1774,870],{"class":607},[597,1776,1717],{"class":611},[597,1778,615],{"class":603},[597,1780,894],{"class":607},[597,1782,1003],{"class":654},[597,1784,658],{"class":607},[597,1786,701],{"class":607},[597,1788,1789],{"class":621},"POST",[597,1791,618],{"class":607},[597,1793,648],{"class":607},[597,1795,1796],{"class":654}," path",[597,1798,658],{"class":607},[597,1800,701],{"class":607},[597,1802,1803],{"class":621},"\u002Fapi\u002Fcheckout",[597,1805,618],{"class":607},[597,1807,709],{"class":607},[597,1809,627],{"class":603},[597,1811,1812],{"class":599,"line":754},[597,1813,858],{"emptyLinePlaceholder":857},[597,1815,1816,1818,1820,1822,1824,1826,1828,1830,1832,1834,1836,1838,1840,1842,1844,1846,1848,1850,1852,1854],{"class":599,"line":983},[597,1817,884],{"class":603},[597,1819,608],{"class":607},[597,1821,889],{"class":611},[597,1823,615],{"class":603},[597,1825,894],{"class":607},[597,1827,661],{"class":654},[597,1829,658],{"class":607},[597,1831,651],{"class":607},[597,1833,903],{"class":654},[597,1835,658],{"class":607},[597,1837,908],{"class":781},[597,1839,648],{"class":607},[597,1841,913],{"class":654},[597,1843,658],{"class":607},[597,1845,701],{"class":607},[597,1847,920],{"class":621},[597,1849,618],{"class":607},[597,1851,709],{"class":607},[597,1853,709],{"class":607},[597,1855,627],{"class":603},[597,1857,1858,1860,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892],{"class":599,"line":1479},[597,1859,884],{"class":603},[597,1861,608],{"class":607},[597,1863,889],{"class":611},[597,1865,615],{"class":603},[597,1867,894],{"class":607},[597,1869,943],{"class":654},[597,1871,658],{"class":607},[597,1873,651],{"class":607},[597,1875,959],{"class":654},[597,1877,658],{"class":607},[597,1879,964],{"class":781},[597,1881,648],{"class":607},[597,1883,969],{"class":654},[597,1885,658],{"class":607},[597,1887,974],{"class":781},[597,1889,709],{"class":607},[597,1891,709],{"class":607},[597,1893,627],{"class":603},[597,1895,1896],{"class":599,"line":1508},[597,1897,858],{"emptyLinePlaceholder":857},[597,1899,1900,1902,1904,1906],{"class":599,"line":1513},[597,1901,884],{"class":603},[597,1903,608],{"class":607},[597,1905,1200],{"class":611},[597,1907,1203],{"class":603},[515,1909,1910,1911,524,1913,1915,1916,1919],{"color":612,"icon":13},"Both ",[594,1912,1332],{},[594,1914,1677],{}," require a manual ",[594,1917,1918],{},"log.emit()"," call. The event won't be emitted until you call it.",[1327,1921,1923,1926],{"id":1922},"uselogger-retrieving-the-request-logger",[594,1924,1925],{},"useLogger"," (Retrieving the Request Logger)",[511,1928,1929,1930,1933],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware creates a wide event logger automatically on each request. ",[594,1931,1932],{},"useLogger(event)"," retrieves that logger from the request context:",[586,1935,1937],{"className":588,"code":1936,"filename":826,"language":591,"meta":592,"style":592},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  return { success: true }\n  \u002F\u002F auto-emitted on response end\n})\n",[594,1938,1939,1957,1961,1992,2011,2015,2058,2096,2100,2118,2124],{"__ignoreMap":592},[597,1940,1941,1943,1945,1947,1949,1951,1953,1955],{"class":599,"line":600},[597,1942,834],{"class":833},[597,1944,651],{"class":607},[597,1946,839],{"class":603},[597,1948,709],{"class":607},[597,1950,844],{"class":833},[597,1952,701],{"class":607},[597,1954,849],{"class":621},[597,1956,852],{"class":607},[597,1958,1959],{"class":599,"line":630},[597,1960,858],{"emptyLinePlaceholder":857},[597,1962,1963,1966,1969,1972,1974,1977,1979,1983,1986,1989],{"class":599,"line":674},[597,1964,1965],{"class":833},"export",[597,1967,1968],{"class":833}," default",[597,1970,1971],{"class":611}," defineEventHandler",[597,1973,615],{"class":603},[597,1975,1976],{"class":863},"async",[597,1978,1533],{"class":607},[597,1980,1982],{"class":1981},"sHdIc","event",[597,1984,1985],{"class":607},")",[597,1987,1988],{"class":863}," =>",[597,1990,1991],{"class":607}," {\n",[597,1993,1994,1997,2000,2003,2005,2007,2009],{"class":599,"line":714},[597,1995,1996],{"class":863},"  const",[597,1998,1999],{"class":603}," log",[597,2001,2002],{"class":607}," =",[597,2004,839],{"class":611},[597,2006,615],{"class":654},[597,2008,1982],{"class":603},[597,2010,627],{"class":654},[597,2012,2013],{"class":599,"line":734},[597,2014,858],{"emptyLinePlaceholder":857},[597,2016,2017,2020,2022,2024,2026,2028,2030,2032,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054,2056],{"class":599,"line":754},[597,2018,2019],{"class":603},"  log",[597,2021,608],{"class":607},[597,2023,889],{"class":611},[597,2025,615],{"class":654},[597,2027,894],{"class":607},[597,2029,661],{"class":654},[597,2031,658],{"class":607},[597,2033,651],{"class":607},[597,2035,903],{"class":654},[597,2037,658],{"class":607},[597,2039,908],{"class":781},[597,2041,648],{"class":607},[597,2043,913],{"class":654},[597,2045,658],{"class":607},[597,2047,701],{"class":607},[597,2049,920],{"class":621},[597,2051,618],{"class":607},[597,2053,709],{"class":607},[597,2055,709],{"class":607},[597,2057,627],{"class":654},[597,2059,2060,2062,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094],{"class":599,"line":983},[597,2061,2019],{"class":603},[597,2063,608],{"class":607},[597,2065,889],{"class":611},[597,2067,615],{"class":654},[597,2069,894],{"class":607},[597,2071,943],{"class":654},[597,2073,658],{"class":607},[597,2075,651],{"class":607},[597,2077,959],{"class":654},[597,2079,658],{"class":607},[597,2081,964],{"class":781},[597,2083,648],{"class":607},[597,2085,969],{"class":654},[597,2087,658],{"class":607},[597,2089,974],{"class":781},[597,2091,709],{"class":607},[597,2093,709],{"class":607},[597,2095,627],{"class":654},[597,2097,2098],{"class":599,"line":1479},[597,2099,858],{"emptyLinePlaceholder":857},[597,2101,2102,2105,2107,2110,2112,2116],{"class":599,"line":1508},[597,2103,2104],{"class":833},"  return",[597,2106,651],{"class":607},[597,2108,2109],{"class":654}," success",[597,2111,658],{"class":607},[597,2113,2115],{"class":2114},"sfNiH"," true",[597,2117,1256],{"class":607},[597,2119,2120],{"class":599,"line":1513},[597,2121,2123],{"class":2122},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[597,2125,2126,2128],{"class":599,"line":1527},[597,2127,669],{"class":607},[597,2129,627],{"class":603},[515,2131,2132,2134,2135,2137],{"color":612,"icon":13},[594,2133,1925],{}," doesn't create a logger, it retrieves the one the framework middleware already attached to the event. The middleware handles creation and emission automatically. In Nuxt, ",[594,2136,1925],{}," is auto-imported.",[575,2139,2141],{"id":2140},"after-emit-sealing-and-background-work","After emit: sealing and background work",[511,2143,2144,2145,2148,2149,2151,2152,2155,2156,1691,2158,1691,2161,1695,2163,2166,2167,2170,2171,2177,2178,2181,2182,2185,2186,2189],{},"When the wide event is ",[795,2146,2147],{},"emitted"," (automatically at the end of the request, or when you call ",[594,2150,1918],{}," yourself), that logger instance is ",[795,2153,2154],{},"sealed",". Further ",[594,2157,889],{},[594,2159,2160],{},"error",[594,2162,612],{},[594,2164,2165],{},"warn"," calls do ",[795,2168,2169],{},"not"," update the event that was already sent to your drains. They are ignored and evlog prints a ",[795,2172,2173,2176],{},[594,2174,2175],{},"[evlog]"," warning"," to the console with the keys that were dropped. This also applies when ",[795,2179,2180],{},"head sampling"," discards the event (",[594,2183,2184],{},"emit()"," returned ",[594,2187,2188],{},"null","): the logger is still sealed for that unit of work.",[511,2191,2192,2193,2196,2197,2200,2201,2204,2205,2208],{},"This matters for ",[795,2194,2195],{},"async work that outlives the handler"," (fire-and-forget promises, ",[594,2198,2199],{},"setTimeout",", tasks started but not awaited). On many runtimes, ",[594,2202,2203],{},"AsyncLocalStorage"," keeps returning the same request logger, so ",[594,2206,2207],{},"useLogger()"," still succeeds even though the HTTP response — and the wide event — are already finished. Without warnings, that looks like silent data loss.",[1327,2210,2212],{"id":2211},"logforklabel-fn",[594,2213,2214],{},"log.fork(label, fn)",[511,2216,2217,2218,2221,2222,2226,2227,2230,2231,1691,2234,2236,2237,2240,2241,2243],{},"For intentional background work that should produce ",[795,2219,2220],{},"its own"," wide event, use ",[795,2223,2224],{},[594,2225,2214],{}," when your integration provides it (Express, Fastify, NestJS, SvelteKit, React Router, Next.js ",[594,2228,2229],{},"withEvlog",", Elysia). Inside ",[594,2232,2233],{},"fn",[594,2235,2207],{}," resolves to a ",[795,2238,2239],{},"child"," logger. When ",[594,2242,2233],{}," completes (or throws), the child emits an event with:",[537,2245,2246,2258],{},[540,2247,2248,2253,2254,2257],{},[795,2249,2250],{},[594,2251,2252],{},"operation",": the ",[594,2255,2256],{},"label"," you passed",[540,2259,2260,2265,2266,2268],{},[795,2261,2262],{},[594,2263,2264],{},"_parentRequestId",": the parent request’s ",[594,2267,1698],{}," (for correlation in queries and dashboards)",[511,2270,2271,2272,2275],{},"The parent wide event may be emitted ",[795,2273,2274],{},"before"," the child event; they are two separate events ordered by time.",[511,2277,2278,2281,2282,2284,2285,2288,2289,2291],{},[795,2279,2280],{},"Not available yet:"," Hono (no ",[594,2283,1925],{}," without ",[594,2286,2287],{},"c.get('log')"," + ALS) and Nitro\u002FNuxt ",[594,2290,1932],{}," — use the post-emit warnings to catch mistakes; a different API may arrive later for event-scoped forks.",[511,2293,2294,2295,2298],{},"For AI SDK streaming responses, supported framework integrations (Next.js, Nitro\u002FNuxt, SvelteKit, Hono, React Router, oRPC) defer wide-event emit until the response body finishes, so ",[594,2296,2297],{},"createAILogger(log)"," metadata lands on the same request event automatically.",[586,2300,2303],{"className":588,"code":2301,"filename":2302,"language":591,"meta":592,"style":592},"import { evlog, useLogger } from 'evlog\u002Fexpress'\n\n\u002F\u002F Inside a route after evlog middleware:\nconst log = req.log\nlog.set({ order_dispatched: true })\n\nlog.fork?.('process_order', async () => {\n  const child = useLogger()\n  child.set({ inventory_checked: true })\n})\n","server\u002Froutes\u002Fcheckout.post.ts",[594,2304,2305,2329,2333,2338,2354,2377,2381,2414,2427,2451],{"__ignoreMap":592},[597,2306,2307,2309,2311,2314,2316,2318,2320,2322,2324,2327],{"class":599,"line":600},[597,2308,834],{"class":833},[597,2310,651],{"class":607},[597,2312,2313],{"class":603}," evlog",[597,2315,648],{"class":607},[597,2317,839],{"class":603},[597,2319,709],{"class":607},[597,2321,844],{"class":833},[597,2323,701],{"class":607},[597,2325,2326],{"class":621},"evlog\u002Fexpress",[597,2328,852],{"class":607},[597,2330,2331],{"class":599,"line":630},[597,2332,858],{"emptyLinePlaceholder":857},[597,2334,2335],{"class":599,"line":674},[597,2336,2337],{"class":2122},"\u002F\u002F Inside a route after evlog middleware:\n",[597,2339,2340,2342,2344,2346,2349,2351],{"class":599,"line":714},[597,2341,864],{"class":863},[597,2343,867],{"class":603},[597,2345,870],{"class":607},[597,2347,2348],{"class":603}," req",[597,2350,608],{"class":607},[597,2352,2353],{"class":603},"log\n",[597,2355,2356,2358,2360,2362,2364,2366,2369,2371,2373,2375],{"class":599,"line":734},[597,2357,884],{"class":603},[597,2359,608],{"class":607},[597,2361,889],{"class":611},[597,2363,615],{"class":603},[597,2365,894],{"class":607},[597,2367,2368],{"class":654}," order_dispatched",[597,2370,658],{"class":607},[597,2372,2115],{"class":2114},[597,2374,709],{"class":607},[597,2376,627],{"class":603},[597,2378,2379],{"class":599,"line":754},[597,2380,858],{"emptyLinePlaceholder":857},[597,2382,2383,2385,2387,2390,2393,2395,2397,2400,2402,2404,2407,2410,2412],{"class":599,"line":983},[597,2384,884],{"class":603},[597,2386,608],{"class":607},[597,2388,2389],{"class":611},"fork",[597,2391,2392],{"class":607},"?.",[597,2394,615],{"class":603},[597,2396,618],{"class":607},[597,2398,2399],{"class":621},"process_order",[597,2401,618],{"class":607},[597,2403,648],{"class":607},[597,2405,2406],{"class":863}," async",[597,2408,2409],{"class":607}," ()",[597,2411,1988],{"class":863},[597,2413,1991],{"class":607},[597,2415,2416,2418,2421,2423,2425],{"class":599,"line":1479},[597,2417,1996],{"class":863},[597,2419,2420],{"class":603}," child",[597,2422,2002],{"class":607},[597,2424,839],{"class":611},[597,2426,1203],{"class":654},[597,2428,2429,2432,2434,2436,2438,2440,2443,2445,2447,2449],{"class":599,"line":1508},[597,2430,2431],{"class":603},"  child",[597,2433,608],{"class":607},[597,2435,889],{"class":611},[597,2437,615],{"class":654},[597,2439,894],{"class":607},[597,2441,2442],{"class":654}," inventory_checked",[597,2444,658],{"class":607},[597,2446,2115],{"class":2114},[597,2448,709],{"class":607},[597,2450,627],{"class":654},[597,2452,2453,2455],{"class":599,"line":1513},[597,2454,669],{"class":607},[597,2456,627],{"class":603},[575,2458,2460],{"id":2459},"anatomy-of-a-wide-event","Anatomy of a Wide Event",[511,2462,2463,2464,2466,2467,1691,2469,2471,2472,608],{},"A well-designed wide event contains context from multiple layers. The examples below show what to add inside your handler or script. They assume ",[594,2465,884],{}," is already created via ",[594,2468,1332],{},[594,2470,1677],{},", or ",[594,2473,1925],{},[1327,2475,2477],{"id":2476},"operation-context","Operation Context",[511,2479,2480],{},"Basic information about the operation:",[821,2482,2483,2587],{},[586,2484,2486],{"className":588,"code":2485,"filename":826,"language":591,"meta":592,"style":592},"import { useLogger } from 'evlog'\n\nconst log = useLogger(event)\nlog.set({\n  method: 'POST',\n  path: '\u002Fapi\u002Fcheckout',\n  requestId: 'abc-123-def',\n})\n",[594,2487,2488,2506,2510,2522,2534,2550,2565,2581],{"__ignoreMap":592},[597,2489,2490,2492,2494,2496,2498,2500,2502,2504],{"class":599,"line":600},[597,2491,834],{"class":833},[597,2493,651],{"class":607},[597,2495,839],{"class":603},[597,2497,709],{"class":607},[597,2499,844],{"class":833},[597,2501,701],{"class":607},[597,2503,849],{"class":621},[597,2505,852],{"class":607},[597,2507,2508],{"class":599,"line":630},[597,2509,858],{"emptyLinePlaceholder":857},[597,2511,2512,2514,2516,2518,2520],{"class":599,"line":674},[597,2513,864],{"class":863},[597,2515,867],{"class":603},[597,2517,870],{"class":607},[597,2519,839],{"class":611},[597,2521,875],{"class":603},[597,2523,2524,2526,2528,2530,2532],{"class":599,"line":714},[597,2525,884],{"class":603},[597,2527,608],{"class":607},[597,2529,889],{"class":611},[597,2531,615],{"class":603},[597,2533,1547],{"class":607},[597,2535,2536,2539,2541,2543,2545,2547],{"class":599,"line":734},[597,2537,2538],{"class":654},"  method",[597,2540,658],{"class":607},[597,2542,701],{"class":607},[597,2544,1789],{"class":621},[597,2546,618],{"class":607},[597,2548,2549],{"class":607},",\n",[597,2551,2552,2555,2557,2559,2561,2563],{"class":599,"line":754},[597,2553,2554],{"class":654},"  path",[597,2556,658],{"class":607},[597,2558,701],{"class":607},[597,2560,1803],{"class":621},[597,2562,618],{"class":607},[597,2564,2549],{"class":607},[597,2566,2567,2570,2572,2574,2577,2579],{"class":599,"line":983},[597,2568,2569],{"class":654},"  requestId",[597,2571,658],{"class":607},[597,2573,701],{"class":607},[597,2575,2576],{"class":621},"abc-123-def",[597,2578,618],{"class":607},[597,2580,2549],{"class":607},[597,2582,2583,2585],{"class":599,"line":1479},[597,2584,669],{"class":607},[597,2586,627],{"class":603},[586,2588,2590],{"className":588,"code":2589,"filename":1036,"language":591,"meta":592,"style":592},"import { createLogger } from 'evlog'\n\nconst log = createLogger({\n  jobId: 'sync-001',\n  queue: 'emails',\n  source: 'postgres',\n})\n",[594,2591,2592,2610,2614,2628,2643,2658,2673],{"__ignoreMap":592},[597,2593,2594,2596,2598,2600,2602,2604,2606,2608],{"class":599,"line":600},[597,2595,834],{"class":833},[597,2597,651],{"class":607},[597,2599,1047],{"class":603},[597,2601,709],{"class":607},[597,2603,844],{"class":833},[597,2605,701],{"class":607},[597,2607,849],{"class":621},[597,2609,852],{"class":607},[597,2611,2612],{"class":599,"line":630},[597,2613,858],{"emptyLinePlaceholder":857},[597,2615,2616,2618,2620,2622,2624,2626],{"class":599,"line":674},[597,2617,864],{"class":863},[597,2619,867],{"class":603},[597,2621,870],{"class":607},[597,2623,1047],{"class":611},[597,2625,615],{"class":603},[597,2627,1547],{"class":607},[597,2629,2630,2633,2635,2637,2639,2641],{"class":599,"line":714},[597,2631,2632],{"class":654},"  jobId",[597,2634,658],{"class":607},[597,2636,701],{"class":607},[597,2638,1085],{"class":621},[597,2640,618],{"class":607},[597,2642,2549],{"class":607},[597,2644,2645,2648,2650,2652,2654,2656],{"class":599,"line":734},[597,2646,2647],{"class":654},"  queue",[597,2649,658],{"class":607},[597,2651,701],{"class":607},[597,2653,1099],{"class":621},[597,2655,618],{"class":607},[597,2657,2549],{"class":607},[597,2659,2660,2663,2665,2667,2669,2671],{"class":599,"line":754},[597,2661,2662],{"class":654},"  source",[597,2664,658],{"class":607},[597,2666,701],{"class":607},[597,2668,704],{"class":621},[597,2670,618],{"class":607},[597,2672,2549],{"class":607},[597,2674,2675,2677],{"class":599,"line":983},[597,2676,669],{"class":607},[597,2678,627],{"class":603},[515,2680,2681,2682,1691,2684,1691,2686,2688],{"color":612,"icon":13},"In framework integrations, request context (",[594,2683,1690],{},[594,2685,1694],{},[594,2687,1698],{},") is auto-populated by the middleware. You don't need to set these fields manually.",[1327,2690,2692],{"id":2691},"user-actor-context","User \u002F Actor Context",[511,2694,2695],{},"Who triggered the operation:",[586,2697,2699],{"className":588,"code":2698,"filename":826,"language":591,"meta":592,"style":592},"log.set({\n  userId: user.id,\n  email: user.email,\n  subscription: user.plan,\n  accountAge: daysSince(user.createdAt),\n})\n",[594,2700,2701,2713,2728,2743,2758,2778],{"__ignoreMap":592},[597,2702,2703,2705,2707,2709,2711],{"class":599,"line":600},[597,2704,884],{"class":603},[597,2706,608],{"class":607},[597,2708,889],{"class":611},[597,2710,615],{"class":603},[597,2712,1547],{"class":607},[597,2714,2715,2718,2720,2722,2724,2726],{"class":599,"line":630},[597,2716,2717],{"class":654},"  userId",[597,2719,658],{"class":607},[597,2721,661],{"class":603},[597,2723,608],{"class":607},[597,2725,1576],{"class":603},[597,2727,2549],{"class":607},[597,2729,2730,2733,2735,2737,2739,2741],{"class":599,"line":674},[597,2731,2732],{"class":654},"  email",[597,2734,658],{"class":607},[597,2736,661],{"class":603},[597,2738,608],{"class":607},[597,2740,1590],{"class":603},[597,2742,2549],{"class":607},[597,2744,2745,2748,2750,2752,2754,2756],{"class":599,"line":714},[597,2746,2747],{"class":654},"  subscription",[597,2749,658],{"class":607},[597,2751,661],{"class":603},[597,2753,608],{"class":607},[597,2755,1603],{"class":603},[597,2757,2549],{"class":607},[597,2759,2760,2763,2765,2768,2771,2773,2776],{"class":599,"line":734},[597,2761,2762],{"class":654},"  accountAge",[597,2764,658],{"class":607},[597,2766,2767],{"class":611}," daysSince",[597,2769,2770],{"class":603},"(user",[597,2772,608],{"class":607},[597,2774,2775],{"class":603},"createdAt)",[597,2777,2549],{"class":607},[597,2779,2780,2782],{"class":599,"line":754},[597,2781,669],{"class":607},[597,2783,627],{"class":603},[1327,2785,2787],{"id":2786},"business-context","Business Context",[511,2789,2790],{},"Domain-specific data relevant to the operation:",[586,2792,2794],{"className":588,"code":2793,"filename":826,"language":591,"meta":592,"style":592},"log.set({\n  cart: {\n    id: cart.id,\n    items: cart.items.length,\n    total: cart.total,\n    currency: 'USD',\n  },\n  shipping: {\n    method: 'express',\n    country: address.country,\n  },\n  coupon: appliedCoupon?.code,\n})\n",[594,2795,2796,2808,2817,2832,2853,2869,2885,2890,2899,2915,2932,2936,2952],{"__ignoreMap":592},[597,2797,2798,2800,2802,2804,2806],{"class":599,"line":600},[597,2799,884],{"class":603},[597,2801,608],{"class":607},[597,2803,889],{"class":611},[597,2805,615],{"class":603},[597,2807,1547],{"class":607},[597,2809,2810,2813,2815],{"class":599,"line":630},[597,2811,2812],{"class":654},"  cart",[597,2814,658],{"class":607},[597,2816,1991],{"class":607},[597,2818,2819,2822,2824,2826,2828,2830],{"class":599,"line":674},[597,2820,2821],{"class":654},"    id",[597,2823,658],{"class":607},[597,2825,943],{"class":603},[597,2827,608],{"class":607},[597,2829,1576],{"class":603},[597,2831,2549],{"class":607},[597,2833,2834,2837,2839,2841,2843,2846,2848,2851],{"class":599,"line":714},[597,2835,2836],{"class":654},"    items",[597,2838,658],{"class":607},[597,2840,943],{"class":603},[597,2842,608],{"class":607},[597,2844,2845],{"class":603},"items",[597,2847,608],{"class":607},[597,2849,2850],{"class":603},"length",[597,2852,2549],{"class":607},[597,2854,2855,2858,2860,2862,2864,2867],{"class":599,"line":734},[597,2856,2857],{"class":654},"    total",[597,2859,658],{"class":607},[597,2861,943],{"class":603},[597,2863,608],{"class":607},[597,2865,2866],{"class":603},"total",[597,2868,2549],{"class":607},[597,2870,2871,2874,2876,2878,2881,2883],{"class":599,"line":754},[597,2872,2873],{"class":654},"    currency",[597,2875,658],{"class":607},[597,2877,701],{"class":607},[597,2879,2880],{"class":621},"USD",[597,2882,618],{"class":607},[597,2884,2549],{"class":607},[597,2886,2887],{"class":599,"line":983},[597,2888,2889],{"class":607},"  },\n",[597,2891,2892,2895,2897],{"class":599,"line":1479},[597,2893,2894],{"class":654},"  shipping",[597,2896,658],{"class":607},[597,2898,1991],{"class":607},[597,2900,2901,2904,2906,2908,2911,2913],{"class":599,"line":1508},[597,2902,2903],{"class":654},"    method",[597,2905,658],{"class":607},[597,2907,701],{"class":607},[597,2909,2910],{"class":621},"express",[597,2912,618],{"class":607},[597,2914,2549],{"class":607},[597,2916,2917,2920,2922,2925,2927,2930],{"class":599,"line":1513},[597,2918,2919],{"class":654},"    country",[597,2921,658],{"class":607},[597,2923,2924],{"class":603}," address",[597,2926,608],{"class":607},[597,2928,2929],{"class":603},"country",[597,2931,2549],{"class":607},[597,2933,2934],{"class":599,"line":1527},[597,2935,2889],{"class":607},[597,2937,2938,2941,2943,2946,2948,2950],{"class":599,"line":1550},[597,2939,2940],{"class":654},"  coupon",[597,2942,658],{"class":607},[597,2944,2945],{"class":603}," appliedCoupon",[597,2947,2392],{"class":607},[597,2949,594],{"class":603},[597,2951,2549],{"class":607},[597,2953,2954,2956],{"class":599,"line":1610},[597,2955,669],{"class":607},[597,2957,627],{"class":603},[1327,2959,2961],{"id":2960},"outcome","Outcome",[511,2963,2964],{},"The result of the operation:",[821,2966,2967,3040],{},[586,2968,2971],{"className":588,"code":2969,"filename":2970,"language":591,"meta":592,"style":592},"log.set({\n  status: 200,\n  duration: Date.now() - startTime,\n  success: true,\n})\n","Success",[594,2972,2973,2985,2997,3023,3034],{"__ignoreMap":592},[597,2974,2975,2977,2979,2981,2983],{"class":599,"line":600},[597,2976,884],{"class":603},[597,2978,608],{"class":607},[597,2980,889],{"class":611},[597,2982,615],{"class":603},[597,2984,1547],{"class":607},[597,2986,2987,2990,2992,2995],{"class":599,"line":630},[597,2988,2989],{"class":654},"  status",[597,2991,658],{"class":607},[597,2993,2994],{"class":781}," 200",[597,2996,2549],{"class":607},[597,2998,2999,3002,3004,3007,3009,3012,3015,3018,3021],{"class":599,"line":674},[597,3000,3001],{"class":654},"  duration",[597,3003,658],{"class":607},[597,3005,3006],{"class":603}," Date",[597,3008,608],{"class":607},[597,3010,3011],{"class":611},"now",[597,3013,3014],{"class":603},"() ",[597,3016,3017],{"class":607},"-",[597,3019,3020],{"class":603}," startTime",[597,3022,2549],{"class":607},[597,3024,3025,3028,3030,3032],{"class":599,"line":714},[597,3026,3027],{"class":654},"  success",[597,3029,658],{"class":607},[597,3031,2115],{"class":2114},[597,3033,2549],{"class":607},[597,3035,3036,3038],{"class":599,"line":734},[597,3037,669],{"class":607},[597,3039,627],{"class":603},[586,3041,3044],{"className":588,"code":3042,"filename":3043,"language":591,"meta":592,"style":592},"log.set({\n  status: 500,\n  error: {\n    message: err.message,\n    code: err.code,\n    type: err.constructor.name,\n  },\n})\n","Error",[594,3045,3046,3058,3069,3078,3095,3110,3131,3135],{"__ignoreMap":592},[597,3047,3048,3050,3052,3054,3056],{"class":599,"line":600},[597,3049,884],{"class":603},[597,3051,608],{"class":607},[597,3053,889],{"class":611},[597,3055,615],{"class":603},[597,3057,1547],{"class":607},[597,3059,3060,3062,3064,3067],{"class":599,"line":630},[597,3061,2989],{"class":654},[597,3063,658],{"class":607},[597,3065,3066],{"class":781}," 500",[597,3068,2549],{"class":607},[597,3070,3071,3074,3076],{"class":599,"line":674},[597,3072,3073],{"class":654},"  error",[597,3075,658],{"class":607},[597,3077,1991],{"class":607},[597,3079,3080,3083,3085,3088,3090,3093],{"class":599,"line":714},[597,3081,3082],{"class":654},"    message",[597,3084,658],{"class":607},[597,3086,3087],{"class":603}," err",[597,3089,608],{"class":607},[597,3091,3092],{"class":603},"message",[597,3094,2549],{"class":607},[597,3096,3097,3100,3102,3104,3106,3108],{"class":599,"line":734},[597,3098,3099],{"class":654},"    code",[597,3101,658],{"class":607},[597,3103,3087],{"class":603},[597,3105,608],{"class":607},[597,3107,594],{"class":603},[597,3109,2549],{"class":607},[597,3111,3112,3115,3117,3119,3121,3124,3126,3129],{"class":599,"line":754},[597,3113,3114],{"class":654},"    type",[597,3116,658],{"class":607},[597,3118,3087],{"class":603},[597,3120,608],{"class":607},[597,3122,3123],{"class":603},"constructor",[597,3125,608],{"class":607},[597,3127,3128],{"class":603},"name",[597,3130,2549],{"class":607},[597,3132,3133],{"class":599,"line":983},[597,3134,2889],{"class":607},[597,3136,3137,3139],{"class":599,"line":1479},[597,3138,669],{"class":607},[597,3140,627],{"class":603},[575,3142,493],{"id":3143},"best-practices",[1327,3145,3147],{"id":3146},"use-meaningful-keys","Use Meaningful Keys",[586,3149,3152],{"className":588,"code":3150,"filename":3151,"language":591,"meta":592,"style":592},"\u002F\u002F Avoid generic keys\nlog.set({ data: { id: 123 } })\n\n\u002F\u002F Use specific, descriptive keys\nlog.set({ order: { id: 123, status: 'pending' } })\n","server\u002Fapi\u002Forders.post.ts",[594,3153,3154,3159,3191,3195,3200],{"__ignoreMap":592},[597,3155,3156],{"class":599,"line":600},[597,3157,3158],{"class":2122},"\u002F\u002F Avoid generic keys\n",[597,3160,3161,3163,3165,3167,3169,3171,3174,3176,3178,3180,3182,3185,3187,3189],{"class":599,"line":630},[597,3162,884],{"class":603},[597,3164,608],{"class":607},[597,3166,889],{"class":611},[597,3168,615],{"class":603},[597,3170,894],{"class":607},[597,3172,3173],{"class":654}," data",[597,3175,658],{"class":607},[597,3177,651],{"class":607},[597,3179,903],{"class":654},[597,3181,658],{"class":607},[597,3183,3184],{"class":781}," 123",[597,3186,709],{"class":607},[597,3188,709],{"class":607},[597,3190,627],{"class":603},[597,3192,3193],{"class":599,"line":674},[597,3194,858],{"emptyLinePlaceholder":857},[597,3196,3197],{"class":599,"line":714},[597,3198,3199],{"class":2122},"\u002F\u002F Use specific, descriptive keys\n",[597,3201,3202,3204,3206,3208,3210,3212,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3236,3238,3240,3242],{"class":599,"line":734},[597,3203,884],{"class":603},[597,3205,608],{"class":607},[597,3207,889],{"class":611},[597,3209,615],{"class":603},[597,3211,894],{"class":607},[597,3213,3214],{"class":654}," order",[597,3216,658],{"class":607},[597,3218,651],{"class":607},[597,3220,903],{"class":654},[597,3222,658],{"class":607},[597,3224,3184],{"class":781},[597,3226,648],{"class":607},[597,3228,1017],{"class":654},[597,3230,658],{"class":607},[597,3232,701],{"class":607},[597,3234,3235],{"class":621},"pending",[597,3237,618],{"class":607},[597,3239,709],{"class":607},[597,3241,709],{"class":607},[597,3243,627],{"class":603},[1327,3245,3247],{"id":3246},"group-related-data","Group Related Data",[586,3249,3251],{"className":588,"code":3250,"filename":826,"language":591,"meta":592,"style":592},"\u002F\u002F Flat structure is hard to read\nlog.set({\n  userId: 1,\n  userEmail: 'a@b.com',\n  cartId: 2,\n  cartTotal: 100,\n})\n\n\u002F\u002F Grouped structure is clearer\nlog.set({\n  user: { id: 1, email: 'a@b.com' },\n  cart: { id: 2, total: 100 },\n})\n",[594,3252,3253,3258,3270,3280,3296,3308,3320,3326,3330,3335,3347,3377,3401],{"__ignoreMap":592},[597,3254,3255],{"class":599,"line":600},[597,3256,3257],{"class":2122},"\u002F\u002F Flat structure is hard to read\n",[597,3259,3260,3262,3264,3266,3268],{"class":599,"line":630},[597,3261,884],{"class":603},[597,3263,608],{"class":607},[597,3265,889],{"class":611},[597,3267,615],{"class":603},[597,3269,1547],{"class":607},[597,3271,3272,3274,3276,3278],{"class":599,"line":674},[597,3273,2717],{"class":654},[597,3275,658],{"class":607},[597,3277,908],{"class":781},[597,3279,2549],{"class":607},[597,3281,3282,3285,3287,3289,3292,3294],{"class":599,"line":714},[597,3283,3284],{"class":654},"  userEmail",[597,3286,658],{"class":607},[597,3288,701],{"class":607},[597,3290,3291],{"class":621},"a@b.com",[597,3293,618],{"class":607},[597,3295,2549],{"class":607},[597,3297,3298,3301,3303,3306],{"class":599,"line":734},[597,3299,3300],{"class":654},"  cartId",[597,3302,658],{"class":607},[597,3304,3305],{"class":781}," 2",[597,3307,2549],{"class":607},[597,3309,3310,3313,3315,3318],{"class":599,"line":754},[597,3311,3312],{"class":654},"  cartTotal",[597,3314,658],{"class":607},[597,3316,3317],{"class":781}," 100",[597,3319,2549],{"class":607},[597,3321,3322,3324],{"class":599,"line":983},[597,3323,669],{"class":607},[597,3325,627],{"class":603},[597,3327,3328],{"class":599,"line":1479},[597,3329,858],{"emptyLinePlaceholder":857},[597,3331,3332],{"class":599,"line":1508},[597,3333,3334],{"class":2122},"\u002F\u002F Grouped structure is clearer\n",[597,3336,3337,3339,3341,3343,3345],{"class":599,"line":1513},[597,3338,884],{"class":603},[597,3340,608],{"class":607},[597,3342,889],{"class":611},[597,3344,615],{"class":603},[597,3346,1547],{"class":607},[597,3348,3349,3352,3354,3356,3358,3360,3362,3364,3366,3368,3370,3372,3374],{"class":599,"line":1527},[597,3350,3351],{"class":654},"  user",[597,3353,658],{"class":607},[597,3355,651],{"class":607},[597,3357,903],{"class":654},[597,3359,658],{"class":607},[597,3361,908],{"class":781},[597,3363,648],{"class":607},[597,3365,1581],{"class":654},[597,3367,658],{"class":607},[597,3369,701],{"class":607},[597,3371,3291],{"class":621},[597,3373,618],{"class":607},[597,3375,3376],{"class":607}," },\n",[597,3378,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399],{"class":599,"line":1550},[597,3380,2812],{"class":654},[597,3382,658],{"class":607},[597,3384,651],{"class":607},[597,3386,903],{"class":654},[597,3388,658],{"class":607},[597,3390,3305],{"class":781},[597,3392,648],{"class":607},[597,3394,969],{"class":654},[597,3396,658],{"class":607},[597,3398,3317],{"class":781},[597,3400,3376],{"class":607},[597,3402,3403,3405],{"class":599,"line":1610},[597,3404,669],{"class":607},[597,3406,627],{"class":603},[1327,3408,3410],{"id":3409},"add-context-incrementally","Add Context Incrementally",[511,3412,3413,3414,3417],{},"Call ",[594,3415,3416],{},"log.set()"," as you gather information:",[821,3419,3420,3727],{},[586,3421,3423],{"className":588,"code":3422,"filename":826,"language":591,"meta":592,"style":592},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  const user = await getUser(event)\n  log.set({ user: { id: user.id, plan: user.plan } })\n\n  const cart = await getCart(user.id)\n  log.set({ cart: { items: cart.items.length, total: cart.total } })\n\n  const payment = await processPayment(cart)\n  log.set({ payment: { method: payment.method, status: payment.status } })\n\n  return { success: true }\n})\n",[594,3424,3425,3443,3447,3469,3485,3489,3508,3554,3558,3582,3632,3636,3656,3703,3707,3721],{"__ignoreMap":592},[597,3426,3427,3429,3431,3433,3435,3437,3439,3441],{"class":599,"line":600},[597,3428,834],{"class":833},[597,3430,651],{"class":607},[597,3432,839],{"class":603},[597,3434,709],{"class":607},[597,3436,844],{"class":833},[597,3438,701],{"class":607},[597,3440,849],{"class":621},[597,3442,852],{"class":607},[597,3444,3445],{"class":599,"line":630},[597,3446,858],{"emptyLinePlaceholder":857},[597,3448,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467],{"class":599,"line":674},[597,3450,1965],{"class":833},[597,3452,1968],{"class":833},[597,3454,1971],{"class":611},[597,3456,615],{"class":603},[597,3458,1976],{"class":863},[597,3460,1533],{"class":607},[597,3462,1982],{"class":1981},[597,3464,1985],{"class":607},[597,3466,1988],{"class":863},[597,3468,1991],{"class":607},[597,3470,3471,3473,3475,3477,3479,3481,3483],{"class":599,"line":714},[597,3472,1996],{"class":863},[597,3474,1999],{"class":603},[597,3476,2002],{"class":607},[597,3478,839],{"class":611},[597,3480,615],{"class":654},[597,3482,1982],{"class":603},[597,3484,627],{"class":654},[597,3486,3487],{"class":599,"line":734},[597,3488,858],{"emptyLinePlaceholder":857},[597,3490,3491,3493,3495,3497,3499,3502,3504,3506],{"class":599,"line":754},[597,3492,1996],{"class":863},[597,3494,661],{"class":603},[597,3496,2002],{"class":607},[597,3498,1457],{"class":833},[597,3500,3501],{"class":611}," getUser",[597,3503,615],{"class":654},[597,3505,1982],{"class":603},[597,3507,627],{"class":654},[597,3509,3510,3512,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532,3534,3536,3538,3540,3542,3544,3546,3548,3550,3552],{"class":599,"line":983},[597,3511,2019],{"class":603},[597,3513,608],{"class":607},[597,3515,889],{"class":611},[597,3517,615],{"class":654},[597,3519,894],{"class":607},[597,3521,661],{"class":654},[597,3523,658],{"class":607},[597,3525,651],{"class":607},[597,3527,903],{"class":654},[597,3529,658],{"class":607},[597,3531,661],{"class":603},[597,3533,608],{"class":607},[597,3535,1576],{"class":603},[597,3537,648],{"class":607},[597,3539,913],{"class":654},[597,3541,658],{"class":607},[597,3543,661],{"class":603},[597,3545,608],{"class":607},[597,3547,1603],{"class":603},[597,3549,709],{"class":607},[597,3551,709],{"class":607},[597,3553,627],{"class":654},[597,3555,3556],{"class":599,"line":1479},[597,3557,858],{"emptyLinePlaceholder":857},[597,3559,3560,3562,3564,3566,3568,3571,3573,3576,3578,3580],{"class":599,"line":1508},[597,3561,1996],{"class":863},[597,3563,943],{"class":603},[597,3565,2002],{"class":607},[597,3567,1457],{"class":833},[597,3569,3570],{"class":611}," getCart",[597,3572,615],{"class":654},[597,3574,3575],{"class":603},"user",[597,3577,608],{"class":607},[597,3579,1576],{"class":603},[597,3581,627],{"class":654},[597,3583,3584,3586,3588,3590,3592,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630],{"class":599,"line":1513},[597,3585,2019],{"class":603},[597,3587,608],{"class":607},[597,3589,889],{"class":611},[597,3591,615],{"class":654},[597,3593,894],{"class":607},[597,3595,943],{"class":654},[597,3597,658],{"class":607},[597,3599,651],{"class":607},[597,3601,959],{"class":654},[597,3603,658],{"class":607},[597,3605,943],{"class":603},[597,3607,608],{"class":607},[597,3609,2845],{"class":603},[597,3611,608],{"class":607},[597,3613,2850],{"class":603},[597,3615,648],{"class":607},[597,3617,969],{"class":654},[597,3619,658],{"class":607},[597,3621,943],{"class":603},[597,3623,608],{"class":607},[597,3625,2866],{"class":603},[597,3627,709],{"class":607},[597,3629,709],{"class":607},[597,3631,627],{"class":654},[597,3633,3634],{"class":599,"line":1527},[597,3635,858],{"emptyLinePlaceholder":857},[597,3637,3638,3640,3642,3644,3646,3649,3651,3654],{"class":599,"line":1550},[597,3639,1996],{"class":863},[597,3641,996],{"class":603},[597,3643,2002],{"class":607},[597,3645,1457],{"class":833},[597,3647,3648],{"class":611}," processPayment",[597,3650,615],{"class":654},[597,3652,3653],{"class":603},"cart",[597,3655,627],{"class":654},[597,3657,3658,3660,3662,3664,3666,3668,3670,3672,3674,3676,3678,3680,3682,3684,3686,3688,3690,3692,3694,3697,3699,3701],{"class":599,"line":1610},[597,3659,2019],{"class":603},[597,3661,608],{"class":607},[597,3663,889],{"class":611},[597,3665,615],{"class":654},[597,3667,894],{"class":607},[597,3669,996],{"class":654},[597,3671,658],{"class":607},[597,3673,651],{"class":607},[597,3675,1003],{"class":654},[597,3677,658],{"class":607},[597,3679,996],{"class":603},[597,3681,608],{"class":607},[597,3683,1690],{"class":603},[597,3685,648],{"class":607},[597,3687,1017],{"class":654},[597,3689,658],{"class":607},[597,3691,996],{"class":603},[597,3693,608],{"class":607},[597,3695,3696],{"class":603},"status",[597,3698,709],{"class":607},[597,3700,709],{"class":607},[597,3702,627],{"class":654},[597,3704,3705],{"class":599,"line":1619},[597,3706,858],{"emptyLinePlaceholder":857},[597,3708,3709,3711,3713,3715,3717,3719],{"class":599,"line":1625},[597,3710,2104],{"class":833},[597,3712,651],{"class":607},[597,3714,2109],{"class":654},[597,3716,658],{"class":607},[597,3718,2115],{"class":2114},[597,3720,1256],{"class":607},[597,3722,3723,3725],{"class":599,"line":1630},[597,3724,669],{"class":607},[597,3726,627],{"class":603},[586,3728,3730],{"className":1206,"code":3729,"filename":1208,"language":1209,"meta":592,"style":592},"[INFO] POST \u002Fapi\u002Fcheckout (456ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { items: 3, total: 9999 }\n  payment: { method: 'card', status: 'success' }\n  status: 200\n",[594,3731,3732,3747,3767,3783,3809],{"__ignoreMap":592},[597,3733,3734,3736,3738,3740,3742,3745],{"class":599,"line":600},[597,3735,1216],{"class":607},[597,3737,1219],{"class":603},[597,3739,1222],{"class":607},[597,3741,1225],{"class":603},[597,3743,3744],{"class":1228},"456ms",[597,3746,627],{"class":603},[597,3748,3749,3751,3753,3755,3757,3759,3761,3763,3765],{"class":599,"line":630},[597,3750,1236],{"class":1228},[597,3752,651],{"class":621},[597,3754,1241],{"class":621},[597,3756,1244],{"class":621},[597,3758,1247],{"class":621},[597,3760,701],{"class":607},[597,3762,920],{"class":621},[597,3764,618],{"class":607},[597,3766,1256],{"class":621},[597,3768,3769,3771,3773,3775,3777,3779,3781],{"class":599,"line":674},[597,3770,1261],{"class":1228},[597,3772,651],{"class":621},[597,3774,1271],{"class":621},[597,3776,1274],{"class":621},[597,3778,1277],{"class":621},[597,3780,974],{"class":781},[597,3782,1256],{"class":621},[597,3784,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807],{"class":599,"line":714},[597,3786,1286],{"class":1228},[597,3788,651],{"class":621},[597,3790,1291],{"class":621},[597,3792,701],{"class":607},[597,3794,1010],{"class":621},[597,3796,618],{"class":607},[597,3798,648],{"class":621},[597,3800,1302],{"class":621},[597,3802,701],{"class":607},[597,3804,1024],{"class":621},[597,3806,618],{"class":607},[597,3808,1256],{"class":621},[597,3810,3811,3813],{"class":599,"line":734},[597,3812,1315],{"class":1228},[597,3814,1318],{"class":781},[1327,3816,3818],{"id":3817},"handle-errors-gracefully","Handle Errors Gracefully",[511,3820,3821],{},"When errors occur, the wide event still emits with error context:",[821,3823,3824,4050],{},[586,3825,3827],{"className":588,"code":3826,"filename":826,"language":591,"meta":592,"style":592},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  try {\n    const result = await processPayment(cart)\n    return result\n  } catch (err) {\n    log.set({\n      error: {\n        message: err.message,\n        code: err.code,\n        type: err.constructor.name,\n      },\n    })\n    throw err\n  }\n})\n",[594,3828,3829,3847,3851,3873,3889,3893,3900,3920,3928,3946,3959,3968,3983,3998,4017,4022,4029,4037,4043],{"__ignoreMap":592},[597,3830,3831,3833,3835,3837,3839,3841,3843,3845],{"class":599,"line":600},[597,3832,834],{"class":833},[597,3834,651],{"class":607},[597,3836,839],{"class":603},[597,3838,709],{"class":607},[597,3840,844],{"class":833},[597,3842,701],{"class":607},[597,3844,849],{"class":621},[597,3846,852],{"class":607},[597,3848,3849],{"class":599,"line":630},[597,3850,858],{"emptyLinePlaceholder":857},[597,3852,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871],{"class":599,"line":674},[597,3854,1965],{"class":833},[597,3856,1968],{"class":833},[597,3858,1971],{"class":611},[597,3860,615],{"class":603},[597,3862,1976],{"class":863},[597,3864,1533],{"class":607},[597,3866,1982],{"class":1981},[597,3868,1985],{"class":607},[597,3870,1988],{"class":863},[597,3872,1991],{"class":607},[597,3874,3875,3877,3879,3881,3883,3885,3887],{"class":599,"line":714},[597,3876,1996],{"class":863},[597,3878,1999],{"class":603},[597,3880,2002],{"class":607},[597,3882,839],{"class":611},[597,3884,615],{"class":654},[597,3886,1982],{"class":603},[597,3888,627],{"class":654},[597,3890,3891],{"class":599,"line":734},[597,3892,858],{"emptyLinePlaceholder":857},[597,3894,3895,3898],{"class":599,"line":754},[597,3896,3897],{"class":833},"  try",[597,3899,1991],{"class":607},[597,3901,3902,3905,3908,3910,3912,3914,3916,3918],{"class":599,"line":983},[597,3903,3904],{"class":863},"    const",[597,3906,3907],{"class":603}," result",[597,3909,2002],{"class":607},[597,3911,1457],{"class":833},[597,3913,3648],{"class":611},[597,3915,615],{"class":654},[597,3917,3653],{"class":603},[597,3919,627],{"class":654},[597,3921,3922,3925],{"class":599,"line":1479},[597,3923,3924],{"class":833},"    return",[597,3926,3927],{"class":603}," result\n",[597,3929,3930,3933,3936,3938,3941,3944],{"class":599,"line":1508},[597,3931,3932],{"class":607},"  }",[597,3934,3935],{"class":833}," catch",[597,3937,1533],{"class":654},[597,3939,3940],{"class":603},"err",[597,3942,3943],{"class":654},") ",[597,3945,1547],{"class":607},[597,3947,3948,3951,3953,3955,3957],{"class":599,"line":1513},[597,3949,3950],{"class":603},"    log",[597,3952,608],{"class":607},[597,3954,889],{"class":611},[597,3956,615],{"class":654},[597,3958,1547],{"class":607},[597,3960,3961,3964,3966],{"class":599,"line":1527},[597,3962,3963],{"class":654},"      error",[597,3965,658],{"class":607},[597,3967,1991],{"class":607},[597,3969,3970,3973,3975,3977,3979,3981],{"class":599,"line":1550},[597,3971,3972],{"class":654},"        message",[597,3974,658],{"class":607},[597,3976,3087],{"class":603},[597,3978,608],{"class":607},[597,3980,3092],{"class":603},[597,3982,2549],{"class":607},[597,3984,3985,3988,3990,3992,3994,3996],{"class":599,"line":1610},[597,3986,3987],{"class":654},"        code",[597,3989,658],{"class":607},[597,3991,3087],{"class":603},[597,3993,608],{"class":607},[597,3995,594],{"class":603},[597,3997,2549],{"class":607},[597,3999,4000,4003,4005,4007,4009,4011,4013,4015],{"class":599,"line":1619},[597,4001,4002],{"class":654},"        type",[597,4004,658],{"class":607},[597,4006,3087],{"class":603},[597,4008,608],{"class":607},[597,4010,3123],{"class":603},[597,4012,608],{"class":607},[597,4014,3128],{"class":603},[597,4016,2549],{"class":607},[597,4018,4019],{"class":599,"line":1625},[597,4020,4021],{"class":607},"      },\n",[597,4023,4024,4027],{"class":599,"line":1630},[597,4025,4026],{"class":607},"    }",[597,4028,627],{"class":654},[597,4030,4031,4034],{"class":599,"line":1663},[597,4032,4033],{"class":833},"    throw",[597,4035,4036],{"class":603}," err\n",[597,4038,4040],{"class":599,"line":4039},18,[597,4041,4042],{"class":607},"  }\n",[597,4044,4046,4048],{"class":599,"line":4045},19,[597,4047,669],{"class":607},[597,4049,627],{"class":603},[586,4051,4053],{"className":1206,"code":4052,"filename":1208,"language":1209,"meta":592,"style":592},"ERROR [checkout] POST \u002Fapi\u002Fcheckout 402 in 123ms\n  ├─ error: Card declined\n  │     at server\u002Fapi\u002Fcheckout.post.ts:42\n  │   ❯ 42 ┃ throw createError({ code: 'CARD_DECLINED', ... })\n  │     Why: Issuer declined the charge\n  │     Fix: Ask the customer to use another card\n  │     stack (3 frames hidden in node_modules)\n  ├─ user: id=1 plan=pro\n  └─ cart: items=3 total=9999\n",[594,4054,4055,4063,4077,4088,4111,4130,4157,4181,4197],{"__ignoreMap":592},[597,4056,4057,4060],{"class":599,"line":600},[597,4058,4059],{"class":1228},"ERROR",[597,4061,4062],{"class":603}," [checkout] POST \u002Fapi\u002Fcheckout 402 in 123ms\n",[597,4064,4065,4068,4071,4074],{"class":599,"line":630},[597,4066,4067],{"class":1228},"  ├─",[597,4069,4070],{"class":621}," error:",[597,4072,4073],{"class":621}," Card",[597,4075,4076],{"class":621}," declined\n",[597,4078,4079,4082,4085],{"class":599,"line":674},[597,4080,4081],{"class":1228},"  │",[597,4083,4084],{"class":621},"     at",[597,4086,4087],{"class":621}," server\u002Fapi\u002Fcheckout.post.ts:42\n",[597,4089,4090,4092,4095,4097,4100,4103,4106,4108],{"class":599,"line":714},[597,4091,4081],{"class":1228},[597,4093,4094],{"class":621},"   ❯",[597,4096,954],{"class":781},[597,4098,4099],{"class":621}," ┃",[597,4101,4102],{"class":621}," throw",[597,4104,4105],{"class":621}," createError",[597,4107,615],{"class":607},[597,4109,4110],{"class":603},"{ code: 'CARD_DECLINED', ... })\n",[597,4112,4113,4115,4118,4121,4124,4127],{"class":599,"line":734},[597,4114,4081],{"class":1228},[597,4116,4117],{"class":621},"     Why:",[597,4119,4120],{"class":621}," Issuer",[597,4122,4123],{"class":621}," declined",[597,4125,4126],{"class":621}," the",[597,4128,4129],{"class":621}," charge\n",[597,4131,4132,4134,4137,4140,4142,4145,4148,4151,4154],{"class":599,"line":754},[597,4133,4081],{"class":1228},[597,4135,4136],{"class":621},"     Fix:",[597,4138,4139],{"class":621}," Ask",[597,4141,4126],{"class":621},[597,4143,4144],{"class":621}," customer",[597,4146,4147],{"class":621}," to",[597,4149,4150],{"class":621}," use",[597,4152,4153],{"class":621}," another",[597,4155,4156],{"class":621}," card\n",[597,4158,4159,4161,4164,4167,4170,4173,4176,4179],{"class":599,"line":983},[597,4160,4081],{"class":1228},[597,4162,4163],{"class":621},"     stack",[597,4165,4166],{"class":603}," (3 ",[597,4168,4169],{"class":621},"frames",[597,4171,4172],{"class":621}," hidden",[597,4174,4175],{"class":621}," in",[597,4177,4178],{"class":621}," node_modules",[597,4180,627],{"class":607},[597,4182,4183,4185,4188,4191,4194],{"class":599,"line":1479},[597,4184,4067],{"class":1228},[597,4186,4187],{"class":621}," user:",[597,4189,4190],{"class":621}," id=",[597,4192,4193],{"class":781},"1",[597,4195,4196],{"class":621}," plan=pro\n",[597,4198,4199,4202,4205,4208,4211,4214],{"class":599,"line":1508},[597,4200,4201],{"class":1228},"  └─",[597,4203,4204],{"class":621}," cart:",[597,4206,4207],{"class":621}," items=",[597,4209,4210],{"class":781},"3",[597,4212,4213],{"class":621}," total=",[597,4215,4216],{"class":781},"9999\n",[1327,4218,4220],{"id":4219},"setting-the-level-manually","Setting the Level Manually",[511,4222,4223,4226,4227,4229,4230,4233,4234,4237,4238,4240,4241,4244],{},[594,4224,4225],{},"log.error(err)"," populates the ",[594,4228,2160],{}," field with ",[594,4231,4232],{},"{ name, message, stack }"," and promotes the wide event to ",[594,4235,4236],{},"level: 'error'",". When you want to control the ",[594,4239,2160],{}," field yourself — typed error codes, no stack, or richer custom shapes — use ",[594,4242,4243],{},"log.setLevel()"," to promote the level without touching the context:",[586,4246,4248],{"className":588,"code":4247,"language":591,"meta":592,"style":592},"log.setLevel('error')\nlog.set({\n  error: {\n    code: 'PAYMENT_DECLINED',\n    reason: 'insufficient_funds',\n  },\n})\n",[594,4249,4250,4269,4281,4289,4304,4320,4324],{"__ignoreMap":592},[597,4251,4252,4254,4256,4259,4261,4263,4265,4267],{"class":599,"line":600},[597,4253,884],{"class":603},[597,4255,608],{"class":607},[597,4257,4258],{"class":611},"setLevel",[597,4260,615],{"class":603},[597,4262,618],{"class":607},[597,4264,2160],{"class":621},[597,4266,618],{"class":607},[597,4268,627],{"class":603},[597,4270,4271,4273,4275,4277,4279],{"class":599,"line":630},[597,4272,884],{"class":603},[597,4274,608],{"class":607},[597,4276,889],{"class":611},[597,4278,615],{"class":603},[597,4280,1547],{"class":607},[597,4282,4283,4285,4287],{"class":599,"line":674},[597,4284,3073],{"class":654},[597,4286,658],{"class":607},[597,4288,1991],{"class":607},[597,4290,4291,4293,4295,4297,4300,4302],{"class":599,"line":714},[597,4292,3099],{"class":654},[597,4294,658],{"class":607},[597,4296,701],{"class":607},[597,4298,4299],{"class":621},"PAYMENT_DECLINED",[597,4301,618],{"class":607},[597,4303,2549],{"class":607},[597,4305,4306,4309,4311,4313,4316,4318],{"class":599,"line":734},[597,4307,4308],{"class":654},"    reason",[597,4310,658],{"class":607},[597,4312,701],{"class":607},[597,4314,4315],{"class":621},"insufficient_funds",[597,4317,618],{"class":607},[597,4319,2549],{"class":607},[597,4321,4322],{"class":599,"line":754},[597,4323,2889],{"class":607},[597,4325,4326,4328],{"class":599,"line":983},[597,4327,669],{"class":607},[597,4329,627],{"class":603},[511,4331,4332,4335,4336,4339,4340,4343,4344,4347,4348,4350],{},[594,4333,4334],{},"setLevel()"," accepts ",[594,4337,4338],{},"'error' | 'warn' | 'info' | 'debug'"," and wins over the level computed from ",[594,4341,4342],{},".error()"," \u002F ",[594,4345,4346],{},".warn()",". Combine it with ",[594,4349,3416],{}," to keep the wide event tidy while still routing through error-level sampling and drains.",[575,4352,4354],{"id":4353},"output-formats","Output Formats",[511,4356,4357],{},"evlog automatically switches between formats based on environment: pretty in development, JSON in production. This is the default behavior, no configuration needed.",[821,4359,4360,4442],{},[586,4361,4364],{"className":1206,"code":4362,"filename":4363,"language":1209,"meta":592,"style":592},"[INFO] POST \u002Fapi\u002Fcheckout (234ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { items: 3, total: 9999 }\n  payment: { method: 'card', status: 'success' }\n","Development (Pretty)",[594,4365,4366,4380,4400,4416],{"__ignoreMap":592},[597,4367,4368,4370,4372,4374,4376,4378],{"class":599,"line":600},[597,4369,1216],{"class":607},[597,4371,1219],{"class":603},[597,4373,1222],{"class":607},[597,4375,1225],{"class":603},[597,4377,1229],{"class":1228},[597,4379,627],{"class":603},[597,4381,4382,4384,4386,4388,4390,4392,4394,4396,4398],{"class":599,"line":630},[597,4383,1236],{"class":1228},[597,4385,651],{"class":621},[597,4387,1241],{"class":621},[597,4389,1244],{"class":621},[597,4391,1247],{"class":621},[597,4393,701],{"class":607},[597,4395,920],{"class":621},[597,4397,618],{"class":607},[597,4399,1256],{"class":621},[597,4401,4402,4404,4406,4408,4410,4412,4414],{"class":599,"line":674},[597,4403,1261],{"class":1228},[597,4405,651],{"class":621},[597,4407,1271],{"class":621},[597,4409,1274],{"class":621},[597,4411,1277],{"class":621},[597,4413,974],{"class":781},[597,4415,1256],{"class":621},[597,4417,4418,4420,4422,4424,4426,4428,4430,4432,4434,4436,4438,4440],{"class":599,"line":714},[597,4419,1286],{"class":1228},[597,4421,651],{"class":621},[597,4423,1291],{"class":621},[597,4425,701],{"class":607},[597,4427,1010],{"class":621},[597,4429,618],{"class":607},[597,4431,648],{"class":621},[597,4433,1302],{"class":621},[597,4435,701],{"class":607},[597,4437,1024],{"class":621},[597,4439,618],{"class":607},[597,4441,1256],{"class":621},[586,4443,4448],{"className":4444,"code":4445,"filename":4446,"language":4447,"meta":592,"style":592},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"level\": \"info\",\n  \"method\": \"POST\",\n  \"path\": \"\u002Fapi\u002Fcheckout\",\n  \"duration\": 234,\n  \"user\": { \"id\": 1, \"plan\": \"pro\" },\n  \"cart\": { \"items\": 3, \"total\": 9999 },\n  \"payment\": { \"method\": \"card\", \"status\": \"success\" }\n}\n","Production (JSON)","json",[594,4449,4450,4454,4476,4494,4512,4527,4567,4603,4648],{"__ignoreMap":592},[597,4451,4452],{"class":599,"line":600},[597,4453,1547],{"class":607},[597,4455,4456,4459,4462,4465,4467,4470,4472,4474],{"class":599,"line":630},[597,4457,4458],{"class":607},"  \"",[597,4460,4461],{"class":863},"level",[597,4463,4464],{"class":607},"\"",[597,4466,658],{"class":607},[597,4468,4469],{"class":607}," \"",[597,4471,612],{"class":621},[597,4473,4464],{"class":607},[597,4475,2549],{"class":607},[597,4477,4478,4480,4482,4484,4486,4488,4490,4492],{"class":599,"line":674},[597,4479,4458],{"class":607},[597,4481,1690],{"class":863},[597,4483,4464],{"class":607},[597,4485,658],{"class":607},[597,4487,4469],{"class":607},[597,4489,1789],{"class":621},[597,4491,4464],{"class":607},[597,4493,2549],{"class":607},[597,4495,4496,4498,4500,4502,4504,4506,4508,4510],{"class":599,"line":714},[597,4497,4458],{"class":607},[597,4499,1694],{"class":863},[597,4501,4464],{"class":607},[597,4503,658],{"class":607},[597,4505,4469],{"class":607},[597,4507,1803],{"class":621},[597,4509,4464],{"class":607},[597,4511,2549],{"class":607},[597,4513,4514,4516,4519,4521,4523,4525],{"class":599,"line":734},[597,4515,4458],{"class":607},[597,4517,4518],{"class":863},"duration",[597,4520,4464],{"class":607},[597,4522,658],{"class":607},[597,4524,782],{"class":781},[597,4526,2549],{"class":607},[597,4528,4529,4531,4533,4535,4537,4539,4541,4543,4545,4547,4549,4551,4553,4555,4557,4559,4561,4563,4565],{"class":599,"line":754},[597,4530,4458],{"class":607},[597,4532,3575],{"class":863},[597,4534,4464],{"class":607},[597,4536,658],{"class":607},[597,4538,651],{"class":607},[597,4540,4469],{"class":607},[597,4542,1576],{"class":1228},[597,4544,4464],{"class":607},[597,4546,658],{"class":607},[597,4548,908],{"class":781},[597,4550,648],{"class":607},[597,4552,4469],{"class":607},[597,4554,1603],{"class":1228},[597,4556,4464],{"class":607},[597,4558,658],{"class":607},[597,4560,4469],{"class":607},[597,4562,920],{"class":621},[597,4564,4464],{"class":607},[597,4566,3376],{"class":607},[597,4568,4569,4571,4573,4575,4577,4579,4581,4583,4585,4587,4589,4591,4593,4595,4597,4599,4601],{"class":599,"line":983},[597,4570,4458],{"class":607},[597,4572,3653],{"class":863},[597,4574,4464],{"class":607},[597,4576,658],{"class":607},[597,4578,651],{"class":607},[597,4580,4469],{"class":607},[597,4582,2845],{"class":1228},[597,4584,4464],{"class":607},[597,4586,658],{"class":607},[597,4588,964],{"class":781},[597,4590,648],{"class":607},[597,4592,4469],{"class":607},[597,4594,2866],{"class":1228},[597,4596,4464],{"class":607},[597,4598,658],{"class":607},[597,4600,974],{"class":781},[597,4602,3376],{"class":607},[597,4604,4605,4607,4610,4612,4614,4616,4618,4620,4622,4624,4626,4628,4630,4632,4634,4636,4638,4640,4642,4644,4646],{"class":599,"line":1479},[597,4606,4458],{"class":607},[597,4608,4609],{"class":863},"payment",[597,4611,4464],{"class":607},[597,4613,658],{"class":607},[597,4615,651],{"class":607},[597,4617,4469],{"class":607},[597,4619,1690],{"class":1228},[597,4621,4464],{"class":607},[597,4623,658],{"class":607},[597,4625,4469],{"class":607},[597,4627,1010],{"class":621},[597,4629,4464],{"class":607},[597,4631,648],{"class":607},[597,4633,4469],{"class":607},[597,4635,3696],{"class":1228},[597,4637,4464],{"class":607},[597,4639,658],{"class":607},[597,4641,4469],{"class":607},[597,4643,1024],{"class":621},[597,4645,4464],{"class":607},[597,4647,1256],{"class":607},[597,4649,4650],{"class":599,"line":1508},[597,4651,1622],{"class":607},[575,4653,4655],{"id":4654},"next-steps","Next Steps",[537,4657,4658,4663,4668,4673],{},[540,4659,4660,4662],{},[521,4661,41],{"href":42}," - Fire-and-forget logs when you don't need context accumulation",[540,4664,4665,4667],{},[521,4666,71],{"href":72}," - Add compile-time type safety to your wide events",[540,4669,4670,4672],{},[521,4671,51],{"href":52}," - Errors with actionable context",[540,4674,4675,4677],{},[521,4676,201],{"href":206}," - Auto-managed request logging per framework",[4679,4680,4681],"style",{},"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .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 .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":592,"searchDepth":630,"depth":630,"links":4683},[4684,4685,4693,4696,4702,4709,4710],{"id":577,"depth":630,"text":578},{"id":1324,"depth":630,"text":1325,"children":4686},[4687,4689,4691],{"id":1329,"depth":674,"text":4688},"createLogger (General Purpose)",{"id":1674,"depth":674,"text":4690},"createRequestLogger (HTTP Contexts)",{"id":1922,"depth":674,"text":4692},"useLogger (Retrieving the Request Logger)",{"id":2140,"depth":630,"text":2141,"children":4694},[4695],{"id":2211,"depth":674,"text":2214},{"id":2459,"depth":630,"text":2460,"children":4697},[4698,4699,4700,4701],{"id":2476,"depth":674,"text":2477},{"id":2691,"depth":674,"text":2692},{"id":2786,"depth":674,"text":2787},{"id":2960,"depth":674,"text":2961},{"id":3143,"depth":630,"text":493,"children":4703},[4704,4705,4706,4707,4708],{"id":3146,"depth":674,"text":3147},{"id":3246,"depth":674,"text":3247},{"id":3409,"depth":674,"text":3410},{"id":3817,"depth":674,"text":3818},{"id":4219,"depth":674,"text":4220},{"id":4353,"depth":630,"text":4354},{"id":4654,"depth":630,"text":4655},"Accumulate context over any unit of work and emit a single comprehensive event. Works for HTTP requests, scripts, background jobs, queue workers, and workflows.","md",[4714,4716],{"label":51,"icon":54,"to":52,"color":517,"variant":4715},"subtle",{"label":493,"icon":359,"to":494,"color":517,"variant":4715},{},{"icon":49},{"title":46,"description":4711},"NsWfPyddsoFoW_r1wjhyRE-aO6-oDFfsoikLXAGY4Fc",[4722,4724],{"title":41,"path":42,"stem":43,"description":4723,"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.",{"title":51,"path":52,"stem":53,"description":4725,"icon":54,"children":-1},"Create errors that explain why they occurred and how to fix them. Add actionable context with why, fix, and link fields for humans and AI agents.",1785230279866]