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