[{"data":1,"prerenderedAt":4268},["ShallowReactive",2],{"navigation_docs":3,"-logging-wide-events":297,"-logging-wide-events-surround":4263},[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":4252,"extension":4253,"links":4254,"meta":4259,"navigation":4260,"path":47,"seo":4261,"stem":48,"__hash__":4262},"docs\u002F2.logging\u002F2.wide-events.md",{"type":300,"value":301,"toc":4224},"minimark",[302,306,311,314,516,519,548,551,1050,1053,1057,1065,1072,1403,1410,1430,1639,1653,1660,1667,1863,1871,1875,1923,1942,1948,1977,2002,2009,2025,2183,2187,2200,2204,2207,2405,2415,2419,2422,2510,2514,2517,2684,2688,2691,2867,2870,2874,2970,2974,3133,3137,3144,3541,3545,3548,3892,3896,3899,4193,4197,4220],[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},"after-emit-sealing-and-background-work","After emit: sealing and background work",[303,1876,1877,1878,1881,1882,1884,1885,1888,1889,1422,1891,1422,1894,1426,1896,1899,1900,1903,1904,1910,1911,1914,1915,1918,1919,1922],{},"When the wide event is ",[526,1879,1880],{},"emitted"," (automatically at the end of the request, or when you call ",[323,1883,1651],{}," yourself), that logger instance is ",[526,1886,1887],{},"sealed",". Further ",[323,1890,620],{},[323,1892,1893],{},"error",[323,1895,341],{},[323,1897,1898],{},"warn"," calls do ",[526,1901,1902],{},"not"," update the event that was already sent to your drains. They are ignored and evlog prints a ",[526,1905,1906,1909],{},[323,1907,1908],{},"[evlog]"," warning"," to the console with the keys that were dropped. This also applies when ",[526,1912,1913],{},"head sampling"," discards the event (",[323,1916,1917],{},"emit()"," returned ",[323,1920,1921],{},"null","): the logger is still sealed for that unit of work.",[303,1924,1925,1926,1929,1930,1933,1934,1937,1938,1941],{},"This matters for ",[526,1927,1928],{},"async work that outlives the handler"," (fire-and-forget promises, ",[323,1931,1932],{},"setTimeout",", tasks started but not awaited). On many runtimes, ",[323,1935,1936],{},"AsyncLocalStorage"," keeps returning the same request logger, so ",[323,1939,1940],{},"useLogger()"," still succeeds even though the HTTP response — and the wide event — are already finished. Without warnings, that looks like silent data loss.",[1058,1943,1945],{"id":1944},"logforklabel-fn",[323,1946,1947],{},"log.fork(label, fn)",[303,1949,1950,1951,1954,1955,1959,1960,1963,1964,1422,1967,1969,1970,1973,1974,1976],{},"For intentional background work that should produce ",[526,1952,1953],{},"its own"," wide event, use ",[526,1956,1957],{},[323,1958,1947],{}," when your integration provides it (Express, Fastify, NestJS, SvelteKit, React Router, Next.js ",[323,1961,1962],{},"withEvlog",", Elysia). Inside ",[323,1965,1966],{},"fn",[323,1968,1940],{}," resolves to a ",[526,1971,1972],{},"child"," logger. When ",[323,1975,1966],{}," completes (or throws), the child emits an event with:",[520,1978,1979,1991],{},[523,1980,1981,1986,1987,1990],{},[526,1982,1983],{},[323,1984,1985],{},"operation",": the ",[323,1988,1989],{},"label"," you passed",[523,1992,1993,1998,1999,2001],{},[526,1994,1995],{},[323,1996,1997],{},"_parentRequestId",": the parent request’s ",[323,2000,1429],{}," (for correlation in queries and dashboards)",[303,2003,2004,2005,2008],{},"The parent wide event may be emitted ",[526,2006,2007],{},"before"," the child event; they are two separate events ordered by time.",[303,2010,2011,2014,2015,2017,2018,2021,2022,2024],{},[526,2012,2013],{},"Not available yet:"," Hono (no ",[323,2016,1658],{}," without ",[323,2019,2020],{},"c.get('log')"," + ALS) and Nitro\u002FNuxt ",[323,2023,1665],{}," — use the post-emit warnings to catch mistakes; a different API may arrive later for event-scoped forks.",[315,2026,2029],{"className":317,"code":2027,"filename":2028,"language":320,"meta":321,"style":321},"import { evlog, useLogger } from 'evlog\u002Fexpress'\n\n\u002F\u002F Inside a route after evlog middleware:\nconst log = req.log\nlog.set({ order_dispatched: true })\n\nlog.fork?.('process_order', async () => {\n  const child = useLogger()\n  child.set({ inventory_checked: true })\n})\n","server\u002Froutes\u002Fcheckout.post.ts",[323,2030,2031,2055,2059,2064,2080,2103,2107,2140,2153,2177],{"__ignoreMap":321},[326,2032,2033,2035,2037,2040,2042,2044,2046,2048,2050,2053],{"class":328,"line":329},[326,2034,565],{"class":564},[326,2036,380],{"class":336},[326,2038,2039],{"class":332}," evlog",[326,2041,377],{"class":336},[326,2043,570],{"class":332},[326,2045,438],{"class":336},[326,2047,575],{"class":564},[326,2049,430],{"class":336},[326,2051,2052],{"class":350},"evlog\u002Fexpress",[326,2054,583],{"class":336},[326,2056,2057],{"class":328,"line":359},[326,2058,589],{"emptyLinePlaceholder":588},[326,2060,2061],{"class":328,"line":403},[326,2062,2063],{"class":1855},"\u002F\u002F Inside a route after evlog middleware:\n",[326,2065,2066,2068,2070,2072,2075,2077],{"class":328,"line":443},[326,2067,595],{"class":594},[326,2069,598],{"class":332},[326,2071,601],{"class":336},[326,2073,2074],{"class":332}," req",[326,2076,337],{"class":336},[326,2078,2079],{"class":332},"log\n",[326,2081,2082,2084,2086,2088,2090,2092,2095,2097,2099,2101],{"class":328,"line":463},[326,2083,615],{"class":332},[326,2085,337],{"class":336},[326,2087,620],{"class":340},[326,2089,344],{"class":332},[326,2091,625],{"class":336},[326,2093,2094],{"class":383}," order_dispatched",[326,2096,387],{"class":336},[326,2098,1848],{"class":1847},[326,2100,438],{"class":336},[326,2102,356],{"class":332},[326,2104,2105],{"class":328,"line":483},[326,2106,589],{"emptyLinePlaceholder":588},[326,2108,2109,2111,2113,2116,2119,2121,2123,2126,2128,2130,2133,2136,2138],{"class":328,"line":714},[326,2110,615],{"class":332},[326,2112,337],{"class":336},[326,2114,2115],{"class":340},"fork",[326,2117,2118],{"class":336},"?.",[326,2120,344],{"class":332},[326,2122,347],{"class":336},[326,2124,2125],{"class":350},"process_order",[326,2127,347],{"class":336},[326,2129,377],{"class":336},[326,2131,2132],{"class":594}," async",[326,2134,2135],{"class":336}," ()",[326,2137,1721],{"class":594},[326,2139,1724],{"class":336},[326,2141,2142,2144,2147,2149,2151],{"class":328,"line":1210},[326,2143,1729],{"class":594},[326,2145,2146],{"class":332}," child",[326,2148,1735],{"class":336},[326,2150,570],{"class":340},[326,2152,934],{"class":383},[326,2154,2155,2158,2160,2162,2164,2166,2169,2171,2173,2175],{"class":328,"line":1239},[326,2156,2157],{"class":332},"  child",[326,2159,337],{"class":336},[326,2161,620],{"class":340},[326,2163,344],{"class":383},[326,2165,625],{"class":336},[326,2167,2168],{"class":383}," inventory_checked",[326,2170,387],{"class":336},[326,2172,1848],{"class":1847},[326,2174,438],{"class":336},[326,2176,356],{"class":383},[326,2178,2179,2181],{"class":328,"line":1244},[326,2180,398],{"class":336},[326,2182,356],{"class":332},[307,2184,2186],{"id":2185},"anatomy-of-a-wide-event","Anatomy of a Wide Event",[303,2188,2189,2190,2192,2193,1422,2195,2197,2198,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,2191,615],{}," is already created via ",[323,2194,1063],{},[323,2196,1408],{},", or ",[323,2199,1658],{},[1058,2201,2203],{"id":2202},"operation-context","Operation Context",[303,2205,2206],{},"Basic information about the operation:",[552,2208,2209,2313],{},[315,2210,2212],{"className":317,"code":2211,"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,2213,2214,2232,2236,2248,2260,2276,2291,2307],{"__ignoreMap":321},[326,2215,2216,2218,2220,2222,2224,2226,2228,2230],{"class":328,"line":329},[326,2217,565],{"class":564},[326,2219,380],{"class":336},[326,2221,570],{"class":332},[326,2223,438],{"class":336},[326,2225,575],{"class":564},[326,2227,430],{"class":336},[326,2229,580],{"class":350},[326,2231,583],{"class":336},[326,2233,2234],{"class":328,"line":359},[326,2235,589],{"emptyLinePlaceholder":588},[326,2237,2238,2240,2242,2244,2246],{"class":328,"line":403},[326,2239,595],{"class":594},[326,2241,598],{"class":332},[326,2243,601],{"class":336},[326,2245,570],{"class":340},[326,2247,606],{"class":332},[326,2249,2250,2252,2254,2256,2258],{"class":328,"line":443},[326,2251,615],{"class":332},[326,2253,337],{"class":336},[326,2255,620],{"class":340},[326,2257,344],{"class":332},[326,2259,1278],{"class":336},[326,2261,2262,2265,2267,2269,2271,2273],{"class":328,"line":463},[326,2263,2264],{"class":383},"  method",[326,2266,387],{"class":336},[326,2268,430],{"class":336},[326,2270,1520],{"class":350},[326,2272,347],{"class":336},[326,2274,2275],{"class":336},",\n",[326,2277,2278,2281,2283,2285,2287,2289],{"class":328,"line":483},[326,2279,2280],{"class":383},"  path",[326,2282,387],{"class":336},[326,2284,430],{"class":336},[326,2286,1534],{"class":350},[326,2288,347],{"class":336},[326,2290,2275],{"class":336},[326,2292,2293,2296,2298,2300,2303,2305],{"class":328,"line":714},[326,2294,2295],{"class":383},"  requestId",[326,2297,387],{"class":336},[326,2299,430],{"class":336},[326,2301,2302],{"class":350},"abc-123-def",[326,2304,347],{"class":336},[326,2306,2275],{"class":336},[326,2308,2309,2311],{"class":328,"line":1210},[326,2310,398],{"class":336},[326,2312,356],{"class":332},[315,2314,2316],{"className":317,"code":2315,"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,2317,2318,2336,2340,2354,2369,2384,2399],{"__ignoreMap":321},[326,2319,2320,2322,2324,2326,2328,2330,2332,2334],{"class":328,"line":329},[326,2321,565],{"class":564},[326,2323,380],{"class":336},[326,2325,778],{"class":332},[326,2327,438],{"class":336},[326,2329,575],{"class":564},[326,2331,430],{"class":336},[326,2333,580],{"class":350},[326,2335,583],{"class":336},[326,2337,2338],{"class":328,"line":359},[326,2339,589],{"emptyLinePlaceholder":588},[326,2341,2342,2344,2346,2348,2350,2352],{"class":328,"line":403},[326,2343,595],{"class":594},[326,2345,598],{"class":332},[326,2347,601],{"class":336},[326,2349,778],{"class":340},[326,2351,344],{"class":332},[326,2353,1278],{"class":336},[326,2355,2356,2359,2361,2363,2365,2367],{"class":328,"line":443},[326,2357,2358],{"class":383},"  jobId",[326,2360,387],{"class":336},[326,2362,430],{"class":336},[326,2364,816],{"class":350},[326,2366,347],{"class":336},[326,2368,2275],{"class":336},[326,2370,2371,2374,2376,2378,2380,2382],{"class":328,"line":463},[326,2372,2373],{"class":383},"  queue",[326,2375,387],{"class":336},[326,2377,430],{"class":336},[326,2379,830],{"class":350},[326,2381,347],{"class":336},[326,2383,2275],{"class":336},[326,2385,2386,2389,2391,2393,2395,2397],{"class":328,"line":483},[326,2387,2388],{"class":383},"  source",[326,2390,387],{"class":336},[326,2392,430],{"class":336},[326,2394,433],{"class":350},[326,2396,347],{"class":336},[326,2398,2275],{"class":336},[326,2400,2401,2403],{"class":328,"line":714},[326,2402,398],{"class":336},[326,2404,356],{"class":332},[1640,2406,2407,2408,1422,2410,1422,2412,2414],{"color":341,"icon":13},"In framework integrations, request context (",[323,2409,1421],{},[323,2411,1425],{},[323,2413,1429],{},") is auto-populated by the middleware. You don't need to set these fields manually.",[1058,2416,2418],{"id":2417},"user-actor-context","User \u002F Actor Context",[303,2420,2421],{},"Who triggered the operation:",[315,2423,2425],{"className":317,"code":2424,"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,2426,2427,2439,2454,2469,2484,2504],{"__ignoreMap":321},[326,2428,2429,2431,2433,2435,2437],{"class":328,"line":329},[326,2430,615],{"class":332},[326,2432,337],{"class":336},[326,2434,620],{"class":340},[326,2436,344],{"class":332},[326,2438,1278],{"class":336},[326,2440,2441,2444,2446,2448,2450,2452],{"class":328,"line":359},[326,2442,2443],{"class":383},"  userId",[326,2445,387],{"class":336},[326,2447,390],{"class":332},[326,2449,337],{"class":336},[326,2451,1307],{"class":332},[326,2453,2275],{"class":336},[326,2455,2456,2459,2461,2463,2465,2467],{"class":328,"line":403},[326,2457,2458],{"class":383},"  email",[326,2460,387],{"class":336},[326,2462,390],{"class":332},[326,2464,337],{"class":336},[326,2466,1321],{"class":332},[326,2468,2275],{"class":336},[326,2470,2471,2474,2476,2478,2480,2482],{"class":328,"line":443},[326,2472,2473],{"class":383},"  subscription",[326,2475,387],{"class":336},[326,2477,390],{"class":332},[326,2479,337],{"class":336},[326,2481,1334],{"class":332},[326,2483,2275],{"class":336},[326,2485,2486,2489,2491,2494,2497,2499,2502],{"class":328,"line":463},[326,2487,2488],{"class":383},"  accountAge",[326,2490,387],{"class":336},[326,2492,2493],{"class":340}," daysSince",[326,2495,2496],{"class":332},"(user",[326,2498,337],{"class":336},[326,2500,2501],{"class":332},"createdAt)",[326,2503,2275],{"class":336},[326,2505,2506,2508],{"class":328,"line":483},[326,2507,398],{"class":336},[326,2509,356],{"class":332},[1058,2511,2513],{"id":2512},"business-context","Business Context",[303,2515,2516],{},"Domain-specific data relevant to the operation:",[315,2518,2520],{"className":317,"code":2519,"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,2521,2522,2534,2543,2558,2579,2595,2611,2616,2625,2641,2658,2662,2678],{"__ignoreMap":321},[326,2523,2524,2526,2528,2530,2532],{"class":328,"line":329},[326,2525,615],{"class":332},[326,2527,337],{"class":336},[326,2529,620],{"class":340},[326,2531,344],{"class":332},[326,2533,1278],{"class":336},[326,2535,2536,2539,2541],{"class":328,"line":359},[326,2537,2538],{"class":383},"  cart",[326,2540,387],{"class":336},[326,2542,1724],{"class":336},[326,2544,2545,2548,2550,2552,2554,2556],{"class":328,"line":403},[326,2546,2547],{"class":383},"    id",[326,2549,387],{"class":336},[326,2551,674],{"class":332},[326,2553,337],{"class":336},[326,2555,1307],{"class":332},[326,2557,2275],{"class":336},[326,2559,2560,2563,2565,2567,2569,2572,2574,2577],{"class":328,"line":443},[326,2561,2562],{"class":383},"    items",[326,2564,387],{"class":336},[326,2566,674],{"class":332},[326,2568,337],{"class":336},[326,2570,2571],{"class":332},"items",[326,2573,337],{"class":336},[326,2575,2576],{"class":332},"length",[326,2578,2275],{"class":336},[326,2580,2581,2584,2586,2588,2590,2593],{"class":328,"line":463},[326,2582,2583],{"class":383},"    total",[326,2585,387],{"class":336},[326,2587,674],{"class":332},[326,2589,337],{"class":336},[326,2591,2592],{"class":332},"total",[326,2594,2275],{"class":336},[326,2596,2597,2600,2602,2604,2607,2609],{"class":328,"line":483},[326,2598,2599],{"class":383},"    currency",[326,2601,387],{"class":336},[326,2603,430],{"class":336},[326,2605,2606],{"class":350},"USD",[326,2608,347],{"class":336},[326,2610,2275],{"class":336},[326,2612,2613],{"class":328,"line":714},[326,2614,2615],{"class":336},"  },\n",[326,2617,2618,2621,2623],{"class":328,"line":1210},[326,2619,2620],{"class":383},"  shipping",[326,2622,387],{"class":336},[326,2624,1724],{"class":336},[326,2626,2627,2630,2632,2634,2637,2639],{"class":328,"line":1239},[326,2628,2629],{"class":383},"    method",[326,2631,387],{"class":336},[326,2633,430],{"class":336},[326,2635,2636],{"class":350},"express",[326,2638,347],{"class":336},[326,2640,2275],{"class":336},[326,2642,2643,2646,2648,2651,2653,2656],{"class":328,"line":1244},[326,2644,2645],{"class":383},"    country",[326,2647,387],{"class":336},[326,2649,2650],{"class":332}," address",[326,2652,337],{"class":336},[326,2654,2655],{"class":332},"country",[326,2657,2275],{"class":336},[326,2659,2660],{"class":328,"line":1258},[326,2661,2615],{"class":336},[326,2663,2664,2667,2669,2672,2674,2676],{"class":328,"line":1281},[326,2665,2666],{"class":383},"  coupon",[326,2668,387],{"class":336},[326,2670,2671],{"class":332}," appliedCoupon",[326,2673,2118],{"class":336},[326,2675,323],{"class":332},[326,2677,2275],{"class":336},[326,2679,2680,2682],{"class":328,"line":1341},[326,2681,398],{"class":336},[326,2683,356],{"class":332},[1058,2685,2687],{"id":2686},"outcome","Outcome",[303,2689,2690],{},"The result of the operation:",[552,2692,2693,2766],{},[315,2694,2697],{"className":317,"code":2695,"filename":2696,"language":320,"meta":321,"style":321},"log.set({\n  status: 200,\n  duration: Date.now() - startTime,\n  success: true,\n})\n","Success",[323,2698,2699,2711,2723,2749,2760],{"__ignoreMap":321},[326,2700,2701,2703,2705,2707,2709],{"class":328,"line":329},[326,2702,615],{"class":332},[326,2704,337],{"class":336},[326,2706,620],{"class":340},[326,2708,344],{"class":332},[326,2710,1278],{"class":336},[326,2712,2713,2716,2718,2721],{"class":328,"line":359},[326,2714,2715],{"class":383},"  status",[326,2717,387],{"class":336},[326,2719,2720],{"class":510}," 200",[326,2722,2275],{"class":336},[326,2724,2725,2728,2730,2733,2735,2738,2741,2744,2747],{"class":328,"line":403},[326,2726,2727],{"class":383},"  duration",[326,2729,387],{"class":336},[326,2731,2732],{"class":332}," Date",[326,2734,337],{"class":336},[326,2736,2737],{"class":340},"now",[326,2739,2740],{"class":332},"() ",[326,2742,2743],{"class":336},"-",[326,2745,2746],{"class":332}," startTime",[326,2748,2275],{"class":336},[326,2750,2751,2754,2756,2758],{"class":328,"line":443},[326,2752,2753],{"class":383},"  success",[326,2755,387],{"class":336},[326,2757,1848],{"class":1847},[326,2759,2275],{"class":336},[326,2761,2762,2764],{"class":328,"line":463},[326,2763,398],{"class":336},[326,2765,356],{"class":332},[315,2767,2770],{"className":317,"code":2768,"filename":2769,"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,2771,2772,2784,2795,2804,2821,2836,2857,2861],{"__ignoreMap":321},[326,2773,2774,2776,2778,2780,2782],{"class":328,"line":329},[326,2775,615],{"class":332},[326,2777,337],{"class":336},[326,2779,620],{"class":340},[326,2781,344],{"class":332},[326,2783,1278],{"class":336},[326,2785,2786,2788,2790,2793],{"class":328,"line":359},[326,2787,2715],{"class":383},[326,2789,387],{"class":336},[326,2791,2792],{"class":510}," 500",[326,2794,2275],{"class":336},[326,2796,2797,2800,2802],{"class":328,"line":403},[326,2798,2799],{"class":383},"  error",[326,2801,387],{"class":336},[326,2803,1724],{"class":336},[326,2805,2806,2809,2811,2814,2816,2819],{"class":328,"line":443},[326,2807,2808],{"class":383},"    message",[326,2810,387],{"class":336},[326,2812,2813],{"class":332}," err",[326,2815,337],{"class":336},[326,2817,2818],{"class":332},"message",[326,2820,2275],{"class":336},[326,2822,2823,2826,2828,2830,2832,2834],{"class":328,"line":463},[326,2824,2825],{"class":383},"    code",[326,2827,387],{"class":336},[326,2829,2813],{"class":332},[326,2831,337],{"class":336},[326,2833,323],{"class":332},[326,2835,2275],{"class":336},[326,2837,2838,2841,2843,2845,2847,2850,2852,2855],{"class":328,"line":483},[326,2839,2840],{"class":383},"    type",[326,2842,387],{"class":336},[326,2844,2813],{"class":332},[326,2846,337],{"class":336},[326,2848,2849],{"class":332},"constructor",[326,2851,337],{"class":336},[326,2853,2854],{"class":332},"name",[326,2856,2275],{"class":336},[326,2858,2859],{"class":328,"line":714},[326,2860,2615],{"class":336},[326,2862,2863,2865],{"class":328,"line":1210},[326,2864,398],{"class":336},[326,2866,356],{"class":332},[307,2868,96],{"id":2869},"best-practices",[1058,2871,2873],{"id":2872},"use-meaningful-keys","Use Meaningful Keys",[315,2875,2878],{"className":317,"code":2876,"filename":2877,"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,2879,2880,2885,2917,2921,2926],{"__ignoreMap":321},[326,2881,2882],{"class":328,"line":329},[326,2883,2884],{"class":1855},"\u002F\u002F Avoid generic keys\n",[326,2886,2887,2889,2891,2893,2895,2897,2900,2902,2904,2906,2908,2911,2913,2915],{"class":328,"line":359},[326,2888,615],{"class":332},[326,2890,337],{"class":336},[326,2892,620],{"class":340},[326,2894,344],{"class":332},[326,2896,625],{"class":336},[326,2898,2899],{"class":383}," data",[326,2901,387],{"class":336},[326,2903,380],{"class":336},[326,2905,634],{"class":383},[326,2907,387],{"class":336},[326,2909,2910],{"class":510}," 123",[326,2912,438],{"class":336},[326,2914,438],{"class":336},[326,2916,356],{"class":332},[326,2918,2919],{"class":328,"line":403},[326,2920,589],{"emptyLinePlaceholder":588},[326,2922,2923],{"class":328,"line":443},[326,2924,2925],{"class":1855},"\u002F\u002F Use specific, descriptive keys\n",[326,2927,2928,2930,2932,2934,2936,2938,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2962,2964,2966,2968],{"class":328,"line":463},[326,2929,615],{"class":332},[326,2931,337],{"class":336},[326,2933,620],{"class":340},[326,2935,344],{"class":332},[326,2937,625],{"class":336},[326,2939,2940],{"class":383}," order",[326,2942,387],{"class":336},[326,2944,380],{"class":336},[326,2946,634],{"class":383},[326,2948,387],{"class":336},[326,2950,2910],{"class":510},[326,2952,377],{"class":336},[326,2954,748],{"class":383},[326,2956,387],{"class":336},[326,2958,430],{"class":336},[326,2960,2961],{"class":350},"pending",[326,2963,347],{"class":336},[326,2965,438],{"class":336},[326,2967,438],{"class":336},[326,2969,356],{"class":332},[1058,2971,2973],{"id":2972},"group-related-data","Group Related Data",[315,2975,2977],{"className":317,"code":2976,"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,2978,2979,2984,2996,3006,3022,3034,3046,3052,3056,3061,3073,3103,3127],{"__ignoreMap":321},[326,2980,2981],{"class":328,"line":329},[326,2982,2983],{"class":1855},"\u002F\u002F Flat structure is hard to read\n",[326,2985,2986,2988,2990,2992,2994],{"class":328,"line":359},[326,2987,615],{"class":332},[326,2989,337],{"class":336},[326,2991,620],{"class":340},[326,2993,344],{"class":332},[326,2995,1278],{"class":336},[326,2997,2998,3000,3002,3004],{"class":328,"line":403},[326,2999,2443],{"class":383},[326,3001,387],{"class":336},[326,3003,639],{"class":510},[326,3005,2275],{"class":336},[326,3007,3008,3011,3013,3015,3018,3020],{"class":328,"line":443},[326,3009,3010],{"class":383},"  userEmail",[326,3012,387],{"class":336},[326,3014,430],{"class":336},[326,3016,3017],{"class":350},"a@b.com",[326,3019,347],{"class":336},[326,3021,2275],{"class":336},[326,3023,3024,3027,3029,3032],{"class":328,"line":463},[326,3025,3026],{"class":383},"  cartId",[326,3028,387],{"class":336},[326,3030,3031],{"class":510}," 2",[326,3033,2275],{"class":336},[326,3035,3036,3039,3041,3044],{"class":328,"line":483},[326,3037,3038],{"class":383},"  cartTotal",[326,3040,387],{"class":336},[326,3042,3043],{"class":510}," 100",[326,3045,2275],{"class":336},[326,3047,3048,3050],{"class":328,"line":714},[326,3049,398],{"class":336},[326,3051,356],{"class":332},[326,3053,3054],{"class":328,"line":1210},[326,3055,589],{"emptyLinePlaceholder":588},[326,3057,3058],{"class":328,"line":1239},[326,3059,3060],{"class":1855},"\u002F\u002F Grouped structure is clearer\n",[326,3062,3063,3065,3067,3069,3071],{"class":328,"line":1244},[326,3064,615],{"class":332},[326,3066,337],{"class":336},[326,3068,620],{"class":340},[326,3070,344],{"class":332},[326,3072,1278],{"class":336},[326,3074,3075,3078,3080,3082,3084,3086,3088,3090,3092,3094,3096,3098,3100],{"class":328,"line":1258},[326,3076,3077],{"class":383},"  user",[326,3079,387],{"class":336},[326,3081,380],{"class":336},[326,3083,634],{"class":383},[326,3085,387],{"class":336},[326,3087,639],{"class":510},[326,3089,377],{"class":336},[326,3091,1312],{"class":383},[326,3093,387],{"class":336},[326,3095,430],{"class":336},[326,3097,3017],{"class":350},[326,3099,347],{"class":336},[326,3101,3102],{"class":336}," },\n",[326,3104,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125],{"class":328,"line":1281},[326,3106,2538],{"class":383},[326,3108,387],{"class":336},[326,3110,380],{"class":336},[326,3112,634],{"class":383},[326,3114,387],{"class":336},[326,3116,3031],{"class":510},[326,3118,377],{"class":336},[326,3120,700],{"class":383},[326,3122,387],{"class":336},[326,3124,3043],{"class":510},[326,3126,3102],{"class":336},[326,3128,3129,3131],{"class":328,"line":1341},[326,3130,398],{"class":336},[326,3132,356],{"class":332},[1058,3134,3136],{"id":3135},"add-context-incrementally","Add Context Incrementally",[303,3138,3139,3140,3143],{},"Call ",[323,3141,3142],{},"log.set()"," as you gather information:",[552,3145,3146,3453],{},[315,3147,3149],{"className":317,"code":3148,"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,3150,3151,3169,3173,3195,3211,3215,3234,3280,3284,3308,3358,3362,3382,3429,3433,3447],{"__ignoreMap":321},[326,3152,3153,3155,3157,3159,3161,3163,3165,3167],{"class":328,"line":329},[326,3154,565],{"class":564},[326,3156,380],{"class":336},[326,3158,570],{"class":332},[326,3160,438],{"class":336},[326,3162,575],{"class":564},[326,3164,430],{"class":336},[326,3166,580],{"class":350},[326,3168,583],{"class":336},[326,3170,3171],{"class":328,"line":359},[326,3172,589],{"emptyLinePlaceholder":588},[326,3174,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193],{"class":328,"line":403},[326,3176,1698],{"class":564},[326,3178,1701],{"class":564},[326,3180,1704],{"class":340},[326,3182,344],{"class":332},[326,3184,1709],{"class":594},[326,3186,1264],{"class":336},[326,3188,1715],{"class":1714},[326,3190,1718],{"class":336},[326,3192,1721],{"class":594},[326,3194,1724],{"class":336},[326,3196,3197,3199,3201,3203,3205,3207,3209],{"class":328,"line":443},[326,3198,1729],{"class":594},[326,3200,1732],{"class":332},[326,3202,1735],{"class":336},[326,3204,570],{"class":340},[326,3206,344],{"class":383},[326,3208,1715],{"class":332},[326,3210,356],{"class":383},[326,3212,3213],{"class":328,"line":463},[326,3214,589],{"emptyLinePlaceholder":588},[326,3216,3217,3219,3221,3223,3225,3228,3230,3232],{"class":328,"line":483},[326,3218,1729],{"class":594},[326,3220,390],{"class":332},[326,3222,1735],{"class":336},[326,3224,1188],{"class":564},[326,3226,3227],{"class":340}," getUser",[326,3229,344],{"class":383},[326,3231,1715],{"class":332},[326,3233,356],{"class":383},[326,3235,3236,3238,3240,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278],{"class":328,"line":714},[326,3237,1752],{"class":332},[326,3239,337],{"class":336},[326,3241,620],{"class":340},[326,3243,344],{"class":383},[326,3245,625],{"class":336},[326,3247,390],{"class":383},[326,3249,387],{"class":336},[326,3251,380],{"class":336},[326,3253,634],{"class":383},[326,3255,387],{"class":336},[326,3257,390],{"class":332},[326,3259,337],{"class":336},[326,3261,1307],{"class":332},[326,3263,377],{"class":336},[326,3265,644],{"class":383},[326,3267,387],{"class":336},[326,3269,390],{"class":332},[326,3271,337],{"class":336},[326,3273,1334],{"class":332},[326,3275,438],{"class":336},[326,3277,438],{"class":336},[326,3279,356],{"class":383},[326,3281,3282],{"class":328,"line":1210},[326,3283,589],{"emptyLinePlaceholder":588},[326,3285,3286,3288,3290,3292,3294,3297,3299,3302,3304,3306],{"class":328,"line":1239},[326,3287,1729],{"class":594},[326,3289,674],{"class":332},[326,3291,1735],{"class":336},[326,3293,1188],{"class":564},[326,3295,3296],{"class":340}," getCart",[326,3298,344],{"class":383},[326,3300,3301],{"class":332},"user",[326,3303,337],{"class":336},[326,3305,1307],{"class":332},[326,3307,356],{"class":383},[326,3309,3310,3312,3314,3316,3318,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346,3348,3350,3352,3354,3356],{"class":328,"line":1244},[326,3311,1752],{"class":332},[326,3313,337],{"class":336},[326,3315,620],{"class":340},[326,3317,344],{"class":383},[326,3319,625],{"class":336},[326,3321,674],{"class":383},[326,3323,387],{"class":336},[326,3325,380],{"class":336},[326,3327,690],{"class":383},[326,3329,387],{"class":336},[326,3331,674],{"class":332},[326,3333,337],{"class":336},[326,3335,2571],{"class":332},[326,3337,337],{"class":336},[326,3339,2576],{"class":332},[326,3341,377],{"class":336},[326,3343,700],{"class":383},[326,3345,387],{"class":336},[326,3347,674],{"class":332},[326,3349,337],{"class":336},[326,3351,2592],{"class":332},[326,3353,438],{"class":336},[326,3355,438],{"class":336},[326,3357,356],{"class":383},[326,3359,3360],{"class":328,"line":1258},[326,3361,589],{"emptyLinePlaceholder":588},[326,3363,3364,3366,3368,3370,3372,3375,3377,3380],{"class":328,"line":1281},[326,3365,1729],{"class":594},[326,3367,727],{"class":332},[326,3369,1735],{"class":336},[326,3371,1188],{"class":564},[326,3373,3374],{"class":340}," processPayment",[326,3376,344],{"class":383},[326,3378,3379],{"class":332},"cart",[326,3381,356],{"class":383},[326,3383,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3416,3418,3420,3423,3425,3427],{"class":328,"line":1341},[326,3385,1752],{"class":332},[326,3387,337],{"class":336},[326,3389,620],{"class":340},[326,3391,344],{"class":383},[326,3393,625],{"class":336},[326,3395,727],{"class":383},[326,3397,387],{"class":336},[326,3399,380],{"class":336},[326,3401,734],{"class":383},[326,3403,387],{"class":336},[326,3405,727],{"class":332},[326,3407,337],{"class":336},[326,3409,1421],{"class":332},[326,3411,377],{"class":336},[326,3413,748],{"class":383},[326,3415,387],{"class":336},[326,3417,727],{"class":332},[326,3419,337],{"class":336},[326,3421,3422],{"class":332},"status",[326,3424,438],{"class":336},[326,3426,438],{"class":336},[326,3428,356],{"class":383},[326,3430,3431],{"class":328,"line":1350},[326,3432,589],{"emptyLinePlaceholder":588},[326,3434,3435,3437,3439,3441,3443,3445],{"class":328,"line":1356},[326,3436,1837],{"class":564},[326,3438,380],{"class":336},[326,3440,1842],{"class":383},[326,3442,387],{"class":336},[326,3444,1848],{"class":1847},[326,3446,987],{"class":336},[326,3448,3449,3451],{"class":328,"line":1361},[326,3450,398],{"class":336},[326,3452,356],{"class":332},[315,3454,3456],{"className":937,"code":3455,"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,3457,3458,3473,3493,3509,3535],{"__ignoreMap":321},[326,3459,3460,3462,3464,3466,3468,3471],{"class":328,"line":329},[326,3461,947],{"class":336},[326,3463,950],{"class":332},[326,3465,953],{"class":336},[326,3467,956],{"class":332},[326,3469,3470],{"class":959},"456ms",[326,3472,356],{"class":332},[326,3474,3475,3477,3479,3481,3483,3485,3487,3489,3491],{"class":328,"line":359},[326,3476,967],{"class":959},[326,3478,380],{"class":350},[326,3480,972],{"class":350},[326,3482,975],{"class":350},[326,3484,978],{"class":350},[326,3486,430],{"class":336},[326,3488,651],{"class":350},[326,3490,347],{"class":336},[326,3492,987],{"class":350},[326,3494,3495,3497,3499,3501,3503,3505,3507],{"class":328,"line":403},[326,3496,992],{"class":959},[326,3498,380],{"class":350},[326,3500,1002],{"class":350},[326,3502,1005],{"class":350},[326,3504,1008],{"class":350},[326,3506,705],{"class":510},[326,3508,987],{"class":350},[326,3510,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533],{"class":328,"line":443},[326,3512,1017],{"class":959},[326,3514,380],{"class":350},[326,3516,1022],{"class":350},[326,3518,430],{"class":336},[326,3520,741],{"class":350},[326,3522,347],{"class":336},[326,3524,377],{"class":350},[326,3526,1033],{"class":350},[326,3528,430],{"class":336},[326,3530,755],{"class":350},[326,3532,347],{"class":336},[326,3534,987],{"class":350},[326,3536,3537,3539],{"class":328,"line":463},[326,3538,1046],{"class":959},[326,3540,1049],{"class":510},[1058,3542,3544],{"id":3543},"handle-errors-gracefully","Handle Errors Gracefully",[303,3546,3547],{},"When errors occur, the wide event still emits with error context:",[552,3549,3550,3776],{},[315,3551,3553],{"className":317,"code":3552,"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,3554,3555,3573,3577,3599,3615,3619,3626,3646,3654,3672,3685,3694,3709,3724,3743,3748,3755,3763,3769],{"__ignoreMap":321},[326,3556,3557,3559,3561,3563,3565,3567,3569,3571],{"class":328,"line":329},[326,3558,565],{"class":564},[326,3560,380],{"class":336},[326,3562,570],{"class":332},[326,3564,438],{"class":336},[326,3566,575],{"class":564},[326,3568,430],{"class":336},[326,3570,580],{"class":350},[326,3572,583],{"class":336},[326,3574,3575],{"class":328,"line":359},[326,3576,589],{"emptyLinePlaceholder":588},[326,3578,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597],{"class":328,"line":403},[326,3580,1698],{"class":564},[326,3582,1701],{"class":564},[326,3584,1704],{"class":340},[326,3586,344],{"class":332},[326,3588,1709],{"class":594},[326,3590,1264],{"class":336},[326,3592,1715],{"class":1714},[326,3594,1718],{"class":336},[326,3596,1721],{"class":594},[326,3598,1724],{"class":336},[326,3600,3601,3603,3605,3607,3609,3611,3613],{"class":328,"line":443},[326,3602,1729],{"class":594},[326,3604,1732],{"class":332},[326,3606,1735],{"class":336},[326,3608,570],{"class":340},[326,3610,344],{"class":383},[326,3612,1715],{"class":332},[326,3614,356],{"class":383},[326,3616,3617],{"class":328,"line":463},[326,3618,589],{"emptyLinePlaceholder":588},[326,3620,3621,3624],{"class":328,"line":483},[326,3622,3623],{"class":564},"  try",[326,3625,1724],{"class":336},[326,3627,3628,3631,3634,3636,3638,3640,3642,3644],{"class":328,"line":714},[326,3629,3630],{"class":594},"    const",[326,3632,3633],{"class":332}," result",[326,3635,1735],{"class":336},[326,3637,1188],{"class":564},[326,3639,3374],{"class":340},[326,3641,344],{"class":383},[326,3643,3379],{"class":332},[326,3645,356],{"class":383},[326,3647,3648,3651],{"class":328,"line":1210},[326,3649,3650],{"class":564},"    return",[326,3652,3653],{"class":332}," result\n",[326,3655,3656,3659,3662,3664,3667,3670],{"class":328,"line":1239},[326,3657,3658],{"class":336},"  }",[326,3660,3661],{"class":564}," catch",[326,3663,1264],{"class":383},[326,3665,3666],{"class":332},"err",[326,3668,3669],{"class":383},") ",[326,3671,1278],{"class":336},[326,3673,3674,3677,3679,3681,3683],{"class":328,"line":1244},[326,3675,3676],{"class":332},"    log",[326,3678,337],{"class":336},[326,3680,620],{"class":340},[326,3682,344],{"class":383},[326,3684,1278],{"class":336},[326,3686,3687,3690,3692],{"class":328,"line":1258},[326,3688,3689],{"class":383},"      error",[326,3691,387],{"class":336},[326,3693,1724],{"class":336},[326,3695,3696,3699,3701,3703,3705,3707],{"class":328,"line":1281},[326,3697,3698],{"class":383},"        message",[326,3700,387],{"class":336},[326,3702,2813],{"class":332},[326,3704,337],{"class":336},[326,3706,2818],{"class":332},[326,3708,2275],{"class":336},[326,3710,3711,3714,3716,3718,3720,3722],{"class":328,"line":1341},[326,3712,3713],{"class":383},"        code",[326,3715,387],{"class":336},[326,3717,2813],{"class":332},[326,3719,337],{"class":336},[326,3721,323],{"class":332},[326,3723,2275],{"class":336},[326,3725,3726,3729,3731,3733,3735,3737,3739,3741],{"class":328,"line":1350},[326,3727,3728],{"class":383},"        type",[326,3730,387],{"class":336},[326,3732,2813],{"class":332},[326,3734,337],{"class":336},[326,3736,2849],{"class":332},[326,3738,337],{"class":336},[326,3740,2854],{"class":332},[326,3742,2275],{"class":336},[326,3744,3745],{"class":328,"line":1356},[326,3746,3747],{"class":336},"      },\n",[326,3749,3750,3753],{"class":328,"line":1361},[326,3751,3752],{"class":336},"    }",[326,3754,356],{"class":383},[326,3756,3757,3760],{"class":328,"line":1394},[326,3758,3759],{"class":564},"    throw",[326,3761,3762],{"class":332}," err\n",[326,3764,3766],{"class":328,"line":3765},18,[326,3767,3768],{"class":336},"  }\n",[326,3770,3772,3774],{"class":328,"line":3771},19,[326,3773,398],{"class":336},[326,3775,356],{"class":332},[315,3777,3779],{"className":937,"code":3778,"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,3780,3781,3797,3817,3833,3840,3854,3868,3881,3885],{"__ignoreMap":321},[326,3782,3783,3785,3788,3790,3792,3795],{"class":328,"line":329},[326,3784,947],{"class":336},[326,3786,3787],{"class":332},"ERROR",[326,3789,953],{"class":336},[326,3791,956],{"class":332},[326,3793,3794],{"class":959},"123ms",[326,3796,356],{"class":332},[326,3798,3799,3801,3803,3805,3807,3809,3811,3813,3815],{"class":328,"line":359},[326,3800,967],{"class":959},[326,3802,380],{"class":350},[326,3804,972],{"class":350},[326,3806,975],{"class":350},[326,3808,978],{"class":350},[326,3810,430],{"class":336},[326,3812,651],{"class":350},[326,3814,347],{"class":336},[326,3816,987],{"class":350},[326,3818,3819,3821,3823,3825,3827,3829,3831],{"class":328,"line":403},[326,3820,992],{"class":959},[326,3822,380],{"class":350},[326,3824,1002],{"class":350},[326,3826,1005],{"class":350},[326,3828,1008],{"class":350},[326,3830,705],{"class":510},[326,3832,987],{"class":350},[326,3834,3835,3838],{"class":328,"line":443},[326,3836,3837],{"class":959},"  error:",[326,3839,1724],{"class":350},[326,3841,3842,3845,3847,3850,3852],{"class":328,"line":463},[326,3843,3844],{"class":959},"    message:",[326,3846,430],{"class":336},[326,3848,3849],{"class":350},"Card declined",[326,3851,347],{"class":336},[326,3853,2275],{"class":350},[326,3855,3856,3859,3861,3864,3866],{"class":328,"line":483},[326,3857,3858],{"class":959},"    code:",[326,3860,430],{"class":336},[326,3862,3863],{"class":350},"CARD_DECLINED",[326,3865,347],{"class":336},[326,3867,2275],{"class":350},[326,3869,3870,3872,3874,3876,3879],{"class":328,"line":714},[326,3871,2840],{"class":340},[326,3873,387],{"class":350},[326,3875,430],{"class":336},[326,3877,3878],{"class":350},"PaymentError",[326,3880,583],{"class":336},[326,3882,3883],{"class":328,"line":1210},[326,3884,3768],{"class":332},[326,3886,3887,3889],{"class":328,"line":1239},[326,3888,1046],{"class":959},[326,3890,3891],{"class":510}," 500\n",[307,3893,3895],{"id":3894},"output-formats","Output Formats",[303,3897,3898],{},"evlog automatically switches between formats based on environment: pretty in development, JSON in production. This is the default behavior, no configuration needed.",[552,3900,3901,3983],{},[315,3902,3905],{"className":937,"code":3903,"filename":3904,"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,3906,3907,3921,3941,3957],{"__ignoreMap":321},[326,3908,3909,3911,3913,3915,3917,3919],{"class":328,"line":329},[326,3910,947],{"class":336},[326,3912,950],{"class":332},[326,3914,953],{"class":336},[326,3916,956],{"class":332},[326,3918,960],{"class":959},[326,3920,356],{"class":332},[326,3922,3923,3925,3927,3929,3931,3933,3935,3937,3939],{"class":328,"line":359},[326,3924,967],{"class":959},[326,3926,380],{"class":350},[326,3928,972],{"class":350},[326,3930,975],{"class":350},[326,3932,978],{"class":350},[326,3934,430],{"class":336},[326,3936,651],{"class":350},[326,3938,347],{"class":336},[326,3940,987],{"class":350},[326,3942,3943,3945,3947,3949,3951,3953,3955],{"class":328,"line":403},[326,3944,992],{"class":959},[326,3946,380],{"class":350},[326,3948,1002],{"class":350},[326,3950,1005],{"class":350},[326,3952,1008],{"class":350},[326,3954,705],{"class":510},[326,3956,987],{"class":350},[326,3958,3959,3961,3963,3965,3967,3969,3971,3973,3975,3977,3979,3981],{"class":328,"line":443},[326,3960,1017],{"class":959},[326,3962,380],{"class":350},[326,3964,1022],{"class":350},[326,3966,430],{"class":336},[326,3968,741],{"class":350},[326,3970,347],{"class":336},[326,3972,377],{"class":350},[326,3974,1033],{"class":350},[326,3976,430],{"class":336},[326,3978,755],{"class":350},[326,3980,347],{"class":336},[326,3982,987],{"class":350},[315,3984,3989],{"className":3985,"code":3986,"filename":3987,"language":3988,"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,3990,3991,3995,4017,4035,4053,4068,4108,4144,4189],{"__ignoreMap":321},[326,3992,3993],{"class":328,"line":329},[326,3994,1278],{"class":336},[326,3996,3997,4000,4003,4006,4008,4011,4013,4015],{"class":328,"line":359},[326,3998,3999],{"class":336},"  \"",[326,4001,4002],{"class":594},"level",[326,4004,4005],{"class":336},"\"",[326,4007,387],{"class":336},[326,4009,4010],{"class":336}," \"",[326,4012,341],{"class":350},[326,4014,4005],{"class":336},[326,4016,2275],{"class":336},[326,4018,4019,4021,4023,4025,4027,4029,4031,4033],{"class":328,"line":403},[326,4020,3999],{"class":336},[326,4022,1421],{"class":594},[326,4024,4005],{"class":336},[326,4026,387],{"class":336},[326,4028,4010],{"class":336},[326,4030,1520],{"class":350},[326,4032,4005],{"class":336},[326,4034,2275],{"class":336},[326,4036,4037,4039,4041,4043,4045,4047,4049,4051],{"class":328,"line":443},[326,4038,3999],{"class":336},[326,4040,1425],{"class":594},[326,4042,4005],{"class":336},[326,4044,387],{"class":336},[326,4046,4010],{"class":336},[326,4048,1534],{"class":350},[326,4050,4005],{"class":336},[326,4052,2275],{"class":336},[326,4054,4055,4057,4060,4062,4064,4066],{"class":328,"line":463},[326,4056,3999],{"class":336},[326,4058,4059],{"class":594},"duration",[326,4061,4005],{"class":336},[326,4063,387],{"class":336},[326,4065,511],{"class":510},[326,4067,2275],{"class":336},[326,4069,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092,4094,4096,4098,4100,4102,4104,4106],{"class":328,"line":483},[326,4071,3999],{"class":336},[326,4073,3301],{"class":594},[326,4075,4005],{"class":336},[326,4077,387],{"class":336},[326,4079,380],{"class":336},[326,4081,4010],{"class":336},[326,4083,1307],{"class":959},[326,4085,4005],{"class":336},[326,4087,387],{"class":336},[326,4089,639],{"class":510},[326,4091,377],{"class":336},[326,4093,4010],{"class":336},[326,4095,1334],{"class":959},[326,4097,4005],{"class":336},[326,4099,387],{"class":336},[326,4101,4010],{"class":336},[326,4103,651],{"class":350},[326,4105,4005],{"class":336},[326,4107,3102],{"class":336},[326,4109,4110,4112,4114,4116,4118,4120,4122,4124,4126,4128,4130,4132,4134,4136,4138,4140,4142],{"class":328,"line":714},[326,4111,3999],{"class":336},[326,4113,3379],{"class":594},[326,4115,4005],{"class":336},[326,4117,387],{"class":336},[326,4119,380],{"class":336},[326,4121,4010],{"class":336},[326,4123,2571],{"class":959},[326,4125,4005],{"class":336},[326,4127,387],{"class":336},[326,4129,695],{"class":510},[326,4131,377],{"class":336},[326,4133,4010],{"class":336},[326,4135,2592],{"class":959},[326,4137,4005],{"class":336},[326,4139,387],{"class":336},[326,4141,705],{"class":510},[326,4143,3102],{"class":336},[326,4145,4146,4148,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169,4171,4173,4175,4177,4179,4181,4183,4185,4187],{"class":328,"line":1210},[326,4147,3999],{"class":336},[326,4149,4150],{"class":594},"payment",[326,4152,4005],{"class":336},[326,4154,387],{"class":336},[326,4156,380],{"class":336},[326,4158,4010],{"class":336},[326,4160,1421],{"class":959},[326,4162,4005],{"class":336},[326,4164,387],{"class":336},[326,4166,4010],{"class":336},[326,4168,741],{"class":350},[326,4170,4005],{"class":336},[326,4172,377],{"class":336},[326,4174,4010],{"class":336},[326,4176,3422],{"class":959},[326,4178,4005],{"class":336},[326,4180,387],{"class":336},[326,4182,4010],{"class":336},[326,4184,755],{"class":350},[326,4186,4005],{"class":336},[326,4188,987],{"class":336},[326,4190,4191],{"class":328,"line":1239},[326,4192,1353],{"class":336},[307,4194,4196],{"id":4195},"next-steps","Next Steps",[520,4198,4199,4205,4210,4215],{},[523,4200,4201,4204],{},[4202,4203,41],"a",{"href":42}," - Fire-and-forget logs when you don't need context accumulation",[523,4206,4207,4209],{},[4202,4208,91],{"href":92}," - Add compile-time type safety to your wide events",[523,4211,4212,4214],{},[4202,4213,51],{"href":52}," - Errors with actionable context",[523,4216,4217,4219],{},[4202,4218,116],{"href":121}," - Auto-managed request logging per framework",[4221,4222,4223],"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":4225},[4226,4227,4235,4238,4244,4250,4251],{"id":309,"depth":359,"text":310},{"id":1055,"depth":359,"text":1056,"children":4228},[4229,4231,4233],{"id":1060,"depth":403,"text":4230},"createLogger (General Purpose)",{"id":1405,"depth":403,"text":4232},"createRequestLogger (HTTP Contexts)",{"id":1655,"depth":403,"text":4234},"useLogger (Retrieving the Request Logger)",{"id":1873,"depth":359,"text":1874,"children":4236},[4237],{"id":1944,"depth":403,"text":1947},{"id":2185,"depth":359,"text":2186,"children":4239},[4240,4241,4242,4243],{"id":2202,"depth":403,"text":2203},{"id":2417,"depth":403,"text":2418},{"id":2512,"depth":403,"text":2513},{"id":2686,"depth":403,"text":2687},{"id":2869,"depth":359,"text":96,"children":4245},[4246,4247,4248,4249],{"id":2872,"depth":403,"text":2873},{"id":2972,"depth":403,"text":2973},{"id":3135,"depth":403,"text":3136},{"id":3543,"depth":403,"text":3544},{"id":3894,"depth":359,"text":3895},{"id":4195,"depth":359,"text":4196},"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",[4255,4258],{"label":51,"icon":54,"to":52,"color":4256,"variant":4257},"neutral","subtle",{"label":96,"icon":99,"to":97,"color":4256,"variant":4257},{},{"icon":49},{"title":46,"description":4252},"PgEwtnx3suLBKMyDUQmcFNC9nO-r07LpfPaLtNvM8MQ",[4264,4266],{"title":41,"path":42,"stem":43,"description":4265,"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":4267,"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.",1776700920902]