[{"data":1,"prerenderedAt":1321},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-introduction":282,"-getting-started-introduction-surround":1317},[4,30,65,105,188,252,268],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,169,174,178,183],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167,"icon":168},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":170,"path":171,"stem":172,"icon":173},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":175,"path":176,"stem":177,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":179,"path":180,"stem":181,"icon":182},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":184,"path":185,"stem":186,"icon":187},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Adapters","\u002Fadapters","5.adapters",[193,197,202,207,212,217,222,227,232,237,242,247],{"title":36,"path":194,"stem":195,"icon":196},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":198,"path":199,"stem":200,"icon":201},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F10.custom","i-lucide-code",{"title":203,"path":204,"stem":205,"icon":206},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F11.pipeline","i-lucide-workflow",{"title":208,"path":209,"stem":210,"icon":211},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F12.browser","i-lucide-globe",{"title":213,"path":214,"stem":215,"icon":216},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":218,"path":219,"stem":220,"icon":221},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":223,"path":224,"stem":225,"icon":226},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":228,"path":229,"stem":230,"icon":231},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":233,"path":234,"stem":235,"icon":236},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":238,"path":239,"stem":240,"icon":241},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":243,"path":244,"stem":245,"icon":246},"Datadog","\u002Fadapters\u002Fdatadog","5.adapters\u002F8.datadog","i-simple-icons-datadog",{"title":248,"path":249,"stem":250,"icon":251},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F9.hyperdx","i-custom-hyperdx",{"title":253,"path":254,"stem":255,"children":256,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[257,260,264],{"title":36,"path":258,"stem":259,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":261,"path":262,"stem":263,"icon":187},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":265,"path":266,"stem":267,"icon":201},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":269,"path":270,"stem":271,"children":272,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[273,277],{"title":36,"path":274,"stem":275,"icon":276},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":278,"path":279,"stem":280,"icon":281},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":283,"title":10,"body":284,"description":1302,"extension":1303,"links":1304,"meta":1313,"navigation":1314,"path":11,"seo":1315,"stem":12,"__hash__":1316},"docs\u002F1.getting-started\u002F1.introduction.md",{"type":285,"value":286,"toc":1292},"minimark",[287,304,321,326,329,334,358,362,365,369,375,518,521,524,947,950,953,967,1220,1224,1231,1256,1266,1270,1288],[288,289,290,294,295,299,300,303],"p",{},[291,292,293],"strong",{},"evlog"," is a structured logging library for TypeScript. It gives you simple one-liner logs, wide events that accumulate context over any operation, and structured errors that explain ",[296,297,298],"em",{},"why"," something failed and ",[296,301,302],{},"how"," to fix it.",[288,305,306,307,314,315,320],{},"Inspired by ",[308,309,313],"a",{"href":310,"rel":311},"https:\u002F\u002Floggingsucks.com\u002F",[312],"nofollow","Logging Sucks"," by ",[308,316,319],{"href":317,"rel":318},"https:\u002F\u002Fx.com\u002Fboristane",[312],"Boris Tane",".",[322,323,325],"h2",{"id":324},"philosophy","Philosophy",[288,327,328],{},"Traditional logging is broken. Your logs are scattered across dozens of files. Each request generates 10+ log lines. When something goes wrong, you're left grep-ing through noise hoping to find signal.",[288,330,331,333],{},[291,332,293],{}," takes a different approach:",[335,336,337,347,350,353],"card-group",{},[338,339,341,342,346],"card",{"icon":44,"title":340},"Structured Logging","Replace ",[343,344,345],"code",{},"console.log"," with typed, structured events that flow through a drain pipeline.",[338,348,349],{"icon":49,"title":46},"Accumulate context over any unit of work (a request, script, or job) and emit once.",[338,351,352],{"icon":54,"title":51},"Errors that explain why they occurred and how to fix them.",[338,354,357],{"icon":355,"title":356},"i-lucide-palette","Pretty for Dev","Human-readable in development, machine-parseable JSON in production.",[322,359,361],{"id":360},"three-ways-to-log","Three Ways to Log",[288,363,364],{},"evlog provides three APIs for different contexts. You can use all three in the same project.",[366,367,41],"h3",{"id":368},"simple-logging",[288,370,371,372,374],{},"Fire-and-forget structured logs. Replace ",[343,373,345],{},", consola, or pino:",[376,377,383],"pre",{"className":378,"code":379,"filename":380,"language":381,"meta":382,"style":382},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined', userId: 42 })\n","src\u002Findex.ts","typescript","",[343,384,385,417,424,460],{"__ignoreMap":382},[386,387,390,394,398,402,405,408,411,414],"span",{"class":388,"line":389},"line",1,[386,391,393],{"class":392},"s7zQu","import",[386,395,397],{"class":396},"sMK4o"," {",[386,399,401],{"class":400},"sTEyZ"," log",[386,403,404],{"class":396}," }",[386,406,407],{"class":392}," from",[386,409,410],{"class":396}," '",[386,412,293],{"class":413},"sfazB",[386,415,416],{"class":396},"'\n",[386,418,420],{"class":388,"line":419},2,[386,421,423],{"emptyLinePlaceholder":422},true,"\n",[386,425,427,430,432,436,439,442,445,447,450,452,455,457],{"class":388,"line":426},3,[386,428,429],{"class":400},"log",[386,431,320],{"class":396},[386,433,435],{"class":434},"s2Zo4","info",[386,437,438],{"class":400},"(",[386,440,441],{"class":396},"'",[386,443,444],{"class":413},"auth",[386,446,441],{"class":396},[386,448,449],{"class":396},",",[386,451,410],{"class":396},[386,453,454],{"class":413},"User logged in",[386,456,441],{"class":396},[386,458,459],{"class":400},")\n",[386,461,463,465,467,470,472,475,479,482,484,487,489,491,494,496,498,501,503,505,508,510,514,516],{"class":388,"line":462},4,[386,464,429],{"class":400},[386,466,320],{"class":396},[386,468,469],{"class":434},"error",[386,471,438],{"class":400},[386,473,474],{"class":396},"{",[386,476,478],{"class":477},"swJcz"," action",[386,480,481],{"class":396},":",[386,483,410],{"class":396},[386,485,486],{"class":413},"payment",[386,488,441],{"class":396},[386,490,449],{"class":396},[386,492,493],{"class":477}," error",[386,495,481],{"class":396},[386,497,410],{"class":396},[386,499,500],{"class":413},"card_declined",[386,502,441],{"class":396},[386,504,449],{"class":396},[386,506,507],{"class":477}," userId",[386,509,481],{"class":396},[386,511,513],{"class":512},"sbssI"," 42",[386,515,404],{"class":396},[386,517,459],{"class":400},[366,519,46],{"id":520},"wide-events",[288,522,523],{},"Accumulate context progressively over any operation, then emit a single comprehensive event:",[525,526,527,660,790],"code-group",{},[376,528,531],{"className":378,"code":529,"filename":530,"language":381,"meta":382,"style":382},"import { createLogger } from 'evlog'\n\nconst log = createLogger({ jobId: 'sync-001', queue: 'emails' })\nlog.set({ batch: { size: 50, processed: 50 } })\nlog.emit()\n","scripts\u002Fsync-job.ts",[343,532,533,552,556,604,647],{"__ignoreMap":382},[386,534,535,537,539,542,544,546,548,550],{"class":388,"line":389},[386,536,393],{"class":392},[386,538,397],{"class":396},[386,540,541],{"class":400}," createLogger",[386,543,404],{"class":396},[386,545,407],{"class":392},[386,547,410],{"class":396},[386,549,293],{"class":413},[386,551,416],{"class":396},[386,553,554],{"class":388,"line":419},[386,555,423],{"emptyLinePlaceholder":422},[386,557,558,562,565,568,570,572,574,577,579,581,584,586,588,591,593,595,598,600,602],{"class":388,"line":426},[386,559,561],{"class":560},"spNyl","const",[386,563,564],{"class":400}," log ",[386,566,567],{"class":396},"=",[386,569,541],{"class":434},[386,571,438],{"class":400},[386,573,474],{"class":396},[386,575,576],{"class":477}," jobId",[386,578,481],{"class":396},[386,580,410],{"class":396},[386,582,583],{"class":413},"sync-001",[386,585,441],{"class":396},[386,587,449],{"class":396},[386,589,590],{"class":477}," queue",[386,592,481],{"class":396},[386,594,410],{"class":396},[386,596,597],{"class":413},"emails",[386,599,441],{"class":396},[386,601,404],{"class":396},[386,603,459],{"class":400},[386,605,606,608,610,613,615,617,620,622,624,627,629,632,634,637,639,641,643,645],{"class":388,"line":462},[386,607,429],{"class":400},[386,609,320],{"class":396},[386,611,612],{"class":434},"set",[386,614,438],{"class":400},[386,616,474],{"class":396},[386,618,619],{"class":477}," batch",[386,621,481],{"class":396},[386,623,397],{"class":396},[386,625,626],{"class":477}," size",[386,628,481],{"class":396},[386,630,631],{"class":512}," 50",[386,633,449],{"class":396},[386,635,636],{"class":477}," processed",[386,638,481],{"class":396},[386,640,631],{"class":512},[386,642,404],{"class":396},[386,644,404],{"class":396},[386,646,459],{"class":400},[386,648,650,652,654,657],{"class":388,"line":649},5,[386,651,429],{"class":400},[386,653,320],{"class":396},[386,655,656],{"class":434},"emit",[386,658,659],{"class":400},"()\n",[376,661,664],{"className":378,"code":662,"filename":663,"language":381,"meta":382,"style":382},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\nlog.set({ user: { id: 1, plan: 'pro' } })\nlog.emit()\n","src\u002Fworker.ts",[343,665,666,685,689,733,780],{"__ignoreMap":382},[386,667,668,670,672,675,677,679,681,683],{"class":388,"line":389},[386,669,393],{"class":392},[386,671,397],{"class":396},[386,673,674],{"class":400}," createRequestLogger",[386,676,404],{"class":396},[386,678,407],{"class":392},[386,680,410],{"class":396},[386,682,293],{"class":413},[386,684,416],{"class":396},[386,686,687],{"class":388,"line":419},[386,688,423],{"emptyLinePlaceholder":422},[386,690,691,693,695,697,699,701,703,706,708,710,713,715,717,720,722,724,727,729,731],{"class":388,"line":426},[386,692,561],{"class":560},[386,694,564],{"class":400},[386,696,567],{"class":396},[386,698,674],{"class":434},[386,700,438],{"class":400},[386,702,474],{"class":396},[386,704,705],{"class":477}," method",[386,707,481],{"class":396},[386,709,410],{"class":396},[386,711,712],{"class":413},"POST",[386,714,441],{"class":396},[386,716,449],{"class":396},[386,718,719],{"class":477}," path",[386,721,481],{"class":396},[386,723,410],{"class":396},[386,725,726],{"class":413},"\u002Fapi\u002Fcheckout",[386,728,441],{"class":396},[386,730,404],{"class":396},[386,732,459],{"class":400},[386,734,735,737,739,741,743,745,748,750,752,755,757,760,762,765,767,769,772,774,776,778],{"class":388,"line":462},[386,736,429],{"class":400},[386,738,320],{"class":396},[386,740,612],{"class":434},[386,742,438],{"class":400},[386,744,474],{"class":396},[386,746,747],{"class":477}," user",[386,749,481],{"class":396},[386,751,397],{"class":396},[386,753,754],{"class":477}," id",[386,756,481],{"class":396},[386,758,759],{"class":512}," 1",[386,761,449],{"class":396},[386,763,764],{"class":477}," plan",[386,766,481],{"class":396},[386,768,410],{"class":396},[386,770,771],{"class":413},"pro",[386,773,441],{"class":396},[386,775,404],{"class":396},[386,777,404],{"class":396},[386,779,459],{"class":400},[386,781,782,784,786,788],{"class":388,"line":649},[386,783,429],{"class":400},[386,785,320],{"class":396},[386,787,656],{"class":434},[386,789,659],{"class":400},[376,791,794],{"className":378,"code":792,"filename":793,"language":381,"meta":382,"style":382},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  log.set({ user: { id: 1, plan: 'pro' } })\n  return { success: true }\n  \u002F\u002F auto-emitted on response end\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[343,795,796,815,819,851,869,912,932,939],{"__ignoreMap":382},[386,797,798,800,802,805,807,809,811,813],{"class":388,"line":389},[386,799,393],{"class":392},[386,801,397],{"class":396},[386,803,804],{"class":400}," useLogger",[386,806,404],{"class":396},[386,808,407],{"class":392},[386,810,410],{"class":396},[386,812,293],{"class":413},[386,814,416],{"class":396},[386,816,817],{"class":388,"line":419},[386,818,423],{"emptyLinePlaceholder":422},[386,820,821,824,827,830,832,835,838,842,845,848],{"class":388,"line":426},[386,822,823],{"class":392},"export",[386,825,826],{"class":392}," default",[386,828,829],{"class":434}," defineEventHandler",[386,831,438],{"class":400},[386,833,834],{"class":560},"async",[386,836,837],{"class":396}," (",[386,839,841],{"class":840},"sHdIc","event",[386,843,844],{"class":396},")",[386,846,847],{"class":560}," =>",[386,849,850],{"class":396}," {\n",[386,852,853,856,858,861,863,865,867],{"class":388,"line":462},[386,854,855],{"class":560},"  const",[386,857,401],{"class":400},[386,859,860],{"class":396}," =",[386,862,804],{"class":434},[386,864,438],{"class":477},[386,866,841],{"class":400},[386,868,459],{"class":477},[386,870,871,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910],{"class":388,"line":649},[386,872,873],{"class":400},"  log",[386,875,320],{"class":396},[386,877,612],{"class":434},[386,879,438],{"class":477},[386,881,474],{"class":396},[386,883,747],{"class":477},[386,885,481],{"class":396},[386,887,397],{"class":396},[386,889,754],{"class":477},[386,891,481],{"class":396},[386,893,759],{"class":512},[386,895,449],{"class":396},[386,897,764],{"class":477},[386,899,481],{"class":396},[386,901,410],{"class":396},[386,903,771],{"class":413},[386,905,441],{"class":396},[386,907,404],{"class":396},[386,909,404],{"class":396},[386,911,459],{"class":477},[386,913,915,918,920,923,925,929],{"class":388,"line":914},6,[386,916,917],{"class":392},"  return",[386,919,397],{"class":396},[386,921,922],{"class":477}," success",[386,924,481],{"class":396},[386,926,928],{"class":927},"sfNiH"," true",[386,930,931],{"class":396}," }\n",[386,933,935],{"class":388,"line":934},7,[386,936,938],{"class":937},"sHwdD","  \u002F\u002F auto-emitted on response end\n",[386,940,942,945],{"class":388,"line":941},8,[386,943,944],{"class":396},"}",[386,946,459],{"class":400},[288,948,949],{},"One log, all context. Everything you need to understand what happened.",[366,951,51],{"id":952},"structured-errors",[288,954,955,956,958,959,962,963,966],{},"Errors with actionable context: ",[343,957,298],{}," it happened, how to ",[343,960,961],{},"fix"," it, and a ",[343,964,965],{},"link"," to docs:",[525,968,969,1093],{},[376,970,972],{"className":378,"code":971,"filename":793,"language":381,"meta":382,"style":382},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer (insufficient funds)',\n  fix: 'Try a different payment method or contact your bank',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n",[343,973,974,993,997,1009,1026,1038,1054,1070,1086],{"__ignoreMap":382},[386,975,976,978,980,983,985,987,989,991],{"class":388,"line":389},[386,977,393],{"class":392},[386,979,397],{"class":396},[386,981,982],{"class":400}," createError",[386,984,404],{"class":396},[386,986,407],{"class":392},[386,988,410],{"class":396},[386,990,293],{"class":413},[386,992,416],{"class":396},[386,994,995],{"class":388,"line":419},[386,996,423],{"emptyLinePlaceholder":422},[386,998,999,1002,1004,1006],{"class":388,"line":426},[386,1000,1001],{"class":392},"throw",[386,1003,982],{"class":434},[386,1005,438],{"class":400},[386,1007,1008],{"class":396},"{\n",[386,1010,1011,1014,1016,1018,1021,1023],{"class":388,"line":462},[386,1012,1013],{"class":477},"  message",[386,1015,481],{"class":396},[386,1017,410],{"class":396},[386,1019,1020],{"class":413},"Payment failed",[386,1022,441],{"class":396},[386,1024,1025],{"class":396},",\n",[386,1027,1028,1031,1033,1036],{"class":388,"line":649},[386,1029,1030],{"class":477},"  status",[386,1032,481],{"class":396},[386,1034,1035],{"class":512}," 402",[386,1037,1025],{"class":396},[386,1039,1040,1043,1045,1047,1050,1052],{"class":388,"line":914},[386,1041,1042],{"class":477},"  why",[386,1044,481],{"class":396},[386,1046,410],{"class":396},[386,1048,1049],{"class":413},"Card declined by issuer (insufficient funds)",[386,1051,441],{"class":396},[386,1053,1025],{"class":396},[386,1055,1056,1059,1061,1063,1066,1068],{"class":388,"line":934},[386,1057,1058],{"class":477},"  fix",[386,1060,481],{"class":396},[386,1062,410],{"class":396},[386,1064,1065],{"class":413},"Try a different payment method or contact your bank",[386,1067,441],{"class":396},[386,1069,1025],{"class":396},[386,1071,1072,1075,1077,1079,1082,1084],{"class":388,"line":941},[386,1073,1074],{"class":477},"  link",[386,1076,481],{"class":396},[386,1078,410],{"class":396},[386,1080,1081],{"class":413},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[386,1083,441],{"class":396},[386,1085,1025],{"class":396},[386,1087,1089,1091],{"class":388,"line":1088},9,[386,1090,944],{"class":396},[386,1092,459],{"class":400},[376,1094,1099],{"className":1095,"code":1096,"filename":1097,"language":1098,"meta":382,"style":382},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer (insufficient funds)\",\n    \"fix\": \"Try a different payment method or contact your bank\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n","Response","json",[343,1100,1101,1105,1122,1142,1155,1175,1193,1210,1215],{"__ignoreMap":382},[386,1102,1103],{"class":388,"line":389},[386,1104,1008],{"class":396},[386,1106,1107,1110,1113,1116,1118,1120],{"class":388,"line":419},[386,1108,1109],{"class":396},"  \"",[386,1111,1112],{"class":560},"statusCode",[386,1114,1115],{"class":396},"\"",[386,1117,481],{"class":396},[386,1119,1035],{"class":512},[386,1121,1025],{"class":396},[386,1123,1124,1126,1129,1131,1133,1136,1138,1140],{"class":388,"line":426},[386,1125,1109],{"class":396},[386,1127,1128],{"class":560},"message",[386,1130,1115],{"class":396},[386,1132,481],{"class":396},[386,1134,1135],{"class":396}," \"",[386,1137,1020],{"class":413},[386,1139,1115],{"class":396},[386,1141,1025],{"class":396},[386,1143,1144,1146,1149,1151,1153],{"class":388,"line":462},[386,1145,1109],{"class":396},[386,1147,1148],{"class":560},"data",[386,1150,1115],{"class":396},[386,1152,481],{"class":396},[386,1154,850],{"class":396},[386,1156,1157,1160,1163,1165,1167,1169,1171,1173],{"class":388,"line":649},[386,1158,1159],{"class":396},"    \"",[386,1161,298],{"class":1162},"sBMFI",[386,1164,1115],{"class":396},[386,1166,481],{"class":396},[386,1168,1135],{"class":396},[386,1170,1049],{"class":413},[386,1172,1115],{"class":396},[386,1174,1025],{"class":396},[386,1176,1177,1179,1181,1183,1185,1187,1189,1191],{"class":388,"line":914},[386,1178,1159],{"class":396},[386,1180,961],{"class":1162},[386,1182,1115],{"class":396},[386,1184,481],{"class":396},[386,1186,1135],{"class":396},[386,1188,1065],{"class":413},[386,1190,1115],{"class":396},[386,1192,1025],{"class":396},[386,1194,1195,1197,1199,1201,1203,1205,1207],{"class":388,"line":934},[386,1196,1159],{"class":396},[386,1198,965],{"class":1162},[386,1200,1115],{"class":396},[386,1202,481],{"class":396},[386,1204,1135],{"class":396},[386,1206,1081],{"class":413},[386,1208,1209],{"class":396},"\"\n",[386,1211,1212],{"class":388,"line":941},[386,1213,1214],{"class":396},"  }\n",[386,1216,1217],{"class":388,"line":1088},[386,1218,1219],{"class":396},"}\n",[322,1221,1223],{"id":1222},"why-context-matters","Why Context Matters",[288,1225,1226,1227,1230],{},"We're entering an era where AI agents build, debug, and maintain applications. These agents need ",[291,1228,1229],{},"structured context"," to work effectively:",[1232,1233,1234,1242,1249],"ul",{},[1235,1236,1237,1241],"li",{},[291,1238,1239],{},[343,1240,298],{},": The root cause, so the agent understands what went wrong",[1235,1243,1244,1248],{},[291,1245,1246],{},[343,1247,961],{},": An actionable solution the agent can suggest or apply",[1235,1250,1251,1255],{},[291,1252,1253],{},[343,1254,965],{},": Documentation for complex issues",[288,1257,1258,1259,1261,1262,1265],{},"Traditional ",[343,1260,345],{}," and generic ",[343,1263,1264],{},"throw new Error()"," provide no actionable context. evlog's structured output is designed for both humans and AI to parse and act on.",[322,1267,1269],{"id":1268},"next-steps","Next Steps",[1232,1271,1272,1277,1282],{},[1235,1273,1274,1276],{},[308,1275,15],{"href":16}," - Install evlog in your project",[1235,1278,1279,1281],{},[308,1280,20],{"href":21}," - Get up and running in minutes",[1235,1283,1284,1287],{},[308,1285,1286],{"href":37},"Logging Overview"," - Understand the three logging modes in depth",[1289,1290,1291],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":382,"searchDepth":419,"depth":419,"links":1293},[1294,1295,1300,1301],{"id":324,"depth":419,"text":325},{"id":360,"depth":419,"text":361,"children":1296},[1297,1298,1299],{"id":368,"depth":426,"text":41},{"id":520,"depth":426,"text":46},{"id":952,"depth":426,"text":51},{"id":1222,"depth":419,"text":1223},{"id":1268,"depth":419,"text":1269},"A structured logging library for TypeScript. Simple logging, wide events, and structured errors, from quick one-liners to comprehensive request-scoped events.","md",[1305,1308],{"label":20,"icon":23,"to":21,"color":1306,"variant":1307},"neutral","subtle",{"label":1309,"icon":1310,"to":1311,"target":1312,"color":1306,"variant":1307},"GitHub","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog","_blank",{},{"icon":13},{"title":10,"description":1302},"lasG4WwDCeQyjiRVCb6dezwNUZibnnLMwxx1ewXSXyw",[1318,1319],null,{"title":15,"path":16,"stem":17,"description":1320,"icon":18,"children":-1},"Install evlog in your TypeScript project. Supports Nuxt, Next.js, SvelteKit, Hono, Express, Fastify, Elysia, NestJS, and standalone scripts.",1775319203747]