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