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