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