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