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