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