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