[{"data":1,"prerenderedAt":3933},["ShallowReactive",2],{"navigation_docs":3,"-logging-wide-events":276,"-logging-wide-events-surround":3928},[4,30,65,105,187,246,262],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,168,173,177,182],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router",{"title":169,"path":170,"stem":171,"icon":172},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":174,"path":175,"stem":176,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":178,"path":179,"stem":180,"icon":181},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":183,"path":184,"stem":185,"icon":186},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":188,"path":189,"stem":190,"children":191,"page":29},"Adapters","\u002Fadapters","5.adapters",[192,196,201,206,211,216,221,226,231,236,241],{"title":36,"path":193,"stem":194,"icon":195},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":197,"path":198,"stem":199,"icon":200},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F10.pipeline","i-lucide-workflow",{"title":202,"path":203,"stem":204,"icon":205},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F11.browser","i-lucide-globe",{"title":207,"path":208,"stem":209,"icon":210},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":212,"path":213,"stem":214,"icon":215},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":217,"path":218,"stem":219,"icon":220},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":222,"path":223,"stem":224,"icon":225},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":227,"path":228,"stem":229,"icon":230},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":232,"path":233,"stem":234,"icon":235},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":237,"path":238,"stem":239,"icon":240},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F8.hyperdx","i-custom-hyperdx",{"title":242,"path":243,"stem":244,"icon":245},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F9.custom","i-lucide-code",{"title":247,"path":248,"stem":249,"children":250,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[251,254,258],{"title":36,"path":252,"stem":253,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":255,"path":256,"stem":257,"icon":186},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":259,"path":260,"stem":261,"icon":245},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":263,"path":264,"stem":265,"children":266,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[267,271],{"title":36,"path":268,"stem":269,"icon":270},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":272,"path":273,"stem":274,"icon":275},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":277,"title":46,"body":278,"description":3917,"extension":3918,"links":3919,"meta":3924,"navigation":3925,"path":47,"seo":3926,"stem":48,"__hash__":3927},"docs\u002F2.logging\u002F2.wide-events.md",{"type":279,"value":280,"toc":3892},"minimark",[281,285,290,293,495,498,527,530,1029,1032,1036,1044,1051,1382,1389,1409,1618,1632,1639,1646,1842,1850,1854,1867,1871,1874,2072,2082,2086,2089,2177,2181,2184,2352,2356,2359,2535,2538,2542,2638,2642,2801,2805,2812,3209,3213,3216,3560,3564,3567,3861,3865,3888],[282,283,284],"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.",[286,287,289],"h2",{"id":288},"why-wide-events","Why Wide Events?",[282,291,292],{},"Traditional logging creates noise:",[294,295,301],"pre",{"className":296,"code":297,"filename":298,"language":299,"meta":300,"style":300},"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","",[302,303,304,336,380,420,440,460],"code",{"__ignoreMap":300},[305,306,309,313,317,321,324,327,331,333],"span",{"class":307,"line":308},"line",1,[305,310,312],{"class":311},"sTEyZ","logger",[305,314,316],{"class":315},"sMK4o",".",[305,318,320],{"class":319},"s2Zo4","info",[305,322,323],{"class":311},"(",[305,325,326],{"class":315},"'",[305,328,330],{"class":329},"sfazB","Job started",[305,332,326],{"class":315},[305,334,335],{"class":311},")\n",[305,337,339,341,343,345,347,349,352,354,357,360,364,367,370,372,375,378],{"class":307,"line":338},2,[305,340,312],{"class":311},[305,342,316],{"class":315},[305,344,320],{"class":319},[305,346,323],{"class":311},[305,348,326],{"class":315},[305,350,351],{"class":329},"User authenticated",[305,353,326],{"class":315},[305,355,356],{"class":315},",",[305,358,359],{"class":315}," {",[305,361,363],{"class":362},"swJcz"," userId",[305,365,366],{"class":315},":",[305,368,369],{"class":311}," user",[305,371,316],{"class":315},[305,373,374],{"class":311},"id ",[305,376,377],{"class":315},"}",[305,379,335],{"class":311},[305,381,383,385,387,389,391,393,396,398,400,402,405,407,410,413,415,418],{"class":307,"line":382},3,[305,384,312],{"class":311},[305,386,316],{"class":315},[305,388,320],{"class":319},[305,390,323],{"class":311},[305,392,326],{"class":315},[305,394,395],{"class":329},"Fetching data",[305,397,326],{"class":315},[305,399,356],{"class":315},[305,401,359],{"class":315},[305,403,404],{"class":362}," source",[305,406,366],{"class":315},[305,408,409],{"class":315}," '",[305,411,412],{"class":329},"postgres",[305,414,326],{"class":315},[305,416,417],{"class":315}," }",[305,419,335],{"class":311},[305,421,423,425,427,429,431,433,436,438],{"class":307,"line":422},4,[305,424,312],{"class":311},[305,426,316],{"class":315},[305,428,320],{"class":319},[305,430,323],{"class":311},[305,432,326],{"class":315},[305,434,435],{"class":329},"Processing records",[305,437,326],{"class":315},[305,439,335],{"class":311},[305,441,443,445,447,449,451,453,456,458],{"class":307,"line":442},5,[305,444,312],{"class":311},[305,446,316],{"class":315},[305,448,320],{"class":319},[305,450,323],{"class":311},[305,452,326],{"class":315},[305,454,455],{"class":329},"Processing complete",[305,457,326],{"class":315},[305,459,335],{"class":311},[305,461,463,465,467,469,471,473,476,478,480,482,485,487,491,493],{"class":307,"line":462},6,[305,464,312],{"class":311},[305,466,316],{"class":315},[305,468,320],{"class":319},[305,470,323],{"class":311},[305,472,326],{"class":315},[305,474,475],{"class":329},"Job finished",[305,477,326],{"class":315},[305,479,356],{"class":315},[305,481,359],{"class":315},[305,483,484],{"class":362}," duration",[305,486,366],{"class":315},[305,488,490],{"class":489},"sbssI"," 234",[305,492,417],{"class":315},[305,494,335],{"class":311},[282,496,497],{},"This approach has problems:",[499,500,501,509,515,521],"ul",{},[502,503,504,508],"li",{},[505,506,507],"strong",{},"Scattered context",": Information is spread across multiple log lines",[502,510,511,514],{},[505,512,513],{},"Hard to correlate",": Matching logs to operations requires IDs everywhere",[502,516,517,520],{},[505,518,519],{},"Noise",": 10+ log lines per operation makes finding issues harder",[502,522,523,526],{},[505,524,525],{},"Incomplete",": Some logs might be missing if errors occur",[282,528,529],{},"Wide events solve this:",[531,532,533,743,914],"code-group",{},[294,534,537],{"className":296,"code":535,"filename":536,"language":299,"meta":300,"style":300},"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",[302,538,539,563,569,586,590,639,691],{"__ignoreMap":300},[305,540,541,545,547,550,552,555,557,560],{"class":307,"line":308},[305,542,544],{"class":543},"s7zQu","import",[305,546,359],{"class":315},[305,548,549],{"class":311}," useLogger",[305,551,417],{"class":315},[305,553,554],{"class":543}," from",[305,556,409],{"class":315},[305,558,559],{"class":329},"evlog",[305,561,562],{"class":315},"'\n",[305,564,565],{"class":307,"line":338},[305,566,568],{"emptyLinePlaceholder":567},true,"\n",[305,570,571,575,578,581,583],{"class":307,"line":382},[305,572,574],{"class":573},"spNyl","const",[305,576,577],{"class":311}," log ",[305,579,580],{"class":315},"=",[305,582,549],{"class":319},[305,584,585],{"class":311},"(event)\n",[305,587,588],{"class":307,"line":422},[305,589,568],{"emptyLinePlaceholder":567},[305,591,592,595,597,600,602,605,607,609,611,614,616,619,621,624,626,628,631,633,635,637],{"class":307,"line":442},[305,593,594],{"class":311},"log",[305,596,316],{"class":315},[305,598,599],{"class":319},"set",[305,601,323],{"class":311},[305,603,604],{"class":315},"{",[305,606,369],{"class":362},[305,608,366],{"class":315},[305,610,359],{"class":315},[305,612,613],{"class":362}," id",[305,615,366],{"class":315},[305,617,618],{"class":489}," 1",[305,620,356],{"class":315},[305,622,623],{"class":362}," plan",[305,625,366],{"class":315},[305,627,409],{"class":315},[305,629,630],{"class":329},"pro",[305,632,326],{"class":315},[305,634,417],{"class":315},[305,636,417],{"class":315},[305,638,335],{"class":311},[305,640,641,643,645,647,649,651,654,656,658,660,662,665,667,670,672,675,677,680,682,685,687,689],{"class":307,"line":462},[305,642,594],{"class":311},[305,644,316],{"class":315},[305,646,599],{"class":319},[305,648,323],{"class":311},[305,650,604],{"class":315},[305,652,653],{"class":362}," cart",[305,655,366],{"class":315},[305,657,359],{"class":315},[305,659,613],{"class":362},[305,661,366],{"class":315},[305,663,664],{"class":489}," 42",[305,666,356],{"class":315},[305,668,669],{"class":362}," items",[305,671,366],{"class":315},[305,673,674],{"class":489}," 3",[305,676,356],{"class":315},[305,678,679],{"class":362}," total",[305,681,366],{"class":315},[305,683,684],{"class":489}," 9999",[305,686,417],{"class":315},[305,688,417],{"class":315},[305,690,335],{"class":311},[305,692,694,696,698,700,702,704,707,709,711,714,716,718,721,723,725,728,730,732,735,737,739,741],{"class":307,"line":693},7,[305,695,594],{"class":311},[305,697,316],{"class":315},[305,699,599],{"class":319},[305,701,323],{"class":311},[305,703,604],{"class":315},[305,705,706],{"class":362}," payment",[305,708,366],{"class":315},[305,710,359],{"class":315},[305,712,713],{"class":362}," method",[305,715,366],{"class":315},[305,717,409],{"class":315},[305,719,720],{"class":329},"card",[305,722,326],{"class":315},[305,724,356],{"class":315},[305,726,727],{"class":362}," status",[305,729,366],{"class":315},[305,731,409],{"class":315},[305,733,734],{"class":329},"success",[305,736,326],{"class":315},[305,738,417],{"class":315},[305,740,417],{"class":315},[305,742,335],{"class":311},[294,744,747],{"className":296,"code":745,"filename":746,"language":299,"meta":300,"style":300},"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",[302,748,749,768,772,816,820,860,902],{"__ignoreMap":300},[305,750,751,753,755,758,760,762,764,766],{"class":307,"line":308},[305,752,544],{"class":543},[305,754,359],{"class":315},[305,756,757],{"class":311}," createLogger",[305,759,417],{"class":315},[305,761,554],{"class":543},[305,763,409],{"class":315},[305,765,559],{"class":329},[305,767,562],{"class":315},[305,769,770],{"class":307,"line":338},[305,771,568],{"emptyLinePlaceholder":567},[305,773,774,776,778,780,782,784,786,789,791,793,796,798,800,803,805,807,810,812,814],{"class":307,"line":382},[305,775,574],{"class":573},[305,777,577],{"class":311},[305,779,580],{"class":315},[305,781,757],{"class":319},[305,783,323],{"class":311},[305,785,604],{"class":315},[305,787,788],{"class":362}," jobId",[305,790,366],{"class":315},[305,792,409],{"class":315},[305,794,795],{"class":329},"sync-001",[305,797,326],{"class":315},[305,799,356],{"class":315},[305,801,802],{"class":362}," queue",[305,804,366],{"class":315},[305,806,409],{"class":315},[305,808,809],{"class":329},"emails",[305,811,326],{"class":315},[305,813,417],{"class":315},[305,815,335],{"class":311},[305,817,818],{"class":307,"line":422},[305,819,568],{"emptyLinePlaceholder":567},[305,821,822,824,826,828,830,832,834,836,838,840,842,844,847,849,851,854,856,858],{"class":307,"line":442},[305,823,594],{"class":311},[305,825,316],{"class":315},[305,827,599],{"class":319},[305,829,323],{"class":311},[305,831,604],{"class":315},[305,833,404],{"class":362},[305,835,366],{"class":315},[305,837,409],{"class":315},[305,839,412],{"class":329},[305,841,326],{"class":315},[305,843,356],{"class":315},[305,845,846],{"class":362}," target",[305,848,366],{"class":315},[305,850,409],{"class":315},[305,852,853],{"class":329},"s3",[305,855,326],{"class":315},[305,857,417],{"class":315},[305,859,335],{"class":311},[305,861,862,864,866,868,870,872,875,877,879,882,884,887,889,892,894,896,898,900],{"class":307,"line":462},[305,863,594],{"class":311},[305,865,316],{"class":315},[305,867,599],{"class":319},[305,869,323],{"class":311},[305,871,604],{"class":315},[305,873,874],{"class":362}," records",[305,876,366],{"class":315},[305,878,359],{"class":315},[305,880,881],{"class":362}," found",[305,883,366],{"class":315},[305,885,886],{"class":489}," 1250",[305,888,356],{"class":315},[305,890,891],{"class":362}," synced",[305,893,366],{"class":315},[305,895,886],{"class":489},[305,897,417],{"class":315},[305,899,417],{"class":315},[305,901,335],{"class":311},[305,903,904,906,908,911],{"class":307,"line":693},[305,905,594],{"class":311},[305,907,316],{"class":315},[305,909,910],{"class":319},"emit",[305,912,913],{"class":311},"()\n",[294,915,920],{"className":916,"code":917,"filename":918,"language":919,"meta":300,"style":300},"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",[302,921,922,942,967,992,1021],{"__ignoreMap":300},[305,923,924,927,930,933,936,940],{"class":307,"line":308},[305,925,926],{"class":315},"[",[305,928,929],{"class":311},"INFO",[305,931,932],{"class":315},"]",[305,934,935],{"class":311}," POST \u002Fapi\u002Fcheckout (",[305,937,939],{"class":938},"sBMFI","234ms",[305,941,335],{"class":311},[305,943,944,947,949,952,955,958,960,962,964],{"class":307,"line":338},[305,945,946],{"class":938},"  user:",[305,948,359],{"class":329},[305,950,951],{"class":329}," id:",[305,953,954],{"class":329}," 1,",[305,956,957],{"class":329}," plan:",[305,959,409],{"class":315},[305,961,630],{"class":329},[305,963,326],{"class":315},[305,965,966],{"class":329}," }\n",[305,968,969,972,974,976,979,982,985,988,990],{"class":307,"line":382},[305,970,971],{"class":938},"  cart:",[305,973,359],{"class":329},[305,975,951],{"class":329},[305,977,978],{"class":329}," 42,",[305,980,981],{"class":329}," items:",[305,983,984],{"class":329}," 3,",[305,986,987],{"class":329}," total:",[305,989,684],{"class":489},[305,991,966],{"class":329},[305,993,994,997,999,1002,1004,1006,1008,1010,1013,1015,1017,1019],{"class":307,"line":422},[305,995,996],{"class":938},"  payment:",[305,998,359],{"class":329},[305,1000,1001],{"class":329}," method:",[305,1003,409],{"class":315},[305,1005,720],{"class":329},[305,1007,326],{"class":315},[305,1009,356],{"class":329},[305,1011,1012],{"class":329}," status:",[305,1014,409],{"class":315},[305,1016,734],{"class":329},[305,1018,326],{"class":315},[305,1020,966],{"class":329},[305,1022,1023,1026],{"class":307,"line":442},[305,1024,1025],{"class":938},"  status:",[305,1027,1028],{"class":489}," 200\n",[282,1030,1031],{},"One log, all context. Everything you need to understand what happened.",[286,1033,1035],{"id":1034},"creating-wide-events","Creating Wide Events",[1037,1038,1040,1043],"h3",{"id":1039},"createlogger-general-purpose",[302,1041,1042],{},"createLogger"," (General Purpose)",[282,1045,1046,1047,1050],{},"Use ",[302,1048,1049],{},"createLogger()"," for scripts, background jobs, queue workers, cron jobs, or any operation where you manage the lifecycle:",[294,1052,1055],{"className":296,"code":1053,"filename":1054,"language":299,"meta":300,"style":300},"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",[302,1056,1057,1080,1084,1118,1122,1152,1156,1187,1216,1221,1235,1258,1318,1327,1333,1338,1371],{"__ignoreMap":300},[305,1058,1059,1061,1063,1066,1068,1070,1072,1074,1076,1078],{"class":307,"line":308},[305,1060,544],{"class":543},[305,1062,359],{"class":315},[305,1064,1065],{"class":311}," initLogger",[305,1067,356],{"class":315},[305,1069,757],{"class":311},[305,1071,417],{"class":315},[305,1073,554],{"class":543},[305,1075,409],{"class":315},[305,1077,559],{"class":329},[305,1079,562],{"class":315},[305,1081,1082],{"class":307,"line":338},[305,1083,568],{"emptyLinePlaceholder":567},[305,1085,1086,1089,1091,1093,1096,1098,1100,1103,1105,1107,1110,1112,1114,1116],{"class":307,"line":382},[305,1087,1088],{"class":319},"initLogger",[305,1090,323],{"class":311},[305,1092,604],{"class":315},[305,1094,1095],{"class":362}," env",[305,1097,366],{"class":315},[305,1099,359],{"class":315},[305,1101,1102],{"class":362}," service",[305,1104,366],{"class":315},[305,1106,409],{"class":315},[305,1108,1109],{"class":329},"migrate",[305,1111,326],{"class":315},[305,1113,417],{"class":315},[305,1115,417],{"class":315},[305,1117,335],{"class":311},[305,1119,1120],{"class":307,"line":422},[305,1121,568],{"emptyLinePlaceholder":567},[305,1123,1124,1126,1128,1130,1132,1134,1136,1139,1141,1143,1146,1148,1150],{"class":307,"line":442},[305,1125,574],{"class":573},[305,1127,577],{"class":311},[305,1129,580],{"class":315},[305,1131,757],{"class":319},[305,1133,323],{"class":311},[305,1135,604],{"class":315},[305,1137,1138],{"class":362}," task",[305,1140,366],{"class":315},[305,1142,409],{"class":315},[305,1144,1145],{"class":329},"user-migration",[305,1147,326],{"class":315},[305,1149,417],{"class":315},[305,1151,335],{"class":311},[305,1153,1154],{"class":307,"line":462},[305,1155,568],{"emptyLinePlaceholder":567},[305,1157,1158,1160,1163,1165,1168,1171,1173,1176,1178,1180,1183,1185],{"class":307,"line":693},[305,1159,574],{"class":573},[305,1161,1162],{"class":311}," users ",[305,1164,580],{"class":315},[305,1166,1167],{"class":543}," await",[305,1169,1170],{"class":311}," db",[305,1172,316],{"class":315},[305,1174,1175],{"class":319},"query",[305,1177,323],{"class":311},[305,1179,326],{"class":315},[305,1181,1182],{"class":329},"SELECT * FROM legacy_users",[305,1184,326],{"class":315},[305,1186,335],{"class":311},[305,1188,1190,1192,1194,1196,1198,1200,1202,1204,1207,1209,1212,1214],{"class":307,"line":1189},8,[305,1191,594],{"class":311},[305,1193,316],{"class":315},[305,1195,599],{"class":319},[305,1197,323],{"class":311},[305,1199,604],{"class":315},[305,1201,881],{"class":362},[305,1203,366],{"class":315},[305,1205,1206],{"class":311}," users",[305,1208,316],{"class":315},[305,1210,1211],{"class":311},"length ",[305,1213,377],{"class":315},[305,1215,335],{"class":311},[305,1217,1219],{"class":307,"line":1218},9,[305,1220,568],{"emptyLinePlaceholder":567},[305,1222,1224,1227,1230,1232],{"class":307,"line":1223},10,[305,1225,1226],{"class":573},"let",[305,1228,1229],{"class":311}," migrated ",[305,1231,580],{"class":315},[305,1233,1234],{"class":489}," 0\n",[305,1236,1238,1241,1244,1246,1249,1252,1255],{"class":307,"line":1237},11,[305,1239,1240],{"class":543},"for",[305,1242,1243],{"class":311}," (",[305,1245,574],{"class":573},[305,1247,1248],{"class":311}," user ",[305,1250,1251],{"class":315},"of",[305,1253,1254],{"class":311}," users) ",[305,1256,1257],{"class":315},"{\n",[305,1259,1261,1264,1267,1269,1272,1274,1276,1278,1280,1282,1284,1287,1289,1292,1294,1296,1298,1301,1303,1305,1307,1309,1311,1314,1316],{"class":307,"line":1260},12,[305,1262,1263],{"class":543},"  await",[305,1265,1266],{"class":311}," newDb",[305,1268,316],{"class":315},[305,1270,1271],{"class":319},"upsert",[305,1273,323],{"class":362},[305,1275,604],{"class":315},[305,1277,613],{"class":362},[305,1279,366],{"class":315},[305,1281,369],{"class":311},[305,1283,316],{"class":315},[305,1285,1286],{"class":311},"id",[305,1288,356],{"class":315},[305,1290,1291],{"class":362}," email",[305,1293,366],{"class":315},[305,1295,369],{"class":311},[305,1297,316],{"class":315},[305,1299,1300],{"class":311},"email",[305,1302,356],{"class":315},[305,1304,623],{"class":362},[305,1306,366],{"class":315},[305,1308,369],{"class":311},[305,1310,316],{"class":315},[305,1312,1313],{"class":311},"plan",[305,1315,417],{"class":315},[305,1317,335],{"class":362},[305,1319,1321,1324],{"class":307,"line":1320},13,[305,1322,1323],{"class":311},"  migrated",[305,1325,1326],{"class":315},"++\n",[305,1328,1330],{"class":307,"line":1329},14,[305,1331,1332],{"class":315},"}\n",[305,1334,1336],{"class":307,"line":1335},15,[305,1337,568],{"emptyLinePlaceholder":567},[305,1339,1341,1343,1345,1347,1349,1351,1354,1356,1358,1360,1362,1365,1367,1369],{"class":307,"line":1340},16,[305,1342,594],{"class":311},[305,1344,316],{"class":315},[305,1346,599],{"class":319},[305,1348,323],{"class":311},[305,1350,604],{"class":315},[305,1352,1353],{"class":311}," migrated",[305,1355,356],{"class":315},[305,1357,727],{"class":362},[305,1359,366],{"class":315},[305,1361,409],{"class":315},[305,1363,1364],{"class":329},"complete",[305,1366,326],{"class":315},[305,1368,417],{"class":315},[305,1370,335],{"class":311},[305,1372,1374,1376,1378,1380],{"class":307,"line":1373},17,[305,1375,594],{"class":311},[305,1377,316],{"class":315},[305,1379,910],{"class":319},[305,1381,913],{"class":311},[1037,1383,1385,1388],{"id":1384},"createrequestlogger-http-contexts",[302,1386,1387],{},"createRequestLogger"," (HTTP Contexts)",[282,1390,1046,1391,1394,1395,1397,1398,1401,1402,1405,1406,366],{},[302,1392,1393],{},"createRequestLogger()"," when working with HTTP requests outside of a framework integration. It's a thin wrapper around ",[302,1396,1042],{}," that pre-populates ",[302,1399,1400],{},"method",", ",[302,1403,1404],{},"path",", and ",[302,1407,1408],{},"requestId",[294,1410,1413],{"className":296,"code":1411,"filename":1412,"language":299,"meta":300,"style":300},"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",[302,1414,1415,1438,1442,1473,1477,1520,1524,1566,1604,1608],{"__ignoreMap":300},[305,1416,1417,1419,1421,1423,1425,1428,1430,1432,1434,1436],{"class":307,"line":308},[305,1418,544],{"class":543},[305,1420,359],{"class":315},[305,1422,1065],{"class":311},[305,1424,356],{"class":315},[305,1426,1427],{"class":311}," createRequestLogger",[305,1429,417],{"class":315},[305,1431,554],{"class":543},[305,1433,409],{"class":315},[305,1435,559],{"class":329},[305,1437,562],{"class":315},[305,1439,1440],{"class":307,"line":338},[305,1441,568],{"emptyLinePlaceholder":567},[305,1443,1444,1446,1448,1450,1452,1454,1456,1458,1460,1462,1465,1467,1469,1471],{"class":307,"line":382},[305,1445,1088],{"class":319},[305,1447,323],{"class":311},[305,1449,604],{"class":315},[305,1451,1095],{"class":362},[305,1453,366],{"class":315},[305,1455,359],{"class":315},[305,1457,1102],{"class":362},[305,1459,366],{"class":315},[305,1461,409],{"class":315},[305,1463,1464],{"class":329},"my-worker",[305,1466,326],{"class":315},[305,1468,417],{"class":315},[305,1470,417],{"class":315},[305,1472,335],{"class":311},[305,1474,1475],{"class":307,"line":422},[305,1476,568],{"emptyLinePlaceholder":567},[305,1478,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1500,1502,1504,1507,1509,1511,1514,1516,1518],{"class":307,"line":442},[305,1480,574],{"class":573},[305,1482,577],{"class":311},[305,1484,580],{"class":315},[305,1486,1427],{"class":319},[305,1488,323],{"class":311},[305,1490,604],{"class":315},[305,1492,713],{"class":362},[305,1494,366],{"class":315},[305,1496,409],{"class":315},[305,1498,1499],{"class":329},"POST",[305,1501,326],{"class":315},[305,1503,356],{"class":315},[305,1505,1506],{"class":362}," path",[305,1508,366],{"class":315},[305,1510,409],{"class":315},[305,1512,1513],{"class":329},"\u002Fapi\u002Fcheckout",[305,1515,326],{"class":315},[305,1517,417],{"class":315},[305,1519,335],{"class":311},[305,1521,1522],{"class":307,"line":462},[305,1523,568],{"emptyLinePlaceholder":567},[305,1525,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1558,1560,1562,1564],{"class":307,"line":693},[305,1527,594],{"class":311},[305,1529,316],{"class":315},[305,1531,599],{"class":319},[305,1533,323],{"class":311},[305,1535,604],{"class":315},[305,1537,369],{"class":362},[305,1539,366],{"class":315},[305,1541,359],{"class":315},[305,1543,613],{"class":362},[305,1545,366],{"class":315},[305,1547,618],{"class":489},[305,1549,356],{"class":315},[305,1551,623],{"class":362},[305,1553,366],{"class":315},[305,1555,409],{"class":315},[305,1557,630],{"class":329},[305,1559,326],{"class":315},[305,1561,417],{"class":315},[305,1563,417],{"class":315},[305,1565,335],{"class":311},[305,1567,1568,1570,1572,1574,1576,1578,1580,1582,1584,1586,1588,1590,1592,1594,1596,1598,1600,1602],{"class":307,"line":1189},[305,1569,594],{"class":311},[305,1571,316],{"class":315},[305,1573,599],{"class":319},[305,1575,323],{"class":311},[305,1577,604],{"class":315},[305,1579,653],{"class":362},[305,1581,366],{"class":315},[305,1583,359],{"class":315},[305,1585,669],{"class":362},[305,1587,366],{"class":315},[305,1589,674],{"class":489},[305,1591,356],{"class":315},[305,1593,679],{"class":362},[305,1595,366],{"class":315},[305,1597,684],{"class":489},[305,1599,417],{"class":315},[305,1601,417],{"class":315},[305,1603,335],{"class":311},[305,1605,1606],{"class":307,"line":1218},[305,1607,568],{"emptyLinePlaceholder":567},[305,1609,1610,1612,1614,1616],{"class":307,"line":1223},[305,1611,594],{"class":311},[305,1613,316],{"class":315},[305,1615,910],{"class":319},[305,1617,913],{"class":311},[1619,1620,1621,1622,1624,1625,1627,1628,1631],"callout",{"color":320,"icon":13},"Both ",[302,1623,1042],{}," and ",[302,1626,1387],{}," require a manual ",[302,1629,1630],{},"log.emit()"," call. The event won't be emitted until you call it.",[1037,1633,1635,1638],{"id":1634},"uselogger-retrieving-the-request-logger",[302,1636,1637],{},"useLogger"," (Retrieving the Request Logger)",[282,1640,1641,1642,1645],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware creates a wide event logger automatically on each request. ",[302,1643,1644],{},"useLogger(event)"," retrieves that logger from the request context:",[294,1647,1649],{"className":296,"code":1648,"filename":536,"language":299,"meta":300,"style":300},"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",[302,1650,1651,1669,1673,1704,1723,1727,1770,1808,1812,1830,1836],{"__ignoreMap":300},[305,1652,1653,1655,1657,1659,1661,1663,1665,1667],{"class":307,"line":308},[305,1654,544],{"class":543},[305,1656,359],{"class":315},[305,1658,549],{"class":311},[305,1660,417],{"class":315},[305,1662,554],{"class":543},[305,1664,409],{"class":315},[305,1666,559],{"class":329},[305,1668,562],{"class":315},[305,1670,1671],{"class":307,"line":338},[305,1672,568],{"emptyLinePlaceholder":567},[305,1674,1675,1678,1681,1684,1686,1689,1691,1695,1698,1701],{"class":307,"line":382},[305,1676,1677],{"class":543},"export",[305,1679,1680],{"class":543}," default",[305,1682,1683],{"class":319}," defineEventHandler",[305,1685,323],{"class":311},[305,1687,1688],{"class":573},"async",[305,1690,1243],{"class":315},[305,1692,1694],{"class":1693},"sHdIc","event",[305,1696,1697],{"class":315},")",[305,1699,1700],{"class":573}," =>",[305,1702,1703],{"class":315}," {\n",[305,1705,1706,1709,1712,1715,1717,1719,1721],{"class":307,"line":422},[305,1707,1708],{"class":573},"  const",[305,1710,1711],{"class":311}," log",[305,1713,1714],{"class":315}," =",[305,1716,549],{"class":319},[305,1718,323],{"class":362},[305,1720,1694],{"class":311},[305,1722,335],{"class":362},[305,1724,1725],{"class":307,"line":442},[305,1726,568],{"emptyLinePlaceholder":567},[305,1728,1729,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768],{"class":307,"line":462},[305,1730,1731],{"class":311},"  log",[305,1733,316],{"class":315},[305,1735,599],{"class":319},[305,1737,323],{"class":362},[305,1739,604],{"class":315},[305,1741,369],{"class":362},[305,1743,366],{"class":315},[305,1745,359],{"class":315},[305,1747,613],{"class":362},[305,1749,366],{"class":315},[305,1751,618],{"class":489},[305,1753,356],{"class":315},[305,1755,623],{"class":362},[305,1757,366],{"class":315},[305,1759,409],{"class":315},[305,1761,630],{"class":329},[305,1763,326],{"class":315},[305,1765,417],{"class":315},[305,1767,417],{"class":315},[305,1769,335],{"class":362},[305,1771,1772,1774,1776,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806],{"class":307,"line":693},[305,1773,1731],{"class":311},[305,1775,316],{"class":315},[305,1777,599],{"class":319},[305,1779,323],{"class":362},[305,1781,604],{"class":315},[305,1783,653],{"class":362},[305,1785,366],{"class":315},[305,1787,359],{"class":315},[305,1789,669],{"class":362},[305,1791,366],{"class":315},[305,1793,674],{"class":489},[305,1795,356],{"class":315},[305,1797,679],{"class":362},[305,1799,366],{"class":315},[305,1801,684],{"class":489},[305,1803,417],{"class":315},[305,1805,417],{"class":315},[305,1807,335],{"class":362},[305,1809,1810],{"class":307,"line":1189},[305,1811,568],{"emptyLinePlaceholder":567},[305,1813,1814,1817,1819,1822,1824,1828],{"class":307,"line":1218},[305,1815,1816],{"class":543},"  return",[305,1818,359],{"class":315},[305,1820,1821],{"class":362}," success",[305,1823,366],{"class":315},[305,1825,1827],{"class":1826},"sfNiH"," true",[305,1829,966],{"class":315},[305,1831,1832],{"class":307,"line":1223},[305,1833,1835],{"class":1834},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[305,1837,1838,1840],{"class":307,"line":1237},[305,1839,377],{"class":315},[305,1841,335],{"class":311},[1619,1843,1844,1846,1847,1849],{"color":320,"icon":13},[302,1845,1637],{}," 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, ",[302,1848,1637],{}," is auto-imported.",[286,1851,1853],{"id":1852},"anatomy-of-a-wide-event","Anatomy of a Wide Event",[282,1855,1856,1857,1859,1860,1401,1862,1864,1865,316],{},"A well-designed wide event contains context from multiple layers. The examples below show what to add inside your handler or script. They assume ",[302,1858,594],{}," is already created via ",[302,1861,1042],{},[302,1863,1387],{},", or ",[302,1866,1637],{},[1037,1868,1870],{"id":1869},"operation-context","Operation Context",[282,1872,1873],{},"Basic information about the operation:",[531,1875,1876,1980],{},[294,1877,1879],{"className":296,"code":1878,"filename":536,"language":299,"meta":300,"style":300},"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",[302,1880,1881,1899,1903,1915,1927,1943,1958,1974],{"__ignoreMap":300},[305,1882,1883,1885,1887,1889,1891,1893,1895,1897],{"class":307,"line":308},[305,1884,544],{"class":543},[305,1886,359],{"class":315},[305,1888,549],{"class":311},[305,1890,417],{"class":315},[305,1892,554],{"class":543},[305,1894,409],{"class":315},[305,1896,559],{"class":329},[305,1898,562],{"class":315},[305,1900,1901],{"class":307,"line":338},[305,1902,568],{"emptyLinePlaceholder":567},[305,1904,1905,1907,1909,1911,1913],{"class":307,"line":382},[305,1906,574],{"class":573},[305,1908,577],{"class":311},[305,1910,580],{"class":315},[305,1912,549],{"class":319},[305,1914,585],{"class":311},[305,1916,1917,1919,1921,1923,1925],{"class":307,"line":422},[305,1918,594],{"class":311},[305,1920,316],{"class":315},[305,1922,599],{"class":319},[305,1924,323],{"class":311},[305,1926,1257],{"class":315},[305,1928,1929,1932,1934,1936,1938,1940],{"class":307,"line":442},[305,1930,1931],{"class":362},"  method",[305,1933,366],{"class":315},[305,1935,409],{"class":315},[305,1937,1499],{"class":329},[305,1939,326],{"class":315},[305,1941,1942],{"class":315},",\n",[305,1944,1945,1948,1950,1952,1954,1956],{"class":307,"line":462},[305,1946,1947],{"class":362},"  path",[305,1949,366],{"class":315},[305,1951,409],{"class":315},[305,1953,1513],{"class":329},[305,1955,326],{"class":315},[305,1957,1942],{"class":315},[305,1959,1960,1963,1965,1967,1970,1972],{"class":307,"line":693},[305,1961,1962],{"class":362},"  requestId",[305,1964,366],{"class":315},[305,1966,409],{"class":315},[305,1968,1969],{"class":329},"abc-123-def",[305,1971,326],{"class":315},[305,1973,1942],{"class":315},[305,1975,1976,1978],{"class":307,"line":1189},[305,1977,377],{"class":315},[305,1979,335],{"class":311},[294,1981,1983],{"className":296,"code":1982,"filename":746,"language":299,"meta":300,"style":300},"import { createLogger } from 'evlog'\n\nconst log = createLogger({\n  jobId: 'sync-001',\n  queue: 'emails',\n  source: 'postgres',\n})\n",[302,1984,1985,2003,2007,2021,2036,2051,2066],{"__ignoreMap":300},[305,1986,1987,1989,1991,1993,1995,1997,1999,2001],{"class":307,"line":308},[305,1988,544],{"class":543},[305,1990,359],{"class":315},[305,1992,757],{"class":311},[305,1994,417],{"class":315},[305,1996,554],{"class":543},[305,1998,409],{"class":315},[305,2000,559],{"class":329},[305,2002,562],{"class":315},[305,2004,2005],{"class":307,"line":338},[305,2006,568],{"emptyLinePlaceholder":567},[305,2008,2009,2011,2013,2015,2017,2019],{"class":307,"line":382},[305,2010,574],{"class":573},[305,2012,577],{"class":311},[305,2014,580],{"class":315},[305,2016,757],{"class":319},[305,2018,323],{"class":311},[305,2020,1257],{"class":315},[305,2022,2023,2026,2028,2030,2032,2034],{"class":307,"line":422},[305,2024,2025],{"class":362},"  jobId",[305,2027,366],{"class":315},[305,2029,409],{"class":315},[305,2031,795],{"class":329},[305,2033,326],{"class":315},[305,2035,1942],{"class":315},[305,2037,2038,2041,2043,2045,2047,2049],{"class":307,"line":442},[305,2039,2040],{"class":362},"  queue",[305,2042,366],{"class":315},[305,2044,409],{"class":315},[305,2046,809],{"class":329},[305,2048,326],{"class":315},[305,2050,1942],{"class":315},[305,2052,2053,2056,2058,2060,2062,2064],{"class":307,"line":462},[305,2054,2055],{"class":362},"  source",[305,2057,366],{"class":315},[305,2059,409],{"class":315},[305,2061,412],{"class":329},[305,2063,326],{"class":315},[305,2065,1942],{"class":315},[305,2067,2068,2070],{"class":307,"line":693},[305,2069,377],{"class":315},[305,2071,335],{"class":311},[1619,2073,2074,2075,1401,2077,1401,2079,2081],{"color":320,"icon":13},"In framework integrations, request context (",[302,2076,1400],{},[302,2078,1404],{},[302,2080,1408],{},") is auto-populated by the middleware. You don't need to set these fields manually.",[1037,2083,2085],{"id":2084},"user-actor-context","User \u002F Actor Context",[282,2087,2088],{},"Who triggered the operation:",[294,2090,2092],{"className":296,"code":2091,"filename":536,"language":299,"meta":300,"style":300},"log.set({\n  userId: user.id,\n  email: user.email,\n  subscription: user.plan,\n  accountAge: daysSince(user.createdAt),\n})\n",[302,2093,2094,2106,2121,2136,2151,2171],{"__ignoreMap":300},[305,2095,2096,2098,2100,2102,2104],{"class":307,"line":308},[305,2097,594],{"class":311},[305,2099,316],{"class":315},[305,2101,599],{"class":319},[305,2103,323],{"class":311},[305,2105,1257],{"class":315},[305,2107,2108,2111,2113,2115,2117,2119],{"class":307,"line":338},[305,2109,2110],{"class":362},"  userId",[305,2112,366],{"class":315},[305,2114,369],{"class":311},[305,2116,316],{"class":315},[305,2118,1286],{"class":311},[305,2120,1942],{"class":315},[305,2122,2123,2126,2128,2130,2132,2134],{"class":307,"line":382},[305,2124,2125],{"class":362},"  email",[305,2127,366],{"class":315},[305,2129,369],{"class":311},[305,2131,316],{"class":315},[305,2133,1300],{"class":311},[305,2135,1942],{"class":315},[305,2137,2138,2141,2143,2145,2147,2149],{"class":307,"line":422},[305,2139,2140],{"class":362},"  subscription",[305,2142,366],{"class":315},[305,2144,369],{"class":311},[305,2146,316],{"class":315},[305,2148,1313],{"class":311},[305,2150,1942],{"class":315},[305,2152,2153,2156,2158,2161,2164,2166,2169],{"class":307,"line":442},[305,2154,2155],{"class":362},"  accountAge",[305,2157,366],{"class":315},[305,2159,2160],{"class":319}," daysSince",[305,2162,2163],{"class":311},"(user",[305,2165,316],{"class":315},[305,2167,2168],{"class":311},"createdAt)",[305,2170,1942],{"class":315},[305,2172,2173,2175],{"class":307,"line":462},[305,2174,377],{"class":315},[305,2176,335],{"class":311},[1037,2178,2180],{"id":2179},"business-context","Business Context",[282,2182,2183],{},"Domain-specific data relevant to the operation:",[294,2185,2187],{"className":296,"code":2186,"filename":536,"language":299,"meta":300,"style":300},"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",[302,2188,2189,2201,2210,2225,2246,2262,2278,2283,2292,2308,2325,2329,2346],{"__ignoreMap":300},[305,2190,2191,2193,2195,2197,2199],{"class":307,"line":308},[305,2192,594],{"class":311},[305,2194,316],{"class":315},[305,2196,599],{"class":319},[305,2198,323],{"class":311},[305,2200,1257],{"class":315},[305,2202,2203,2206,2208],{"class":307,"line":338},[305,2204,2205],{"class":362},"  cart",[305,2207,366],{"class":315},[305,2209,1703],{"class":315},[305,2211,2212,2215,2217,2219,2221,2223],{"class":307,"line":382},[305,2213,2214],{"class":362},"    id",[305,2216,366],{"class":315},[305,2218,653],{"class":311},[305,2220,316],{"class":315},[305,2222,1286],{"class":311},[305,2224,1942],{"class":315},[305,2226,2227,2230,2232,2234,2236,2239,2241,2244],{"class":307,"line":422},[305,2228,2229],{"class":362},"    items",[305,2231,366],{"class":315},[305,2233,653],{"class":311},[305,2235,316],{"class":315},[305,2237,2238],{"class":311},"items",[305,2240,316],{"class":315},[305,2242,2243],{"class":311},"length",[305,2245,1942],{"class":315},[305,2247,2248,2251,2253,2255,2257,2260],{"class":307,"line":442},[305,2249,2250],{"class":362},"    total",[305,2252,366],{"class":315},[305,2254,653],{"class":311},[305,2256,316],{"class":315},[305,2258,2259],{"class":311},"total",[305,2261,1942],{"class":315},[305,2263,2264,2267,2269,2271,2274,2276],{"class":307,"line":462},[305,2265,2266],{"class":362},"    currency",[305,2268,366],{"class":315},[305,2270,409],{"class":315},[305,2272,2273],{"class":329},"USD",[305,2275,326],{"class":315},[305,2277,1942],{"class":315},[305,2279,2280],{"class":307,"line":693},[305,2281,2282],{"class":315},"  },\n",[305,2284,2285,2288,2290],{"class":307,"line":1189},[305,2286,2287],{"class":362},"  shipping",[305,2289,366],{"class":315},[305,2291,1703],{"class":315},[305,2293,2294,2297,2299,2301,2304,2306],{"class":307,"line":1218},[305,2295,2296],{"class":362},"    method",[305,2298,366],{"class":315},[305,2300,409],{"class":315},[305,2302,2303],{"class":329},"express",[305,2305,326],{"class":315},[305,2307,1942],{"class":315},[305,2309,2310,2313,2315,2318,2320,2323],{"class":307,"line":1223},[305,2311,2312],{"class":362},"    country",[305,2314,366],{"class":315},[305,2316,2317],{"class":311}," address",[305,2319,316],{"class":315},[305,2321,2322],{"class":311},"country",[305,2324,1942],{"class":315},[305,2326,2327],{"class":307,"line":1237},[305,2328,2282],{"class":315},[305,2330,2331,2334,2336,2339,2342,2344],{"class":307,"line":1260},[305,2332,2333],{"class":362},"  coupon",[305,2335,366],{"class":315},[305,2337,2338],{"class":311}," appliedCoupon",[305,2340,2341],{"class":315},"?.",[305,2343,302],{"class":311},[305,2345,1942],{"class":315},[305,2347,2348,2350],{"class":307,"line":1320},[305,2349,377],{"class":315},[305,2351,335],{"class":311},[1037,2353,2355],{"id":2354},"outcome","Outcome",[282,2357,2358],{},"The result of the operation:",[531,2360,2361,2434],{},[294,2362,2365],{"className":296,"code":2363,"filename":2364,"language":299,"meta":300,"style":300},"log.set({\n  status: 200,\n  duration: Date.now() - startTime,\n  success: true,\n})\n","Success",[302,2366,2367,2379,2391,2417,2428],{"__ignoreMap":300},[305,2368,2369,2371,2373,2375,2377],{"class":307,"line":308},[305,2370,594],{"class":311},[305,2372,316],{"class":315},[305,2374,599],{"class":319},[305,2376,323],{"class":311},[305,2378,1257],{"class":315},[305,2380,2381,2384,2386,2389],{"class":307,"line":338},[305,2382,2383],{"class":362},"  status",[305,2385,366],{"class":315},[305,2387,2388],{"class":489}," 200",[305,2390,1942],{"class":315},[305,2392,2393,2396,2398,2401,2403,2406,2409,2412,2415],{"class":307,"line":382},[305,2394,2395],{"class":362},"  duration",[305,2397,366],{"class":315},[305,2399,2400],{"class":311}," Date",[305,2402,316],{"class":315},[305,2404,2405],{"class":319},"now",[305,2407,2408],{"class":311},"() ",[305,2410,2411],{"class":315},"-",[305,2413,2414],{"class":311}," startTime",[305,2416,1942],{"class":315},[305,2418,2419,2422,2424,2426],{"class":307,"line":422},[305,2420,2421],{"class":362},"  success",[305,2423,366],{"class":315},[305,2425,1827],{"class":1826},[305,2427,1942],{"class":315},[305,2429,2430,2432],{"class":307,"line":442},[305,2431,377],{"class":315},[305,2433,335],{"class":311},[294,2435,2438],{"className":296,"code":2436,"filename":2437,"language":299,"meta":300,"style":300},"log.set({\n  status: 500,\n  error: {\n    message: err.message,\n    code: err.code,\n    type: err.constructor.name,\n  },\n})\n","Error",[302,2439,2440,2452,2463,2472,2489,2504,2525,2529],{"__ignoreMap":300},[305,2441,2442,2444,2446,2448,2450],{"class":307,"line":308},[305,2443,594],{"class":311},[305,2445,316],{"class":315},[305,2447,599],{"class":319},[305,2449,323],{"class":311},[305,2451,1257],{"class":315},[305,2453,2454,2456,2458,2461],{"class":307,"line":338},[305,2455,2383],{"class":362},[305,2457,366],{"class":315},[305,2459,2460],{"class":489}," 500",[305,2462,1942],{"class":315},[305,2464,2465,2468,2470],{"class":307,"line":382},[305,2466,2467],{"class":362},"  error",[305,2469,366],{"class":315},[305,2471,1703],{"class":315},[305,2473,2474,2477,2479,2482,2484,2487],{"class":307,"line":422},[305,2475,2476],{"class":362},"    message",[305,2478,366],{"class":315},[305,2480,2481],{"class":311}," err",[305,2483,316],{"class":315},[305,2485,2486],{"class":311},"message",[305,2488,1942],{"class":315},[305,2490,2491,2494,2496,2498,2500,2502],{"class":307,"line":442},[305,2492,2493],{"class":362},"    code",[305,2495,366],{"class":315},[305,2497,2481],{"class":311},[305,2499,316],{"class":315},[305,2501,302],{"class":311},[305,2503,1942],{"class":315},[305,2505,2506,2509,2511,2513,2515,2518,2520,2523],{"class":307,"line":462},[305,2507,2508],{"class":362},"    type",[305,2510,366],{"class":315},[305,2512,2481],{"class":311},[305,2514,316],{"class":315},[305,2516,2517],{"class":311},"constructor",[305,2519,316],{"class":315},[305,2521,2522],{"class":311},"name",[305,2524,1942],{"class":315},[305,2526,2527],{"class":307,"line":693},[305,2528,2282],{"class":315},[305,2530,2531,2533],{"class":307,"line":1189},[305,2532,377],{"class":315},[305,2534,335],{"class":311},[286,2536,91],{"id":2537},"best-practices",[1037,2539,2541],{"id":2540},"use-meaningful-keys","Use Meaningful Keys",[294,2543,2546],{"className":296,"code":2544,"filename":2545,"language":299,"meta":300,"style":300},"\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",[302,2547,2548,2553,2585,2589,2594],{"__ignoreMap":300},[305,2549,2550],{"class":307,"line":308},[305,2551,2552],{"class":1834},"\u002F\u002F Avoid generic keys\n",[305,2554,2555,2557,2559,2561,2563,2565,2568,2570,2572,2574,2576,2579,2581,2583],{"class":307,"line":338},[305,2556,594],{"class":311},[305,2558,316],{"class":315},[305,2560,599],{"class":319},[305,2562,323],{"class":311},[305,2564,604],{"class":315},[305,2566,2567],{"class":362}," data",[305,2569,366],{"class":315},[305,2571,359],{"class":315},[305,2573,613],{"class":362},[305,2575,366],{"class":315},[305,2577,2578],{"class":489}," 123",[305,2580,417],{"class":315},[305,2582,417],{"class":315},[305,2584,335],{"class":311},[305,2586,2587],{"class":307,"line":382},[305,2588,568],{"emptyLinePlaceholder":567},[305,2590,2591],{"class":307,"line":422},[305,2592,2593],{"class":1834},"\u002F\u002F Use specific, descriptive keys\n",[305,2595,2596,2598,2600,2602,2604,2606,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2630,2632,2634,2636],{"class":307,"line":442},[305,2597,594],{"class":311},[305,2599,316],{"class":315},[305,2601,599],{"class":319},[305,2603,323],{"class":311},[305,2605,604],{"class":315},[305,2607,2608],{"class":362}," order",[305,2610,366],{"class":315},[305,2612,359],{"class":315},[305,2614,613],{"class":362},[305,2616,366],{"class":315},[305,2618,2578],{"class":489},[305,2620,356],{"class":315},[305,2622,727],{"class":362},[305,2624,366],{"class":315},[305,2626,409],{"class":315},[305,2628,2629],{"class":329},"pending",[305,2631,326],{"class":315},[305,2633,417],{"class":315},[305,2635,417],{"class":315},[305,2637,335],{"class":311},[1037,2639,2641],{"id":2640},"group-related-data","Group Related Data",[294,2643,2645],{"className":296,"code":2644,"filename":536,"language":299,"meta":300,"style":300},"\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",[302,2646,2647,2652,2664,2674,2690,2702,2714,2720,2724,2729,2741,2771,2795],{"__ignoreMap":300},[305,2648,2649],{"class":307,"line":308},[305,2650,2651],{"class":1834},"\u002F\u002F Flat structure is hard to read\n",[305,2653,2654,2656,2658,2660,2662],{"class":307,"line":338},[305,2655,594],{"class":311},[305,2657,316],{"class":315},[305,2659,599],{"class":319},[305,2661,323],{"class":311},[305,2663,1257],{"class":315},[305,2665,2666,2668,2670,2672],{"class":307,"line":382},[305,2667,2110],{"class":362},[305,2669,366],{"class":315},[305,2671,618],{"class":489},[305,2673,1942],{"class":315},[305,2675,2676,2679,2681,2683,2686,2688],{"class":307,"line":422},[305,2677,2678],{"class":362},"  userEmail",[305,2680,366],{"class":315},[305,2682,409],{"class":315},[305,2684,2685],{"class":329},"a@b.com",[305,2687,326],{"class":315},[305,2689,1942],{"class":315},[305,2691,2692,2695,2697,2700],{"class":307,"line":442},[305,2693,2694],{"class":362},"  cartId",[305,2696,366],{"class":315},[305,2698,2699],{"class":489}," 2",[305,2701,1942],{"class":315},[305,2703,2704,2707,2709,2712],{"class":307,"line":462},[305,2705,2706],{"class":362},"  cartTotal",[305,2708,366],{"class":315},[305,2710,2711],{"class":489}," 100",[305,2713,1942],{"class":315},[305,2715,2716,2718],{"class":307,"line":693},[305,2717,377],{"class":315},[305,2719,335],{"class":311},[305,2721,2722],{"class":307,"line":1189},[305,2723,568],{"emptyLinePlaceholder":567},[305,2725,2726],{"class":307,"line":1218},[305,2727,2728],{"class":1834},"\u002F\u002F Grouped structure is clearer\n",[305,2730,2731,2733,2735,2737,2739],{"class":307,"line":1223},[305,2732,594],{"class":311},[305,2734,316],{"class":315},[305,2736,599],{"class":319},[305,2738,323],{"class":311},[305,2740,1257],{"class":315},[305,2742,2743,2746,2748,2750,2752,2754,2756,2758,2760,2762,2764,2766,2768],{"class":307,"line":1237},[305,2744,2745],{"class":362},"  user",[305,2747,366],{"class":315},[305,2749,359],{"class":315},[305,2751,613],{"class":362},[305,2753,366],{"class":315},[305,2755,618],{"class":489},[305,2757,356],{"class":315},[305,2759,1291],{"class":362},[305,2761,366],{"class":315},[305,2763,409],{"class":315},[305,2765,2685],{"class":329},[305,2767,326],{"class":315},[305,2769,2770],{"class":315}," },\n",[305,2772,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793],{"class":307,"line":1260},[305,2774,2205],{"class":362},[305,2776,366],{"class":315},[305,2778,359],{"class":315},[305,2780,613],{"class":362},[305,2782,366],{"class":315},[305,2784,2699],{"class":489},[305,2786,356],{"class":315},[305,2788,679],{"class":362},[305,2790,366],{"class":315},[305,2792,2711],{"class":489},[305,2794,2770],{"class":315},[305,2796,2797,2799],{"class":307,"line":1320},[305,2798,377],{"class":315},[305,2800,335],{"class":311},[1037,2802,2804],{"id":2803},"add-context-incrementally","Add Context Incrementally",[282,2806,2807,2808,2811],{},"Call ",[302,2809,2810],{},"log.set()"," as you gather information:",[531,2813,2814,3121],{},[294,2815,2817],{"className":296,"code":2816,"filename":536,"language":299,"meta":300,"style":300},"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",[302,2818,2819,2837,2841,2863,2879,2883,2902,2948,2952,2976,3026,3030,3050,3097,3101,3115],{"__ignoreMap":300},[305,2820,2821,2823,2825,2827,2829,2831,2833,2835],{"class":307,"line":308},[305,2822,544],{"class":543},[305,2824,359],{"class":315},[305,2826,549],{"class":311},[305,2828,417],{"class":315},[305,2830,554],{"class":543},[305,2832,409],{"class":315},[305,2834,559],{"class":329},[305,2836,562],{"class":315},[305,2838,2839],{"class":307,"line":338},[305,2840,568],{"emptyLinePlaceholder":567},[305,2842,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861],{"class":307,"line":382},[305,2844,1677],{"class":543},[305,2846,1680],{"class":543},[305,2848,1683],{"class":319},[305,2850,323],{"class":311},[305,2852,1688],{"class":573},[305,2854,1243],{"class":315},[305,2856,1694],{"class":1693},[305,2858,1697],{"class":315},[305,2860,1700],{"class":573},[305,2862,1703],{"class":315},[305,2864,2865,2867,2869,2871,2873,2875,2877],{"class":307,"line":422},[305,2866,1708],{"class":573},[305,2868,1711],{"class":311},[305,2870,1714],{"class":315},[305,2872,549],{"class":319},[305,2874,323],{"class":362},[305,2876,1694],{"class":311},[305,2878,335],{"class":362},[305,2880,2881],{"class":307,"line":442},[305,2882,568],{"emptyLinePlaceholder":567},[305,2884,2885,2887,2889,2891,2893,2896,2898,2900],{"class":307,"line":462},[305,2886,1708],{"class":573},[305,2888,369],{"class":311},[305,2890,1714],{"class":315},[305,2892,1167],{"class":543},[305,2894,2895],{"class":319}," getUser",[305,2897,323],{"class":362},[305,2899,1694],{"class":311},[305,2901,335],{"class":362},[305,2903,2904,2906,2908,2910,2912,2914,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946],{"class":307,"line":693},[305,2905,1731],{"class":311},[305,2907,316],{"class":315},[305,2909,599],{"class":319},[305,2911,323],{"class":362},[305,2913,604],{"class":315},[305,2915,369],{"class":362},[305,2917,366],{"class":315},[305,2919,359],{"class":315},[305,2921,613],{"class":362},[305,2923,366],{"class":315},[305,2925,369],{"class":311},[305,2927,316],{"class":315},[305,2929,1286],{"class":311},[305,2931,356],{"class":315},[305,2933,623],{"class":362},[305,2935,366],{"class":315},[305,2937,369],{"class":311},[305,2939,316],{"class":315},[305,2941,1313],{"class":311},[305,2943,417],{"class":315},[305,2945,417],{"class":315},[305,2947,335],{"class":362},[305,2949,2950],{"class":307,"line":1189},[305,2951,568],{"emptyLinePlaceholder":567},[305,2953,2954,2956,2958,2960,2962,2965,2967,2970,2972,2974],{"class":307,"line":1218},[305,2955,1708],{"class":573},[305,2957,653],{"class":311},[305,2959,1714],{"class":315},[305,2961,1167],{"class":543},[305,2963,2964],{"class":319}," getCart",[305,2966,323],{"class":362},[305,2968,2969],{"class":311},"user",[305,2971,316],{"class":315},[305,2973,1286],{"class":311},[305,2975,335],{"class":362},[305,2977,2978,2980,2982,2984,2986,2988,2990,2992,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024],{"class":307,"line":1223},[305,2979,1731],{"class":311},[305,2981,316],{"class":315},[305,2983,599],{"class":319},[305,2985,323],{"class":362},[305,2987,604],{"class":315},[305,2989,653],{"class":362},[305,2991,366],{"class":315},[305,2993,359],{"class":315},[305,2995,669],{"class":362},[305,2997,366],{"class":315},[305,2999,653],{"class":311},[305,3001,316],{"class":315},[305,3003,2238],{"class":311},[305,3005,316],{"class":315},[305,3007,2243],{"class":311},[305,3009,356],{"class":315},[305,3011,679],{"class":362},[305,3013,366],{"class":315},[305,3015,653],{"class":311},[305,3017,316],{"class":315},[305,3019,2259],{"class":311},[305,3021,417],{"class":315},[305,3023,417],{"class":315},[305,3025,335],{"class":362},[305,3027,3028],{"class":307,"line":1237},[305,3029,568],{"emptyLinePlaceholder":567},[305,3031,3032,3034,3036,3038,3040,3043,3045,3048],{"class":307,"line":1260},[305,3033,1708],{"class":573},[305,3035,706],{"class":311},[305,3037,1714],{"class":315},[305,3039,1167],{"class":543},[305,3041,3042],{"class":319}," processPayment",[305,3044,323],{"class":362},[305,3046,3047],{"class":311},"cart",[305,3049,335],{"class":362},[305,3051,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088,3091,3093,3095],{"class":307,"line":1320},[305,3053,1731],{"class":311},[305,3055,316],{"class":315},[305,3057,599],{"class":319},[305,3059,323],{"class":362},[305,3061,604],{"class":315},[305,3063,706],{"class":362},[305,3065,366],{"class":315},[305,3067,359],{"class":315},[305,3069,713],{"class":362},[305,3071,366],{"class":315},[305,3073,706],{"class":311},[305,3075,316],{"class":315},[305,3077,1400],{"class":311},[305,3079,356],{"class":315},[305,3081,727],{"class":362},[305,3083,366],{"class":315},[305,3085,706],{"class":311},[305,3087,316],{"class":315},[305,3089,3090],{"class":311},"status",[305,3092,417],{"class":315},[305,3094,417],{"class":315},[305,3096,335],{"class":362},[305,3098,3099],{"class":307,"line":1329},[305,3100,568],{"emptyLinePlaceholder":567},[305,3102,3103,3105,3107,3109,3111,3113],{"class":307,"line":1335},[305,3104,1816],{"class":543},[305,3106,359],{"class":315},[305,3108,1821],{"class":362},[305,3110,366],{"class":315},[305,3112,1827],{"class":1826},[305,3114,966],{"class":315},[305,3116,3117,3119],{"class":307,"line":1340},[305,3118,377],{"class":315},[305,3120,335],{"class":311},[294,3122,3124],{"className":916,"code":3123,"filename":918,"language":919,"meta":300,"style":300},"[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",[302,3125,3126,3141,3161,3177,3203],{"__ignoreMap":300},[305,3127,3128,3130,3132,3134,3136,3139],{"class":307,"line":308},[305,3129,926],{"class":315},[305,3131,929],{"class":311},[305,3133,932],{"class":315},[305,3135,935],{"class":311},[305,3137,3138],{"class":938},"456ms",[305,3140,335],{"class":311},[305,3142,3143,3145,3147,3149,3151,3153,3155,3157,3159],{"class":307,"line":338},[305,3144,946],{"class":938},[305,3146,359],{"class":329},[305,3148,951],{"class":329},[305,3150,954],{"class":329},[305,3152,957],{"class":329},[305,3154,409],{"class":315},[305,3156,630],{"class":329},[305,3158,326],{"class":315},[305,3160,966],{"class":329},[305,3162,3163,3165,3167,3169,3171,3173,3175],{"class":307,"line":382},[305,3164,971],{"class":938},[305,3166,359],{"class":329},[305,3168,981],{"class":329},[305,3170,984],{"class":329},[305,3172,987],{"class":329},[305,3174,684],{"class":489},[305,3176,966],{"class":329},[305,3178,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201],{"class":307,"line":422},[305,3180,996],{"class":938},[305,3182,359],{"class":329},[305,3184,1001],{"class":329},[305,3186,409],{"class":315},[305,3188,720],{"class":329},[305,3190,326],{"class":315},[305,3192,356],{"class":329},[305,3194,1012],{"class":329},[305,3196,409],{"class":315},[305,3198,734],{"class":329},[305,3200,326],{"class":315},[305,3202,966],{"class":329},[305,3204,3205,3207],{"class":307,"line":442},[305,3206,1025],{"class":938},[305,3208,1028],{"class":489},[1037,3210,3212],{"id":3211},"handle-errors-gracefully","Handle Errors Gracefully",[282,3214,3215],{},"When errors occur, the wide event still emits with error context:",[531,3217,3218,3444],{},[294,3219,3221],{"className":296,"code":3220,"filename":536,"language":299,"meta":300,"style":300},"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",[302,3222,3223,3241,3245,3267,3283,3287,3294,3314,3322,3340,3353,3362,3377,3392,3411,3416,3423,3431,3437],{"__ignoreMap":300},[305,3224,3225,3227,3229,3231,3233,3235,3237,3239],{"class":307,"line":308},[305,3226,544],{"class":543},[305,3228,359],{"class":315},[305,3230,549],{"class":311},[305,3232,417],{"class":315},[305,3234,554],{"class":543},[305,3236,409],{"class":315},[305,3238,559],{"class":329},[305,3240,562],{"class":315},[305,3242,3243],{"class":307,"line":338},[305,3244,568],{"emptyLinePlaceholder":567},[305,3246,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265],{"class":307,"line":382},[305,3248,1677],{"class":543},[305,3250,1680],{"class":543},[305,3252,1683],{"class":319},[305,3254,323],{"class":311},[305,3256,1688],{"class":573},[305,3258,1243],{"class":315},[305,3260,1694],{"class":1693},[305,3262,1697],{"class":315},[305,3264,1700],{"class":573},[305,3266,1703],{"class":315},[305,3268,3269,3271,3273,3275,3277,3279,3281],{"class":307,"line":422},[305,3270,1708],{"class":573},[305,3272,1711],{"class":311},[305,3274,1714],{"class":315},[305,3276,549],{"class":319},[305,3278,323],{"class":362},[305,3280,1694],{"class":311},[305,3282,335],{"class":362},[305,3284,3285],{"class":307,"line":442},[305,3286,568],{"emptyLinePlaceholder":567},[305,3288,3289,3292],{"class":307,"line":462},[305,3290,3291],{"class":543},"  try",[305,3293,1703],{"class":315},[305,3295,3296,3299,3302,3304,3306,3308,3310,3312],{"class":307,"line":693},[305,3297,3298],{"class":573},"    const",[305,3300,3301],{"class":311}," result",[305,3303,1714],{"class":315},[305,3305,1167],{"class":543},[305,3307,3042],{"class":319},[305,3309,323],{"class":362},[305,3311,3047],{"class":311},[305,3313,335],{"class":362},[305,3315,3316,3319],{"class":307,"line":1189},[305,3317,3318],{"class":543},"    return",[305,3320,3321],{"class":311}," result\n",[305,3323,3324,3327,3330,3332,3335,3338],{"class":307,"line":1218},[305,3325,3326],{"class":315},"  }",[305,3328,3329],{"class":543}," catch",[305,3331,1243],{"class":362},[305,3333,3334],{"class":311},"err",[305,3336,3337],{"class":362},") ",[305,3339,1257],{"class":315},[305,3341,3342,3345,3347,3349,3351],{"class":307,"line":1223},[305,3343,3344],{"class":311},"    log",[305,3346,316],{"class":315},[305,3348,599],{"class":319},[305,3350,323],{"class":362},[305,3352,1257],{"class":315},[305,3354,3355,3358,3360],{"class":307,"line":1237},[305,3356,3357],{"class":362},"      error",[305,3359,366],{"class":315},[305,3361,1703],{"class":315},[305,3363,3364,3367,3369,3371,3373,3375],{"class":307,"line":1260},[305,3365,3366],{"class":362},"        message",[305,3368,366],{"class":315},[305,3370,2481],{"class":311},[305,3372,316],{"class":315},[305,3374,2486],{"class":311},[305,3376,1942],{"class":315},[305,3378,3379,3382,3384,3386,3388,3390],{"class":307,"line":1320},[305,3380,3381],{"class":362},"        code",[305,3383,366],{"class":315},[305,3385,2481],{"class":311},[305,3387,316],{"class":315},[305,3389,302],{"class":311},[305,3391,1942],{"class":315},[305,3393,3394,3397,3399,3401,3403,3405,3407,3409],{"class":307,"line":1329},[305,3395,3396],{"class":362},"        type",[305,3398,366],{"class":315},[305,3400,2481],{"class":311},[305,3402,316],{"class":315},[305,3404,2517],{"class":311},[305,3406,316],{"class":315},[305,3408,2522],{"class":311},[305,3410,1942],{"class":315},[305,3412,3413],{"class":307,"line":1335},[305,3414,3415],{"class":315},"      },\n",[305,3417,3418,3421],{"class":307,"line":1340},[305,3419,3420],{"class":315},"    }",[305,3422,335],{"class":362},[305,3424,3425,3428],{"class":307,"line":1373},[305,3426,3427],{"class":543},"    throw",[305,3429,3430],{"class":311}," err\n",[305,3432,3434],{"class":307,"line":3433},18,[305,3435,3436],{"class":315},"  }\n",[305,3438,3440,3442],{"class":307,"line":3439},19,[305,3441,377],{"class":315},[305,3443,335],{"class":311},[294,3445,3447],{"className":916,"code":3446,"filename":918,"language":919,"meta":300,"style":300},"[ERROR] POST \u002Fapi\u002Fcheckout (123ms)\n  user: { id: 1, plan: 'pro' }\n  cart: { items: 3, total: 9999 }\n  error: {\n    message: 'Card declined',\n    code: 'CARD_DECLINED',\n    type: 'PaymentError'\n  }\n  status: 500\n",[302,3448,3449,3465,3485,3501,3508,3522,3536,3549,3553],{"__ignoreMap":300},[305,3450,3451,3453,3456,3458,3460,3463],{"class":307,"line":308},[305,3452,926],{"class":315},[305,3454,3455],{"class":311},"ERROR",[305,3457,932],{"class":315},[305,3459,935],{"class":311},[305,3461,3462],{"class":938},"123ms",[305,3464,335],{"class":311},[305,3466,3467,3469,3471,3473,3475,3477,3479,3481,3483],{"class":307,"line":338},[305,3468,946],{"class":938},[305,3470,359],{"class":329},[305,3472,951],{"class":329},[305,3474,954],{"class":329},[305,3476,957],{"class":329},[305,3478,409],{"class":315},[305,3480,630],{"class":329},[305,3482,326],{"class":315},[305,3484,966],{"class":329},[305,3486,3487,3489,3491,3493,3495,3497,3499],{"class":307,"line":382},[305,3488,971],{"class":938},[305,3490,359],{"class":329},[305,3492,981],{"class":329},[305,3494,984],{"class":329},[305,3496,987],{"class":329},[305,3498,684],{"class":489},[305,3500,966],{"class":329},[305,3502,3503,3506],{"class":307,"line":422},[305,3504,3505],{"class":938},"  error:",[305,3507,1703],{"class":329},[305,3509,3510,3513,3515,3518,3520],{"class":307,"line":442},[305,3511,3512],{"class":938},"    message:",[305,3514,409],{"class":315},[305,3516,3517],{"class":329},"Card declined",[305,3519,326],{"class":315},[305,3521,1942],{"class":329},[305,3523,3524,3527,3529,3532,3534],{"class":307,"line":462},[305,3525,3526],{"class":938},"    code:",[305,3528,409],{"class":315},[305,3530,3531],{"class":329},"CARD_DECLINED",[305,3533,326],{"class":315},[305,3535,1942],{"class":329},[305,3537,3538,3540,3542,3544,3547],{"class":307,"line":693},[305,3539,2508],{"class":319},[305,3541,366],{"class":329},[305,3543,409],{"class":315},[305,3545,3546],{"class":329},"PaymentError",[305,3548,562],{"class":315},[305,3550,3551],{"class":307,"line":1189},[305,3552,3436],{"class":311},[305,3554,3555,3557],{"class":307,"line":1218},[305,3556,1025],{"class":938},[305,3558,3559],{"class":489}," 500\n",[286,3561,3563],{"id":3562},"output-formats","Output Formats",[282,3565,3566],{},"evlog automatically switches between formats based on environment: pretty in development, JSON in production. This is the default behavior, no configuration needed.",[531,3568,3569,3651],{},[294,3570,3573],{"className":916,"code":3571,"filename":3572,"language":919,"meta":300,"style":300},"[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)",[302,3574,3575,3589,3609,3625],{"__ignoreMap":300},[305,3576,3577,3579,3581,3583,3585,3587],{"class":307,"line":308},[305,3578,926],{"class":315},[305,3580,929],{"class":311},[305,3582,932],{"class":315},[305,3584,935],{"class":311},[305,3586,939],{"class":938},[305,3588,335],{"class":311},[305,3590,3591,3593,3595,3597,3599,3601,3603,3605,3607],{"class":307,"line":338},[305,3592,946],{"class":938},[305,3594,359],{"class":329},[305,3596,951],{"class":329},[305,3598,954],{"class":329},[305,3600,957],{"class":329},[305,3602,409],{"class":315},[305,3604,630],{"class":329},[305,3606,326],{"class":315},[305,3608,966],{"class":329},[305,3610,3611,3613,3615,3617,3619,3621,3623],{"class":307,"line":382},[305,3612,971],{"class":938},[305,3614,359],{"class":329},[305,3616,981],{"class":329},[305,3618,984],{"class":329},[305,3620,987],{"class":329},[305,3622,684],{"class":489},[305,3624,966],{"class":329},[305,3626,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649],{"class":307,"line":422},[305,3628,996],{"class":938},[305,3630,359],{"class":329},[305,3632,1001],{"class":329},[305,3634,409],{"class":315},[305,3636,720],{"class":329},[305,3638,326],{"class":315},[305,3640,356],{"class":329},[305,3642,1012],{"class":329},[305,3644,409],{"class":315},[305,3646,734],{"class":329},[305,3648,326],{"class":315},[305,3650,966],{"class":329},[294,3652,3657],{"className":3653,"code":3654,"filename":3655,"language":3656,"meta":300,"style":300},"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",[302,3658,3659,3663,3685,3703,3721,3736,3776,3812,3857],{"__ignoreMap":300},[305,3660,3661],{"class":307,"line":308},[305,3662,1257],{"class":315},[305,3664,3665,3668,3671,3674,3676,3679,3681,3683],{"class":307,"line":338},[305,3666,3667],{"class":315},"  \"",[305,3669,3670],{"class":573},"level",[305,3672,3673],{"class":315},"\"",[305,3675,366],{"class":315},[305,3677,3678],{"class":315}," \"",[305,3680,320],{"class":329},[305,3682,3673],{"class":315},[305,3684,1942],{"class":315},[305,3686,3687,3689,3691,3693,3695,3697,3699,3701],{"class":307,"line":382},[305,3688,3667],{"class":315},[305,3690,1400],{"class":573},[305,3692,3673],{"class":315},[305,3694,366],{"class":315},[305,3696,3678],{"class":315},[305,3698,1499],{"class":329},[305,3700,3673],{"class":315},[305,3702,1942],{"class":315},[305,3704,3705,3707,3709,3711,3713,3715,3717,3719],{"class":307,"line":422},[305,3706,3667],{"class":315},[305,3708,1404],{"class":573},[305,3710,3673],{"class":315},[305,3712,366],{"class":315},[305,3714,3678],{"class":315},[305,3716,1513],{"class":329},[305,3718,3673],{"class":315},[305,3720,1942],{"class":315},[305,3722,3723,3725,3728,3730,3732,3734],{"class":307,"line":442},[305,3724,3667],{"class":315},[305,3726,3727],{"class":573},"duration",[305,3729,3673],{"class":315},[305,3731,366],{"class":315},[305,3733,490],{"class":489},[305,3735,1942],{"class":315},[305,3737,3738,3740,3742,3744,3746,3748,3750,3752,3754,3756,3758,3760,3762,3764,3766,3768,3770,3772,3774],{"class":307,"line":462},[305,3739,3667],{"class":315},[305,3741,2969],{"class":573},[305,3743,3673],{"class":315},[305,3745,366],{"class":315},[305,3747,359],{"class":315},[305,3749,3678],{"class":315},[305,3751,1286],{"class":938},[305,3753,3673],{"class":315},[305,3755,366],{"class":315},[305,3757,618],{"class":489},[305,3759,356],{"class":315},[305,3761,3678],{"class":315},[305,3763,1313],{"class":938},[305,3765,3673],{"class":315},[305,3767,366],{"class":315},[305,3769,3678],{"class":315},[305,3771,630],{"class":329},[305,3773,3673],{"class":315},[305,3775,2770],{"class":315},[305,3777,3778,3780,3782,3784,3786,3788,3790,3792,3794,3796,3798,3800,3802,3804,3806,3808,3810],{"class":307,"line":693},[305,3779,3667],{"class":315},[305,3781,3047],{"class":573},[305,3783,3673],{"class":315},[305,3785,366],{"class":315},[305,3787,359],{"class":315},[305,3789,3678],{"class":315},[305,3791,2238],{"class":938},[305,3793,3673],{"class":315},[305,3795,366],{"class":315},[305,3797,674],{"class":489},[305,3799,356],{"class":315},[305,3801,3678],{"class":315},[305,3803,2259],{"class":938},[305,3805,3673],{"class":315},[305,3807,366],{"class":315},[305,3809,684],{"class":489},[305,3811,2770],{"class":315},[305,3813,3814,3816,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855],{"class":307,"line":1189},[305,3815,3667],{"class":315},[305,3817,3818],{"class":573},"payment",[305,3820,3673],{"class":315},[305,3822,366],{"class":315},[305,3824,359],{"class":315},[305,3826,3678],{"class":315},[305,3828,1400],{"class":938},[305,3830,3673],{"class":315},[305,3832,366],{"class":315},[305,3834,3678],{"class":315},[305,3836,720],{"class":329},[305,3838,3673],{"class":315},[305,3840,356],{"class":315},[305,3842,3678],{"class":315},[305,3844,3090],{"class":938},[305,3846,3673],{"class":315},[305,3848,366],{"class":315},[305,3850,3678],{"class":315},[305,3852,734],{"class":329},[305,3854,3673],{"class":315},[305,3856,966],{"class":315},[305,3858,3859],{"class":307,"line":1218},[305,3860,1332],{"class":315},[286,3862,3864],{"id":3863},"next-steps","Next Steps",[499,3866,3867,3873,3878,3883],{},[502,3868,3869,3872],{},[3870,3871,41],"a",{"href":42}," - Fire-and-forget logs when you don't need context accumulation",[502,3874,3875,3877],{},[3870,3876,86],{"href":87}," - Add compile-time type safety to your wide events",[502,3879,3880,3882],{},[3870,3881,51],{"href":52}," - Errors with actionable context",[502,3884,3885,3887],{},[3870,3886,106],{"href":111}," - Auto-managed request logging per framework",[3889,3890,3891],"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":300,"searchDepth":338,"depth":338,"links":3893},[3894,3895,3903,3909,3915,3916],{"id":288,"depth":338,"text":289},{"id":1034,"depth":338,"text":1035,"children":3896},[3897,3899,3901],{"id":1039,"depth":382,"text":3898},"createLogger (General Purpose)",{"id":1384,"depth":382,"text":3900},"createRequestLogger (HTTP Contexts)",{"id":1634,"depth":382,"text":3902},"useLogger (Retrieving the Request Logger)",{"id":1852,"depth":338,"text":1853,"children":3904},[3905,3906,3907,3908],{"id":1869,"depth":382,"text":1870},{"id":2084,"depth":382,"text":2085},{"id":2179,"depth":382,"text":2180},{"id":2354,"depth":382,"text":2355},{"id":2537,"depth":338,"text":91,"children":3910},[3911,3912,3913,3914],{"id":2540,"depth":382,"text":2541},{"id":2640,"depth":382,"text":2641},{"id":2803,"depth":382,"text":2804},{"id":3211,"depth":382,"text":3212},{"id":3562,"depth":338,"text":3563},{"id":3863,"depth":338,"text":3864},"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",[3920,3923],{"label":51,"icon":54,"to":52,"color":3921,"variant":3922},"neutral","subtle",{"label":91,"icon":94,"to":92,"color":3921,"variant":3922},{},{"icon":49},{"title":46,"description":3917},"NUuz-w63wlMmQLlO6YhEPbr_qijmEvx5DoGG1Ew_Jx4",[3929,3931],{"title":41,"path":42,"stem":43,"description":3930,"icon":44,"children":-1},"Structured logging for everyday use. Replace console.log with log.info, log.error, log.warn, and log.debug. Fire-and-forget events with pretty output in dev and JSON in production.",{"title":51,"path":52,"stem":53,"description":3932,"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.",1775288554358]