[{"data":1,"prerenderedAt":3011},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-quick-start":282,"-getting-started-quick-start-surround":3006},[4,30,65,105,188,252,268],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Logging","\u002Flogging","2.logging",[35,40,45,50,55,60],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":61,"path":62,"stem":63,"icon":64},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":66,"path":67,"stem":68,"children":69,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[70,75,80,85,90,95,100],{"title":71,"path":72,"stem":73,"icon":74},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":76,"path":77,"stem":78,"icon":79},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":86,"path":87,"stem":88,"icon":89},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":91,"path":92,"stem":93,"icon":94},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices","i-lucide-shield-check",{"title":96,"path":97,"stem":98,"icon":99},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":101,"path":102,"stem":103,"icon":104},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[110,114,119,124,129,134,139,144,149,154,159,164,169,174,178,183],{"title":36,"path":111,"stem":112,"icon":113},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":115,"path":116,"stem":117,"icon":118},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":120,"path":121,"stem":122,"icon":123},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":125,"path":126,"stem":127,"icon":128},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":130,"path":131,"stem":132,"icon":133},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":135,"path":136,"stem":137,"icon":138},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":140,"path":141,"stem":142,"icon":143},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":145,"path":146,"stem":147,"icon":148},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":150,"path":151,"stem":152,"icon":153},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":155,"path":156,"stem":157,"icon":158},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":160,"path":161,"stem":162,"icon":163},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":165,"path":166,"stem":167,"icon":168},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":170,"path":171,"stem":172,"icon":173},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":175,"path":176,"stem":177,"icon":89},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":179,"path":180,"stem":181,"icon":182},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":184,"path":185,"stem":186,"icon":187},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":189,"path":190,"stem":191,"children":192,"page":29},"Adapters","\u002Fadapters","5.adapters",[193,197,202,207,212,217,222,227,232,237,242,247],{"title":36,"path":194,"stem":195,"icon":196},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":198,"path":199,"stem":200,"icon":201},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F10.custom","i-lucide-code",{"title":203,"path":204,"stem":205,"icon":206},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F11.pipeline","i-lucide-workflow",{"title":208,"path":209,"stem":210,"icon":211},"Browser","\u002Fadapters\u002Fbrowser","5.adapters\u002F12.browser","i-lucide-globe",{"title":213,"path":214,"stem":215,"icon":216},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":218,"path":219,"stem":220,"icon":221},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":223,"path":224,"stem":225,"icon":226},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":228,"path":229,"stem":230,"icon":231},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":233,"path":234,"stem":235,"icon":236},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":238,"path":239,"stem":240,"icon":241},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":243,"path":244,"stem":245,"icon":246},"Datadog","\u002Fadapters\u002Fdatadog","5.adapters\u002F8.datadog","i-simple-icons-datadog",{"title":248,"path":249,"stem":250,"icon":251},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F9.hyperdx","i-custom-hyperdx",{"title":253,"path":254,"stem":255,"children":256,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[257,260,264],{"title":36,"path":258,"stem":259,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":261,"path":262,"stem":263,"icon":187},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":265,"path":266,"stem":267,"icon":201},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":269,"path":270,"stem":271,"children":272,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[273,277],{"title":36,"path":274,"stem":275,"icon":276},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":278,"path":279,"stem":280,"icon":281},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":283,"title":20,"body":284,"description":2996,"extension":2997,"links":2998,"meta":3002,"navigation":3003,"path":21,"seo":3004,"stem":22,"__hash__":3005},"docs\u002F1.getting-started\u002F3.quick-start.md",{"type":285,"value":286,"toc":2982},"minimark",[287,291,316,321,324,537,540,563,572,576,586,851,871,887,960,974,978,985,1314,1324,1329,1392,1396,1399,1404,1410,1600,1603,1650,1654,1659,1787,1800,1804,1810,2062,2066,2168,2172,2177,2539,2543,2549,2940,2946,2950,2978],[288,289,290],"p",{},"This guide covers the core APIs you'll use most often with evlog.",[292,293,295,296,300,301,305,306,305,309,305,312,315],"callout",{"color":294,"icon":28},"info","In Nuxt, evlog ",[297,298,299],"strong",{},"auto-imports"," all functions (",[302,303,304],"code",{},"useLogger",", ",[302,307,308],{},"log",[302,310,311],{},"createError",[302,313,314],{},"parseError","). No import statements needed.",[317,318,320],"h2",{"id":319},"log-simple-logging","log (Simple Logging)",[288,322,323],{},"The simplest way to use evlog. Fire-and-forget structured logs, anywhere in your code:",[325,326,327,489],"code-group",{},[328,329,335],"pre",{"className":330,"code":331,"filename":332,"language":333,"meta":334,"style":334},"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' })\nlog.warn('cache', 'Cache miss')\n","Server","typescript","",[302,336,337,370,377,412,459],{"__ignoreMap":334},[338,339,342,346,350,354,357,360,363,367],"span",{"class":340,"line":341},"line",1,[338,343,345],{"class":344},"s7zQu","import",[338,347,349],{"class":348},"sMK4o"," {",[338,351,353],{"class":352},"sTEyZ"," log",[338,355,356],{"class":348}," }",[338,358,359],{"class":344}," from",[338,361,362],{"class":348}," '",[338,364,366],{"class":365},"sfazB","evlog",[338,368,369],{"class":348},"'\n",[338,371,373],{"class":340,"line":372},2,[338,374,376],{"emptyLinePlaceholder":375},true,"\n",[338,378,380,382,385,388,391,394,397,399,402,404,407,409],{"class":340,"line":379},3,[338,381,308],{"class":352},[338,383,384],{"class":348},".",[338,386,294],{"class":387},"s2Zo4",[338,389,390],{"class":352},"(",[338,392,393],{"class":348},"'",[338,395,396],{"class":365},"auth",[338,398,393],{"class":348},[338,400,401],{"class":348},",",[338,403,362],{"class":348},[338,405,406],{"class":365},"User logged in",[338,408,393],{"class":348},[338,410,411],{"class":352},")\n",[338,413,415,417,419,422,424,427,431,434,436,439,441,443,446,448,450,453,455,457],{"class":340,"line":414},4,[338,416,308],{"class":352},[338,418,384],{"class":348},[338,420,421],{"class":387},"error",[338,423,390],{"class":352},[338,425,426],{"class":348},"{",[338,428,430],{"class":429},"swJcz"," action",[338,432,433],{"class":348},":",[338,435,362],{"class":348},[338,437,438],{"class":365},"payment",[338,440,393],{"class":348},[338,442,401],{"class":348},[338,444,445],{"class":429}," error",[338,447,433],{"class":348},[338,449,362],{"class":348},[338,451,452],{"class":365},"card_declined",[338,454,393],{"class":348},[338,456,356],{"class":348},[338,458,411],{"class":352},[338,460,462,464,466,469,471,473,476,478,480,482,485,487],{"class":340,"line":461},5,[338,463,308],{"class":352},[338,465,384],{"class":348},[338,467,468],{"class":387},"warn",[338,470,390],{"class":352},[338,472,393],{"class":348},[338,474,475],{"class":365},"cache",[338,477,393],{"class":348},[338,479,401],{"class":348},[338,481,362],{"class":348},[338,483,484],{"class":365},"Cache miss",[338,486,393],{"class":348},[338,488,411],{"class":352},[328,490,495],{"className":491,"code":492,"filename":493,"language":494,"meta":334,"style":334},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","10:23:45.612 [auth] User logged in\n10:23:45.613 ERROR [my-app] action=payment error=card_declined\n10:23:45.614 [cache] Cache miss\n","Output","bash",[302,496,497,506,529],{"__ignoreMap":334},[338,498,499,503],{"class":340,"line":341},[338,500,502],{"class":501},"sBMFI","10:23:45.612",[338,504,505],{"class":352}," [auth] User logged in\n",[338,507,508,511,514,517,520,522,524,526],{"class":340,"line":372},[338,509,510],{"class":501},"10:23:45.613",[338,512,513],{"class":365}," ERROR",[338,515,516],{"class":352}," [my-app] action",[338,518,519],{"class":348},"=",[338,521,438],{"class":365},[338,523,445],{"class":352},[338,525,519],{"class":348},[338,527,528],{"class":365},"card_declined\n",[338,530,531,534],{"class":340,"line":379},[338,532,533],{"class":501},"10:23:45.614",[338,535,536],{"class":352}," [cache] Cache miss\n",[288,538,539],{},"Two call styles:",[541,542,543,554],"ul",{},[544,545,546,549,550,553],"li",{},[297,547,548],{},"Tagged",": ",[302,551,552],{},"log.info('tag', 'message')"," for quick, readable console output",[544,555,556,549,559,562],{},[297,557,558],{},"Structured",[302,560,561],{},"log.info({ key: value })"," for rich events that flow through the drain pipeline",[292,564,567,568,571],{"color":565,"icon":566},"neutral","i-lucide-arrow-right","See the full ",[569,570,41],"a",{"href":42}," guide for all patterns and drain integration.",[317,573,575],{"id":574},"createlogger-wide-events","createLogger (Wide Events)",[288,577,578,579,582,583,433],{},"When you need to ",[297,580,581],{},"accumulate context"," across multiple steps of an operation, whether a script, background job, queue worker, or workflow, use ",[302,584,585],{},"createLogger",[325,587,588,794],{},[328,589,592],{"className":330,"code":590,"filename":591,"language":333,"meta":334,"style":334},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'sync-worker' } })\n\nconst log = createLogger({ jobId: job.id, queue: 'emails' })\n\nlog.set({ batch: { size: 50 } })\nlog.set({ batch: { processed: 50 } })\nlog.emit()\n","scripts\u002Fsync-job.ts",[302,593,594,618,622,656,660,708,713,749,781],{"__ignoreMap":334},[338,595,596,598,600,603,605,608,610,612,614,616],{"class":340,"line":341},[338,597,345],{"class":344},[338,599,349],{"class":348},[338,601,602],{"class":352}," initLogger",[338,604,401],{"class":348},[338,606,607],{"class":352}," createLogger",[338,609,356],{"class":348},[338,611,359],{"class":344},[338,613,362],{"class":348},[338,615,366],{"class":365},[338,617,369],{"class":348},[338,619,620],{"class":340,"line":372},[338,621,376],{"emptyLinePlaceholder":375},[338,623,624,627,629,631,634,636,638,641,643,645,648,650,652,654],{"class":340,"line":379},[338,625,626],{"class":387},"initLogger",[338,628,390],{"class":352},[338,630,426],{"class":348},[338,632,633],{"class":429}," env",[338,635,433],{"class":348},[338,637,349],{"class":348},[338,639,640],{"class":429}," service",[338,642,433],{"class":348},[338,644,362],{"class":348},[338,646,647],{"class":365},"sync-worker",[338,649,393],{"class":348},[338,651,356],{"class":348},[338,653,356],{"class":348},[338,655,411],{"class":352},[338,657,658],{"class":340,"line":414},[338,659,376],{"emptyLinePlaceholder":375},[338,661,662,666,669,671,673,675,677,680,682,685,687,690,692,695,697,699,702,704,706],{"class":340,"line":461},[338,663,665],{"class":664},"spNyl","const",[338,667,668],{"class":352}," log ",[338,670,519],{"class":348},[338,672,607],{"class":387},[338,674,390],{"class":352},[338,676,426],{"class":348},[338,678,679],{"class":429}," jobId",[338,681,433],{"class":348},[338,683,684],{"class":352}," job",[338,686,384],{"class":348},[338,688,689],{"class":352},"id",[338,691,401],{"class":348},[338,693,694],{"class":429}," queue",[338,696,433],{"class":348},[338,698,362],{"class":348},[338,700,701],{"class":365},"emails",[338,703,393],{"class":348},[338,705,356],{"class":348},[338,707,411],{"class":352},[338,709,711],{"class":340,"line":710},6,[338,712,376],{"emptyLinePlaceholder":375},[338,714,716,718,720,723,725,727,730,732,734,737,739,743,745,747],{"class":340,"line":715},7,[338,717,308],{"class":352},[338,719,384],{"class":348},[338,721,722],{"class":387},"set",[338,724,390],{"class":352},[338,726,426],{"class":348},[338,728,729],{"class":429}," batch",[338,731,433],{"class":348},[338,733,349],{"class":348},[338,735,736],{"class":429}," size",[338,738,433],{"class":348},[338,740,742],{"class":741},"sbssI"," 50",[338,744,356],{"class":348},[338,746,356],{"class":348},[338,748,411],{"class":352},[338,750,752,754,756,758,760,762,764,766,768,771,773,775,777,779],{"class":340,"line":751},8,[338,753,308],{"class":352},[338,755,384],{"class":348},[338,757,722],{"class":387},[338,759,390],{"class":352},[338,761,426],{"class":348},[338,763,729],{"class":429},[338,765,433],{"class":348},[338,767,349],{"class":348},[338,769,770],{"class":429}," processed",[338,772,433],{"class":348},[338,774,742],{"class":741},[338,776,356],{"class":348},[338,778,356],{"class":348},[338,780,411],{"class":352},[338,782,784,786,788,791],{"class":340,"line":783},9,[338,785,308],{"class":352},[338,787,384],{"class":348},[338,789,790],{"class":387},"emit",[338,792,793],{"class":352},"()\n",[328,795,798],{"className":491,"code":796,"filename":797,"language":494,"meta":334,"style":334},"10:23:45.612 INFO [sync-worker] in 1204ms\n  ├─ jobId: job_abc123\n  ├─ queue: emails\n  └─ batch: size=50 processed=50\n","Output (Pretty)",[302,799,800,810,821,831],{"__ignoreMap":334},[338,801,802,804,807],{"class":340,"line":341},[338,803,502],{"class":501},[338,805,806],{"class":365}," INFO",[338,808,809],{"class":352}," [sync-worker] in 1204ms\n",[338,811,812,815,818],{"class":340,"line":372},[338,813,814],{"class":501},"  ├─",[338,816,817],{"class":365}," jobId:",[338,819,820],{"class":365}," job_abc123\n",[338,822,823,825,828],{"class":340,"line":379},[338,824,814],{"class":501},[338,826,827],{"class":365}," queue:",[338,829,830],{"class":365}," emails\n",[338,832,833,836,839,842,845,848],{"class":340,"line":414},[338,834,835],{"class":501},"  └─",[338,837,838],{"class":365}," batch:",[338,840,841],{"class":365}," size=",[338,843,844],{"class":741},"50",[338,846,847],{"class":365}," processed=",[338,849,850],{"class":741},"50\n",[288,852,853,856,857,305,859,305,861,305,863,305,865,867,868,384],{},[302,854,855],{},"createLogger()"," accepts any initial context as a plain object. It returns a logger with ",[302,858,722],{},[302,860,421],{},[302,862,294],{},[302,864,468],{},[302,866,790],{},", and ",[302,869,870],{},"getContext",[288,872,873,874,877,878,305,881,867,884,433],{},"For HTTP request contexts specifically, use ",[302,875,876],{},"createRequestLogger()"," which pre-populates ",[302,879,880],{},"method",[302,882,883],{},"path",[302,885,886],{},"requestId",[328,888,891],{"className":330,"code":889,"filename":890,"language":333,"meta":334,"style":334},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\n","src\u002Fworker.ts",[302,892,893,912,916],{"__ignoreMap":334},[338,894,895,897,899,902,904,906,908,910],{"class":340,"line":341},[338,896,345],{"class":344},[338,898,349],{"class":348},[338,900,901],{"class":352}," createRequestLogger",[338,903,356],{"class":348},[338,905,359],{"class":344},[338,907,362],{"class":348},[338,909,366],{"class":365},[338,911,369],{"class":348},[338,913,914],{"class":340,"line":372},[338,915,376],{"emptyLinePlaceholder":375},[338,917,918,920,922,924,926,928,930,933,935,937,940,942,944,947,949,951,954,956,958],{"class":340,"line":379},[338,919,665],{"class":664},[338,921,668],{"class":352},[338,923,519],{"class":348},[338,925,901],{"class":387},[338,927,390],{"class":352},[338,929,426],{"class":348},[338,931,932],{"class":429}," method",[338,934,433],{"class":348},[338,936,362],{"class":348},[338,938,939],{"class":365},"POST",[338,941,393],{"class":348},[338,943,401],{"class":348},[338,945,946],{"class":429}," path",[338,948,433],{"class":348},[338,950,362],{"class":348},[338,952,953],{"class":365},"\u002Fapi\u002Fcheckout",[338,955,393],{"class":348},[338,957,356],{"class":348},[338,959,411],{"class":352},[292,961,962,963,965,966,969,970,973],{"color":294,"icon":13},"With ",[302,964,585],{}," and ",[302,967,968],{},"createRequestLogger",", you must call ",[302,971,972],{},"log.emit()"," manually. In framework integrations, this happens automatically.",[317,975,977],{"id":976},"uselogger-retrieve-the-request-logger","useLogger (Retrieve the Request Logger)",[288,979,980,981,984],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware automatically creates a wide event logger on request start and emits it on response end. ",[302,982,983],{},"useLogger(event)"," retrieves that logger from the request context:",[325,986,987,1255],{},[328,988,991],{"className":330,"code":989,"filename":990,"language":333,"meta":334,"style":334},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  const order = await processCheckout()\n  log.set({ orderId: order.id })\n\n  return { success: true, orderId: order.id }\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[302,992,993,1012,1016,1048,1066,1070,1118,1161,1165,1182,1210,1215,1247],{"__ignoreMap":334},[338,994,995,997,999,1002,1004,1006,1008,1010],{"class":340,"line":341},[338,996,345],{"class":344},[338,998,349],{"class":348},[338,1000,1001],{"class":352}," useLogger",[338,1003,356],{"class":348},[338,1005,359],{"class":344},[338,1007,362],{"class":348},[338,1009,366],{"class":365},[338,1011,369],{"class":348},[338,1013,1014],{"class":340,"line":372},[338,1015,376],{"emptyLinePlaceholder":375},[338,1017,1018,1021,1024,1027,1029,1032,1035,1039,1042,1045],{"class":340,"line":379},[338,1019,1020],{"class":344},"export",[338,1022,1023],{"class":344}," default",[338,1025,1026],{"class":387}," defineEventHandler",[338,1028,390],{"class":352},[338,1030,1031],{"class":664},"async",[338,1033,1034],{"class":348}," (",[338,1036,1038],{"class":1037},"sHdIc","event",[338,1040,1041],{"class":348},")",[338,1043,1044],{"class":664}," =>",[338,1046,1047],{"class":348}," {\n",[338,1049,1050,1053,1055,1058,1060,1062,1064],{"class":340,"line":414},[338,1051,1052],{"class":664},"  const",[338,1054,353],{"class":352},[338,1056,1057],{"class":348}," =",[338,1059,1001],{"class":387},[338,1061,390],{"class":429},[338,1063,1038],{"class":352},[338,1065,411],{"class":429},[338,1067,1068],{"class":340,"line":461},[338,1069,376],{"emptyLinePlaceholder":375},[338,1071,1072,1075,1077,1079,1081,1083,1086,1088,1090,1093,1095,1098,1100,1103,1105,1107,1110,1112,1114,1116],{"class":340,"line":710},[338,1073,1074],{"class":352},"  log",[338,1076,384],{"class":348},[338,1078,722],{"class":387},[338,1080,390],{"class":429},[338,1082,426],{"class":348},[338,1084,1085],{"class":429}," user",[338,1087,433],{"class":348},[338,1089,349],{"class":348},[338,1091,1092],{"class":429}," id",[338,1094,433],{"class":348},[338,1096,1097],{"class":741}," 1",[338,1099,401],{"class":348},[338,1101,1102],{"class":429}," plan",[338,1104,433],{"class":348},[338,1106,362],{"class":348},[338,1108,1109],{"class":365},"pro",[338,1111,393],{"class":348},[338,1113,356],{"class":348},[338,1115,356],{"class":348},[338,1117,411],{"class":429},[338,1119,1120,1122,1124,1126,1128,1130,1133,1135,1137,1140,1142,1145,1147,1150,1152,1155,1157,1159],{"class":340,"line":715},[338,1121,1074],{"class":352},[338,1123,384],{"class":348},[338,1125,722],{"class":387},[338,1127,390],{"class":429},[338,1129,426],{"class":348},[338,1131,1132],{"class":429}," cart",[338,1134,433],{"class":348},[338,1136,349],{"class":348},[338,1138,1139],{"class":429}," items",[338,1141,433],{"class":348},[338,1143,1144],{"class":741}," 3",[338,1146,401],{"class":348},[338,1148,1149],{"class":429}," total",[338,1151,433],{"class":348},[338,1153,1154],{"class":741}," 9999",[338,1156,356],{"class":348},[338,1158,356],{"class":348},[338,1160,411],{"class":429},[338,1162,1163],{"class":340,"line":751},[338,1164,376],{"emptyLinePlaceholder":375},[338,1166,1167,1169,1172,1174,1177,1180],{"class":340,"line":783},[338,1168,1052],{"class":664},[338,1170,1171],{"class":352}," order",[338,1173,1057],{"class":348},[338,1175,1176],{"class":344}," await",[338,1178,1179],{"class":387}," processCheckout",[338,1181,793],{"class":429},[338,1183,1185,1187,1189,1191,1193,1195,1198,1200,1202,1204,1206,1208],{"class":340,"line":1184},10,[338,1186,1074],{"class":352},[338,1188,384],{"class":348},[338,1190,722],{"class":387},[338,1192,390],{"class":429},[338,1194,426],{"class":348},[338,1196,1197],{"class":429}," orderId",[338,1199,433],{"class":348},[338,1201,1171],{"class":352},[338,1203,384],{"class":348},[338,1205,689],{"class":352},[338,1207,356],{"class":348},[338,1209,411],{"class":429},[338,1211,1213],{"class":340,"line":1212},11,[338,1214,376],{"emptyLinePlaceholder":375},[338,1216,1218,1221,1223,1226,1228,1232,1234,1236,1238,1240,1242,1244],{"class":340,"line":1217},12,[338,1219,1220],{"class":344},"  return",[338,1222,349],{"class":348},[338,1224,1225],{"class":429}," success",[338,1227,433],{"class":348},[338,1229,1231],{"class":1230},"sfNiH"," true",[338,1233,401],{"class":348},[338,1235,1197],{"class":429},[338,1237,433],{"class":348},[338,1239,1171],{"class":352},[338,1241,384],{"class":348},[338,1243,689],{"class":352},[338,1245,1246],{"class":348}," }\n",[338,1248,1250,1253],{"class":340,"line":1249},13,[338,1251,1252],{"class":348},"}",[338,1254,411],{"class":352},[328,1256,1258],{"className":491,"code":1257,"filename":797,"language":494,"meta":334,"style":334},"10:23:45.612 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 234ms\n  ├─ user: id=1 plan=pro\n  ├─ cart: items=3 total=9999\n  └─ orderId: ord_abc123\n",[302,1259,1260,1269,1285,1304],{"__ignoreMap":334},[338,1261,1262,1264,1266],{"class":340,"line":341},[338,1263,502],{"class":501},[338,1265,806],{"class":365},[338,1267,1268],{"class":352}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 234ms\n",[338,1270,1271,1273,1276,1279,1282],{"class":340,"line":372},[338,1272,814],{"class":501},[338,1274,1275],{"class":365}," user:",[338,1277,1278],{"class":365}," id=",[338,1280,1281],{"class":741},"1",[338,1283,1284],{"class":365}," plan=pro\n",[338,1286,1287,1289,1292,1295,1298,1301],{"class":340,"line":379},[338,1288,814],{"class":501},[338,1290,1291],{"class":365}," cart:",[338,1293,1294],{"class":365}," items=",[338,1296,1297],{"class":741},"3",[338,1299,1300],{"class":365}," total=",[338,1302,1303],{"class":741},"9999\n",[338,1305,1306,1308,1311],{"class":340,"line":414},[338,1307,835],{"class":501},[338,1309,1310],{"class":365}," orderId:",[338,1312,1313],{"class":365}," ord_abc123\n",[292,1315,1318,1320,1321,384],{"color":1316,"icon":1317},"success","i-lucide-check",[302,1319,304],{}," doesn't create a logger, the framework middleware already did that. It just retrieves it from the event context so you can add data with ",[302,1322,1323],{},"set()",[1325,1326,1328],"h3",{"id":1327},"when-to-use-what","When to use what",[1330,1331,1332,1355],"table",{},[1333,1334,1335],"thead",{},[1336,1337,1338,1344,1351],"tr",{},[1339,1340,1341,1342],"th",{},"Use ",[302,1343,308],{},[1339,1345,1341,1346,1348,1349],{},[302,1347,855],{}," \u002F ",[302,1350,876],{},[1339,1352,1341,1353],{},[302,1354,983],{},[1356,1357,1358,1370,1381],"tbody",{},[1336,1359,1360,1364,1367],{},[1361,1362,1363],"td",{},"Quick one-off events",[1361,1365,1366],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1361,1368,1369],{},"API routes with a framework integration",[1336,1371,1372,1375,1378],{},[1361,1373,1374],{},"No context accumulation needed",[1361,1376,1377],{},"Accumulate context over an operation",[1361,1379,1380],{},"Retrieve the request-scoped logger",[1336,1382,1383,1386,1389],{},[1361,1384,1385],{},"Client-side logging",[1361,1387,1388],{},"Wide events (one log per operation)",[1361,1390,1391],{},"Access the auto-managed wide event",[1325,1393,1395],{"id":1394},"service-identification","Service Identification",[288,1397,1398],{},"In multi-service architectures, differentiate which service a log belongs to using either route-based configuration or explicit service names.",[1400,1401,1403],"h4",{"id":1402},"route-based-configuration","Route-Based Configuration",[288,1405,1406,1407,433],{},"Configure service names per route pattern in your ",[302,1408,1409],{},"nuxt.config.ts",[328,1411,1413],{"className":330,"code":1412,"filename":1409,"language":333,"meta":334,"style":334},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n\n  evlog: {\n    env: {\n      service: 'default-service',\n    },\n    routes: {\n      '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n      '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      '\u002Fapi\u002Fbooking\u002F**': { service: 'booking-service' },\n    },\n  },\n})\n",[302,1414,1415,1429,1452,1456,1465,1474,1490,1495,1504,1532,1558,1584,1588,1593],{"__ignoreMap":334},[338,1416,1417,1419,1421,1424,1426],{"class":340,"line":341},[338,1418,1020],{"class":344},[338,1420,1023],{"class":344},[338,1422,1423],{"class":387}," defineNuxtConfig",[338,1425,390],{"class":352},[338,1427,1428],{"class":348},"{\n",[338,1430,1431,1434,1436,1439,1441,1444,1446,1449],{"class":340,"line":372},[338,1432,1433],{"class":429},"  modules",[338,1435,433],{"class":348},[338,1437,1438],{"class":352}," [",[338,1440,393],{"class":348},[338,1442,1443],{"class":365},"evlog\u002Fnuxt",[338,1445,393],{"class":348},[338,1447,1448],{"class":352},"]",[338,1450,1451],{"class":348},",\n",[338,1453,1454],{"class":340,"line":379},[338,1455,376],{"emptyLinePlaceholder":375},[338,1457,1458,1461,1463],{"class":340,"line":414},[338,1459,1460],{"class":429},"  evlog",[338,1462,433],{"class":348},[338,1464,1047],{"class":348},[338,1466,1467,1470,1472],{"class":340,"line":461},[338,1468,1469],{"class":429},"    env",[338,1471,433],{"class":348},[338,1473,1047],{"class":348},[338,1475,1476,1479,1481,1483,1486,1488],{"class":340,"line":710},[338,1477,1478],{"class":429},"      service",[338,1480,433],{"class":348},[338,1482,362],{"class":348},[338,1484,1485],{"class":365},"default-service",[338,1487,393],{"class":348},[338,1489,1451],{"class":348},[338,1491,1492],{"class":340,"line":715},[338,1493,1494],{"class":348},"    },\n",[338,1496,1497,1500,1502],{"class":340,"line":751},[338,1498,1499],{"class":429},"    routes",[338,1501,433],{"class":348},[338,1503,1047],{"class":348},[338,1505,1506,1509,1512,1514,1516,1518,1520,1522,1524,1527,1529],{"class":340,"line":783},[338,1507,1508],{"class":348},"      '",[338,1510,1511],{"class":429},"\u002Fapi\u002Fauth\u002F**",[338,1513,393],{"class":348},[338,1515,433],{"class":348},[338,1517,349],{"class":348},[338,1519,640],{"class":429},[338,1521,433],{"class":348},[338,1523,362],{"class":348},[338,1525,1526],{"class":365},"auth-service",[338,1528,393],{"class":348},[338,1530,1531],{"class":348}," },\n",[338,1533,1534,1536,1539,1541,1543,1545,1547,1549,1551,1554,1556],{"class":340,"line":1184},[338,1535,1508],{"class":348},[338,1537,1538],{"class":429},"\u002Fapi\u002Fpayment\u002F**",[338,1540,393],{"class":348},[338,1542,433],{"class":348},[338,1544,349],{"class":348},[338,1546,640],{"class":429},[338,1548,433],{"class":348},[338,1550,362],{"class":348},[338,1552,1553],{"class":365},"payment-service",[338,1555,393],{"class":348},[338,1557,1531],{"class":348},[338,1559,1560,1562,1565,1567,1569,1571,1573,1575,1577,1580,1582],{"class":340,"line":1212},[338,1561,1508],{"class":348},[338,1563,1564],{"class":429},"\u002Fapi\u002Fbooking\u002F**",[338,1566,393],{"class":348},[338,1568,433],{"class":348},[338,1570,349],{"class":348},[338,1572,640],{"class":429},[338,1574,433],{"class":348},[338,1576,362],{"class":348},[338,1578,1579],{"class":365},"booking-service",[338,1581,393],{"class":348},[338,1583,1531],{"class":348},[338,1585,1586],{"class":340,"line":1217},[338,1587,1494],{"class":348},[338,1589,1590],{"class":340,"line":1249},[338,1591,1592],{"class":348},"  },\n",[338,1594,1596,1598],{"class":340,"line":1595},14,[338,1597,1252],{"class":348},[338,1599,411],{"class":352},[288,1601,1602],{},"Logs from routes matching these patterns will automatically include the configured service name:",[328,1604,1606],{"className":491,"code":1605,"filename":493,"language":494,"meta":334,"style":334},"21:57:10.442 INFO [auth-service] POST \u002Fapi\u002Fauth\u002Flogin 200 in 1ms\n  ├─ requestId: 88ced16a-bef2-4483-86cb-2b4fb677ea52\n  ├─ user: id=user_123 email=demo@example.com\n  └─ action: login\n",[302,1607,1608,1618,1628,1640],{"__ignoreMap":334},[338,1609,1610,1613,1615],{"class":340,"line":341},[338,1611,1612],{"class":501},"21:57:10.442",[338,1614,806],{"class":365},[338,1616,1617],{"class":352}," [auth-service] POST \u002Fapi\u002Fauth\u002Flogin 200 in 1ms\n",[338,1619,1620,1622,1625],{"class":340,"line":372},[338,1621,814],{"class":501},[338,1623,1624],{"class":365}," requestId:",[338,1626,1627],{"class":365}," 88ced16a-bef2-4483-86cb-2b4fb677ea52\n",[338,1629,1630,1632,1634,1637],{"class":340,"line":379},[338,1631,814],{"class":501},[338,1633,1275],{"class":365},[338,1635,1636],{"class":365}," id=user_123",[338,1638,1639],{"class":365}," email=demo@example.com\n",[338,1641,1642,1644,1647],{"class":340,"line":414},[338,1643,835],{"class":501},[338,1645,1646],{"class":365}," action:",[338,1648,1649],{"class":365}," login\n",[1400,1651,1653],{"id":1652},"explicit-service-parameter","Explicit Service Parameter",[288,1655,1656,1657,433],{},"Override the service name for specific routes using the second parameter of ",[302,1658,304],{},[328,1660,1663],{"className":330,"code":1661,"filename":1662,"language":333,"meta":334,"style":334},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler((event) => {\n  const log = useLogger(event, 'legacy-service')\n\n  log.set({ action: 'process_legacy_request' })\n\n  return { success: true }\n})\n","server\u002Fapi\u002Flegacy\u002Fprocess.post.ts",[302,1664,1665,1683,1687,1707,1732,1736,1763,1767,1781],{"__ignoreMap":334},[338,1666,1667,1669,1671,1673,1675,1677,1679,1681],{"class":340,"line":341},[338,1668,345],{"class":344},[338,1670,349],{"class":348},[338,1672,1001],{"class":352},[338,1674,356],{"class":348},[338,1676,359],{"class":344},[338,1678,362],{"class":348},[338,1680,366],{"class":365},[338,1682,369],{"class":348},[338,1684,1685],{"class":340,"line":372},[338,1686,376],{"emptyLinePlaceholder":375},[338,1688,1689,1691,1693,1695,1697,1699,1701,1703,1705],{"class":340,"line":379},[338,1690,1020],{"class":344},[338,1692,1023],{"class":344},[338,1694,1026],{"class":387},[338,1696,390],{"class":352},[338,1698,390],{"class":348},[338,1700,1038],{"class":1037},[338,1702,1041],{"class":348},[338,1704,1044],{"class":664},[338,1706,1047],{"class":348},[338,1708,1709,1711,1713,1715,1717,1719,1721,1723,1725,1728,1730],{"class":340,"line":414},[338,1710,1052],{"class":664},[338,1712,353],{"class":352},[338,1714,1057],{"class":348},[338,1716,1001],{"class":387},[338,1718,390],{"class":429},[338,1720,1038],{"class":352},[338,1722,401],{"class":348},[338,1724,362],{"class":348},[338,1726,1727],{"class":365},"legacy-service",[338,1729,393],{"class":348},[338,1731,411],{"class":429},[338,1733,1734],{"class":340,"line":461},[338,1735,376],{"emptyLinePlaceholder":375},[338,1737,1738,1740,1742,1744,1746,1748,1750,1752,1754,1757,1759,1761],{"class":340,"line":710},[338,1739,1074],{"class":352},[338,1741,384],{"class":348},[338,1743,722],{"class":387},[338,1745,390],{"class":429},[338,1747,426],{"class":348},[338,1749,430],{"class":429},[338,1751,433],{"class":348},[338,1753,362],{"class":348},[338,1755,1756],{"class":365},"process_legacy_request",[338,1758,393],{"class":348},[338,1760,356],{"class":348},[338,1762,411],{"class":429},[338,1764,1765],{"class":340,"line":715},[338,1766,376],{"emptyLinePlaceholder":375},[338,1768,1769,1771,1773,1775,1777,1779],{"class":340,"line":751},[338,1770,1220],{"class":344},[338,1772,349],{"class":348},[338,1774,1225],{"class":429},[338,1776,433],{"class":348},[338,1778,1231],{"class":1230},[338,1780,1246],{"class":348},[338,1782,1783,1785],{"class":340,"line":783},[338,1784,1252],{"class":348},[338,1786,411],{"class":352},[292,1788,1789,1792,1793,1795,1796,1799],{"color":294,"icon":13},[297,1790,1791],{},"Priority order:"," Explicit ",[302,1794,304],{}," parameter > Route configuration > ",[302,1797,1798],{},"env.service"," > Auto-detected from environment",[317,1801,1803],{"id":1802},"createerror-structured-errors","createError (Structured Errors)",[288,1805,1341,1806,1809],{},[302,1807,1808],{},"createError()"," to throw errors with actionable context:",[325,1811,1812,1933],{},[328,1813,1815],{"className":330,"code":1814,"filename":990,"language":333,"meta":334,"style":334},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer',\n  fix: 'Try a different payment method',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n",[302,1816,1817,1836,1840,1851,1867,1879,1895,1911,1927],{"__ignoreMap":334},[338,1818,1819,1821,1823,1826,1828,1830,1832,1834],{"class":340,"line":341},[338,1820,345],{"class":344},[338,1822,349],{"class":348},[338,1824,1825],{"class":352}," createError",[338,1827,356],{"class":348},[338,1829,359],{"class":344},[338,1831,362],{"class":348},[338,1833,366],{"class":365},[338,1835,369],{"class":348},[338,1837,1838],{"class":340,"line":372},[338,1839,376],{"emptyLinePlaceholder":375},[338,1841,1842,1845,1847,1849],{"class":340,"line":379},[338,1843,1844],{"class":344},"throw",[338,1846,1825],{"class":387},[338,1848,390],{"class":352},[338,1850,1428],{"class":348},[338,1852,1853,1856,1858,1860,1863,1865],{"class":340,"line":414},[338,1854,1855],{"class":429},"  message",[338,1857,433],{"class":348},[338,1859,362],{"class":348},[338,1861,1862],{"class":365},"Payment failed",[338,1864,393],{"class":348},[338,1866,1451],{"class":348},[338,1868,1869,1872,1874,1877],{"class":340,"line":461},[338,1870,1871],{"class":429},"  status",[338,1873,433],{"class":348},[338,1875,1876],{"class":741}," 402",[338,1878,1451],{"class":348},[338,1880,1881,1884,1886,1888,1891,1893],{"class":340,"line":710},[338,1882,1883],{"class":429},"  why",[338,1885,433],{"class":348},[338,1887,362],{"class":348},[338,1889,1890],{"class":365},"Card declined by issuer",[338,1892,393],{"class":348},[338,1894,1451],{"class":348},[338,1896,1897,1900,1902,1904,1907,1909],{"class":340,"line":715},[338,1898,1899],{"class":429},"  fix",[338,1901,433],{"class":348},[338,1903,362],{"class":348},[338,1905,1906],{"class":365},"Try a different payment method",[338,1908,393],{"class":348},[338,1910,1451],{"class":348},[338,1912,1913,1916,1918,1920,1923,1925],{"class":340,"line":751},[338,1914,1915],{"class":429},"  link",[338,1917,433],{"class":348},[338,1919,362],{"class":348},[338,1921,1922],{"class":365},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[338,1924,393],{"class":348},[338,1926,1451],{"class":348},[338,1928,1929,1931],{"class":340,"line":783},[338,1930,1252],{"class":348},[338,1932,411],{"class":352},[328,1934,1939],{"className":1935,"code":1936,"filename":1937,"language":1938,"meta":334,"style":334},"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\",\n    \"fix\": \"Try a different payment method\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n","Response","json",[302,1940,1941,1945,1962,1982,1995,2015,2034,2052,2057],{"__ignoreMap":334},[338,1942,1943],{"class":340,"line":341},[338,1944,1428],{"class":348},[338,1946,1947,1950,1953,1956,1958,1960],{"class":340,"line":372},[338,1948,1949],{"class":348},"  \"",[338,1951,1952],{"class":664},"statusCode",[338,1954,1955],{"class":348},"\"",[338,1957,433],{"class":348},[338,1959,1876],{"class":741},[338,1961,1451],{"class":348},[338,1963,1964,1966,1969,1971,1973,1976,1978,1980],{"class":340,"line":379},[338,1965,1949],{"class":348},[338,1967,1968],{"class":664},"message",[338,1970,1955],{"class":348},[338,1972,433],{"class":348},[338,1974,1975],{"class":348}," \"",[338,1977,1862],{"class":365},[338,1979,1955],{"class":348},[338,1981,1451],{"class":348},[338,1983,1984,1986,1989,1991,1993],{"class":340,"line":414},[338,1985,1949],{"class":348},[338,1987,1988],{"class":664},"data",[338,1990,1955],{"class":348},[338,1992,433],{"class":348},[338,1994,1047],{"class":348},[338,1996,1997,2000,2003,2005,2007,2009,2011,2013],{"class":340,"line":461},[338,1998,1999],{"class":348},"    \"",[338,2001,2002],{"class":501},"why",[338,2004,1955],{"class":348},[338,2006,433],{"class":348},[338,2008,1975],{"class":348},[338,2010,1890],{"class":365},[338,2012,1955],{"class":348},[338,2014,1451],{"class":348},[338,2016,2017,2019,2022,2024,2026,2028,2030,2032],{"class":340,"line":710},[338,2018,1999],{"class":348},[338,2020,2021],{"class":501},"fix",[338,2023,1955],{"class":348},[338,2025,433],{"class":348},[338,2027,1975],{"class":348},[338,2029,1906],{"class":365},[338,2031,1955],{"class":348},[338,2033,1451],{"class":348},[338,2035,2036,2038,2041,2043,2045,2047,2049],{"class":340,"line":715},[338,2037,1999],{"class":348},[338,2039,2040],{"class":501},"link",[338,2042,1955],{"class":348},[338,2044,433],{"class":348},[338,2046,1975],{"class":348},[338,2048,1922],{"class":365},[338,2050,2051],{"class":348},"\"\n",[338,2053,2054],{"class":340,"line":751},[338,2055,2056],{"class":348},"  }\n",[338,2058,2059],{"class":340,"line":783},[338,2060,2061],{"class":348},"}\n",[1325,2063,2065],{"id":2064},"error-fields","Error Fields",[1330,2067,2068,2081],{},[1333,2069,2070],{},[1336,2071,2072,2075,2078],{},[1339,2073,2074],{},"Field",[1339,2076,2077],{},"Required",[1339,2079,2080],{},"Description",[1356,2082,2083,2095,2108,2119,2130,2141,2153],{},[1336,2084,2085,2089,2092],{},[1361,2086,2087],{},[302,2088,1968],{},[1361,2090,2091],{},"Yes",[1361,2093,2094],{},"What happened (user-facing)",[1336,2096,2097,2102,2105],{},[1361,2098,2099],{},[302,2100,2101],{},"status",[1361,2103,2104],{},"No",[1361,2106,2107],{},"HTTP status code (default: 500)",[1336,2109,2110,2114,2116],{},[1361,2111,2112],{},[302,2113,2002],{},[1361,2115,2104],{},[1361,2117,2118],{},"Technical reason (for debugging)",[1336,2120,2121,2125,2127],{},[1361,2122,2123],{},[302,2124,2021],{},[1361,2126,2104],{},[1361,2128,2129],{},"Actionable solution",[1336,2131,2132,2136,2138],{},[1361,2133,2134],{},[302,2135,2040],{},[1361,2137,2104],{},[1361,2139,2140],{},"Documentation URL for more info",[1336,2142,2143,2148,2150],{},[1361,2144,2145],{},[302,2146,2147],{},"cause",[1361,2149,2104],{},[1361,2151,2152],{},"Original error (if wrapping)",[1336,2154,2155,2160,2162],{},[1361,2156,2157],{},[302,2158,2159],{},"internal",[1361,2161,2104],{},[1361,2163,2164,2165],{},"Backend-only fields for logs and wide events — never included in HTTP JSON or ",[302,2166,2167],{},"parseError()",[1325,2169,2171],{"id":2170},"frontend-integration","Frontend Integration",[288,2173,1341,2174,2176],{},[302,2175,2167],{}," to extract all error fields on the client:",[328,2178,2181],{"className":330,"code":2179,"filename":2180,"language":333,"meta":334,"style":334},"import { parseError } from 'evlog'\n\nexport async function checkout(cart: Cart) {\n  try {\n    await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST', body: cart })\n  } catch (err) {\n    const error = parseError(err)\n\n    toast.add({\n      title: error.message,\n      description: error.why,\n      color: 'error',\n      actions: error.link\n        ? [{ label: 'Learn more', onClick: () => window.open(error.link) }]\n        : undefined,\n    })\n\n    if (error.fix) {\n      console.info(`Fix: ${error.fix}`)\n    }\n  }\n}\n","composables\u002FuseCheckout.ts",[302,2182,2183,2202,2206,2233,2240,2283,2301,2318,2322,2336,2351,2366,2381,2395,2451,2460,2468,2473,2491,2523,2529,2534],{"__ignoreMap":334},[338,2184,2185,2187,2189,2192,2194,2196,2198,2200],{"class":340,"line":341},[338,2186,345],{"class":344},[338,2188,349],{"class":348},[338,2190,2191],{"class":352}," parseError",[338,2193,356],{"class":348},[338,2195,359],{"class":344},[338,2197,362],{"class":348},[338,2199,366],{"class":365},[338,2201,369],{"class":348},[338,2203,2204],{"class":340,"line":372},[338,2205,376],{"emptyLinePlaceholder":375},[338,2207,2208,2210,2213,2216,2219,2221,2224,2226,2229,2231],{"class":340,"line":379},[338,2209,1020],{"class":344},[338,2211,2212],{"class":664}," async",[338,2214,2215],{"class":664}," function",[338,2217,2218],{"class":387}," checkout",[338,2220,390],{"class":348},[338,2222,2223],{"class":1037},"cart",[338,2225,433],{"class":348},[338,2227,2228],{"class":501}," Cart",[338,2230,1041],{"class":348},[338,2232,1047],{"class":348},[338,2234,2235,2238],{"class":340,"line":414},[338,2236,2237],{"class":344},"  try",[338,2239,1047],{"class":348},[338,2241,2242,2245,2248,2250,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2275,2277,2279,2281],{"class":340,"line":461},[338,2243,2244],{"class":344},"    await",[338,2246,2247],{"class":387}," $fetch",[338,2249,390],{"class":429},[338,2251,393],{"class":348},[338,2253,953],{"class":365},[338,2255,393],{"class":348},[338,2257,401],{"class":348},[338,2259,349],{"class":348},[338,2261,932],{"class":429},[338,2263,433],{"class":348},[338,2265,362],{"class":348},[338,2267,939],{"class":365},[338,2269,393],{"class":348},[338,2271,401],{"class":348},[338,2273,2274],{"class":429}," body",[338,2276,433],{"class":348},[338,2278,1132],{"class":352},[338,2280,356],{"class":348},[338,2282,411],{"class":429},[338,2284,2285,2288,2291,2293,2296,2299],{"class":340,"line":710},[338,2286,2287],{"class":348},"  }",[338,2289,2290],{"class":344}," catch",[338,2292,1034],{"class":429},[338,2294,2295],{"class":352},"err",[338,2297,2298],{"class":429},") ",[338,2300,1428],{"class":348},[338,2302,2303,2306,2308,2310,2312,2314,2316],{"class":340,"line":715},[338,2304,2305],{"class":664},"    const",[338,2307,445],{"class":352},[338,2309,1057],{"class":348},[338,2311,2191],{"class":387},[338,2313,390],{"class":429},[338,2315,2295],{"class":352},[338,2317,411],{"class":429},[338,2319,2320],{"class":340,"line":751},[338,2321,376],{"emptyLinePlaceholder":375},[338,2323,2324,2327,2329,2332,2334],{"class":340,"line":783},[338,2325,2326],{"class":352},"    toast",[338,2328,384],{"class":348},[338,2330,2331],{"class":387},"add",[338,2333,390],{"class":429},[338,2335,1428],{"class":348},[338,2337,2338,2341,2343,2345,2347,2349],{"class":340,"line":1184},[338,2339,2340],{"class":429},"      title",[338,2342,433],{"class":348},[338,2344,445],{"class":352},[338,2346,384],{"class":348},[338,2348,1968],{"class":352},[338,2350,1451],{"class":348},[338,2352,2353,2356,2358,2360,2362,2364],{"class":340,"line":1212},[338,2354,2355],{"class":429},"      description",[338,2357,433],{"class":348},[338,2359,445],{"class":352},[338,2361,384],{"class":348},[338,2363,2002],{"class":352},[338,2365,1451],{"class":348},[338,2367,2368,2371,2373,2375,2377,2379],{"class":340,"line":1217},[338,2369,2370],{"class":429},"      color",[338,2372,433],{"class":348},[338,2374,362],{"class":348},[338,2376,421],{"class":365},[338,2378,393],{"class":348},[338,2380,1451],{"class":348},[338,2382,2383,2386,2388,2390,2392],{"class":340,"line":1249},[338,2384,2385],{"class":429},"      actions",[338,2387,433],{"class":348},[338,2389,445],{"class":352},[338,2391,384],{"class":348},[338,2393,2394],{"class":352},"link\n",[338,2396,2397,2400,2402,2404,2407,2409,2411,2414,2416,2418,2421,2423,2426,2428,2431,2433,2436,2438,2440,2442,2444,2446,2448],{"class":340,"line":1595},[338,2398,2399],{"class":348},"        ?",[338,2401,1438],{"class":429},[338,2403,426],{"class":348},[338,2405,2406],{"class":429}," label",[338,2408,433],{"class":348},[338,2410,362],{"class":348},[338,2412,2413],{"class":365},"Learn more",[338,2415,393],{"class":348},[338,2417,401],{"class":348},[338,2419,2420],{"class":387}," onClick",[338,2422,433],{"class":348},[338,2424,2425],{"class":348}," ()",[338,2427,1044],{"class":664},[338,2429,2430],{"class":352}," window",[338,2432,384],{"class":348},[338,2434,2435],{"class":387},"open",[338,2437,390],{"class":429},[338,2439,421],{"class":352},[338,2441,384],{"class":348},[338,2443,2040],{"class":352},[338,2445,2298],{"class":429},[338,2447,1252],{"class":348},[338,2449,2450],{"class":429},"]\n",[338,2452,2454,2457],{"class":340,"line":2453},15,[338,2455,2456],{"class":348},"        :",[338,2458,2459],{"class":348}," undefined,\n",[338,2461,2463,2466],{"class":340,"line":2462},16,[338,2464,2465],{"class":348},"    }",[338,2467,411],{"class":429},[338,2469,2471],{"class":340,"line":2470},17,[338,2472,376],{"emptyLinePlaceholder":375},[338,2474,2476,2479,2481,2483,2485,2487,2489],{"class":340,"line":2475},18,[338,2477,2478],{"class":344},"    if",[338,2480,1034],{"class":429},[338,2482,421],{"class":352},[338,2484,384],{"class":348},[338,2486,2021],{"class":352},[338,2488,2298],{"class":429},[338,2490,1428],{"class":348},[338,2492,2494,2497,2499,2501,2503,2506,2509,2512,2514,2516,2518,2521],{"class":340,"line":2493},19,[338,2495,2496],{"class":352},"      console",[338,2498,384],{"class":348},[338,2500,294],{"class":387},[338,2502,390],{"class":429},[338,2504,2505],{"class":348},"`",[338,2507,2508],{"class":365},"Fix: ",[338,2510,2511],{"class":348},"${",[338,2513,421],{"class":352},[338,2515,384],{"class":348},[338,2517,2021],{"class":352},[338,2519,2520],{"class":348},"}`",[338,2522,411],{"class":429},[338,2524,2526],{"class":340,"line":2525},20,[338,2527,2528],{"class":348},"    }\n",[338,2530,2532],{"class":340,"line":2531},21,[338,2533,2056],{"class":348},[338,2535,2537],{"class":340,"line":2536},22,[338,2538,2061],{"class":348},[317,2540,2542],{"id":2541},"log-client-side","log (Client-Side)",[288,2544,2545,2546,2548],{},"The same ",[302,2547,308],{}," API works on the client side, outputting to the browser console:",[325,2550,2551,2779],{},[328,2552,2557],{"className":2553,"code":2554,"filename":2555,"language":2556,"meta":334,"style":334},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nasync function handleCheckout() {\n  log.info('checkout', 'User initiated checkout')\n\n  try {\n    await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST' })\n    log.info({ action: 'checkout', status: 'success' })\n  } catch (err) {\n    log.error({ action: 'checkout', error: 'failed' })\n  }\n}\n\u003C\u002Fscript>\n","components\u002FCheckoutButton.vue","vue",[302,2558,2559,2585,2599,2627,2631,2637,2669,2709,2723,2762,2766,2770],{"__ignoreMap":334},[338,2560,2561,2564,2567,2570,2573,2575,2577,2580,2582],{"class":340,"line":341},[338,2562,2563],{"class":348},"\u003C",[338,2565,2566],{"class":429},"script",[338,2568,2569],{"class":664}," setup",[338,2571,2572],{"class":664}," lang",[338,2574,519],{"class":348},[338,2576,1955],{"class":348},[338,2578,2579],{"class":365},"ts",[338,2581,1955],{"class":348},[338,2583,2584],{"class":348},">\n",[338,2586,2587,2589,2591,2594,2597],{"class":340,"line":372},[338,2588,1031],{"class":664},[338,2590,2215],{"class":664},[338,2592,2593],{"class":387}," handleCheckout",[338,2595,2596],{"class":348},"()",[338,2598,1047],{"class":348},[338,2600,2601,2603,2605,2607,2609,2611,2614,2616,2618,2620,2623,2625],{"class":340,"line":379},[338,2602,1074],{"class":352},[338,2604,384],{"class":348},[338,2606,294],{"class":387},[338,2608,390],{"class":429},[338,2610,393],{"class":348},[338,2612,2613],{"class":365},"checkout",[338,2615,393],{"class":348},[338,2617,401],{"class":348},[338,2619,362],{"class":348},[338,2621,2622],{"class":365},"User initiated checkout",[338,2624,393],{"class":348},[338,2626,411],{"class":429},[338,2628,2629],{"class":340,"line":414},[338,2630,376],{"emptyLinePlaceholder":375},[338,2632,2633,2635],{"class":340,"line":461},[338,2634,2237],{"class":344},[338,2636,1047],{"class":348},[338,2638,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667],{"class":340,"line":710},[338,2640,2244],{"class":344},[338,2642,2247],{"class":387},[338,2644,390],{"class":429},[338,2646,393],{"class":348},[338,2648,953],{"class":365},[338,2650,393],{"class":348},[338,2652,401],{"class":348},[338,2654,349],{"class":348},[338,2656,932],{"class":429},[338,2658,433],{"class":348},[338,2660,362],{"class":348},[338,2662,939],{"class":365},[338,2664,393],{"class":348},[338,2666,356],{"class":348},[338,2668,411],{"class":429},[338,2670,2671,2674,2676,2678,2680,2682,2684,2686,2688,2690,2692,2694,2697,2699,2701,2703,2705,2707],{"class":340,"line":715},[338,2672,2673],{"class":352},"    log",[338,2675,384],{"class":348},[338,2677,294],{"class":387},[338,2679,390],{"class":429},[338,2681,426],{"class":348},[338,2683,430],{"class":429},[338,2685,433],{"class":348},[338,2687,362],{"class":348},[338,2689,2613],{"class":365},[338,2691,393],{"class":348},[338,2693,401],{"class":348},[338,2695,2696],{"class":429}," status",[338,2698,433],{"class":348},[338,2700,362],{"class":348},[338,2702,1316],{"class":365},[338,2704,393],{"class":348},[338,2706,356],{"class":348},[338,2708,411],{"class":429},[338,2710,2711,2713,2715,2717,2719,2721],{"class":340,"line":751},[338,2712,2287],{"class":348},[338,2714,2290],{"class":344},[338,2716,1034],{"class":429},[338,2718,2295],{"class":352},[338,2720,2298],{"class":429},[338,2722,1428],{"class":348},[338,2724,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2756,2758,2760],{"class":340,"line":783},[338,2726,2673],{"class":352},[338,2728,384],{"class":348},[338,2730,421],{"class":387},[338,2732,390],{"class":429},[338,2734,426],{"class":348},[338,2736,430],{"class":429},[338,2738,433],{"class":348},[338,2740,362],{"class":348},[338,2742,2613],{"class":365},[338,2744,393],{"class":348},[338,2746,401],{"class":348},[338,2748,445],{"class":429},[338,2750,433],{"class":348},[338,2752,362],{"class":348},[338,2754,2755],{"class":365},"failed",[338,2757,393],{"class":348},[338,2759,356],{"class":348},[338,2761,411],{"class":429},[338,2763,2764],{"class":340,"line":1184},[338,2765,2056],{"class":348},[338,2767,2768],{"class":340,"line":1212},[338,2769,2061],{"class":348},[338,2771,2772,2775,2777],{"class":340,"line":1217},[338,2773,2774],{"class":348},"\u003C\u002F",[338,2776,2566],{"class":429},[338,2778,2584],{"class":348},[328,2780,2783],{"className":330,"code":2781,"filename":2782,"language":333,"meta":334,"style":334},"export function useAnalytics() {\n  function trackEvent(event: string, data?: Record\u003Cstring, unknown>) {\n    log.info('analytics', `Event: ${event}`)\n    if (data) {\n      log.debug({ event, ...data })\n    }\n  }\n\n  return { trackEvent }\n}\n","composables\u002FuseAnalytics.ts",[302,2784,2785,2798,2841,2874,2886,2914,2918,2922,2926,2936],{"__ignoreMap":334},[338,2786,2787,2789,2791,2794,2796],{"class":340,"line":341},[338,2788,1020],{"class":344},[338,2790,2215],{"class":664},[338,2792,2793],{"class":387}," useAnalytics",[338,2795,2596],{"class":348},[338,2797,1047],{"class":348},[338,2799,2800,2803,2806,2808,2810,2812,2815,2817,2820,2823,2826,2828,2831,2833,2836,2839],{"class":340,"line":372},[338,2801,2802],{"class":664},"  function",[338,2804,2805],{"class":387}," trackEvent",[338,2807,390],{"class":348},[338,2809,1038],{"class":1037},[338,2811,433],{"class":348},[338,2813,2814],{"class":501}," string",[338,2816,401],{"class":348},[338,2818,2819],{"class":1037}," data",[338,2821,2822],{"class":348},"?:",[338,2824,2825],{"class":501}," Record",[338,2827,2563],{"class":348},[338,2829,2830],{"class":501},"string",[338,2832,401],{"class":348},[338,2834,2835],{"class":501}," unknown",[338,2837,2838],{"class":348},">)",[338,2840,1047],{"class":348},[338,2842,2843,2845,2847,2849,2851,2853,2856,2858,2860,2863,2866,2868,2870,2872],{"class":340,"line":379},[338,2844,2673],{"class":352},[338,2846,384],{"class":348},[338,2848,294],{"class":387},[338,2850,390],{"class":429},[338,2852,393],{"class":348},[338,2854,2855],{"class":365},"analytics",[338,2857,393],{"class":348},[338,2859,401],{"class":348},[338,2861,2862],{"class":348}," `",[338,2864,2865],{"class":365},"Event: ",[338,2867,2511],{"class":348},[338,2869,1038],{"class":352},[338,2871,2520],{"class":348},[338,2873,411],{"class":429},[338,2875,2876,2878,2880,2882,2884],{"class":340,"line":414},[338,2877,2478],{"class":344},[338,2879,1034],{"class":429},[338,2881,1988],{"class":352},[338,2883,2298],{"class":429},[338,2885,1428],{"class":348},[338,2887,2888,2891,2893,2896,2898,2900,2903,2905,2908,2910,2912],{"class":340,"line":461},[338,2889,2890],{"class":352},"      log",[338,2892,384],{"class":348},[338,2894,2895],{"class":387},"debug",[338,2897,390],{"class":429},[338,2899,426],{"class":348},[338,2901,2902],{"class":352}," event",[338,2904,401],{"class":348},[338,2906,2907],{"class":348}," ...",[338,2909,1988],{"class":352},[338,2911,356],{"class":348},[338,2913,411],{"class":429},[338,2915,2916],{"class":340,"line":710},[338,2917,2528],{"class":348},[338,2919,2920],{"class":340,"line":715},[338,2921,2056],{"class":348},[338,2923,2924],{"class":340,"line":751},[338,2925,376],{"emptyLinePlaceholder":375},[338,2927,2928,2930,2932,2934],{"class":340,"line":783},[338,2929,1220],{"class":344},[338,2931,349],{"class":348},[338,2933,2805],{"class":352},[338,2935,1246],{"class":348},[338,2937,2938],{"class":340,"line":1184},[338,2939,2061],{"class":348},[292,2941,2942,2943,2945],{"color":565,"icon":566},"See ",[569,2944,56],{"href":57}," for transport configuration, identity context, and browser drain setup.",[317,2947,2949],{"id":2948},"next-steps","Next Steps",[541,2951,2952,2958,2963,2968,2973],{},[544,2953,2954,2957],{},[569,2955,2956],{"href":37},"Logging Overview",": Understand all three logging modes",[544,2959,2960,2962],{},[569,2961,46],{"href":47},": Learn how to design effective wide events",[544,2964,2965,2967],{},[569,2966,86],{"href":87},": Add compile-time type safety to your wide events",[544,2969,2970,2972],{},[569,2971,51],{"href":52},": Master error handling with evlog",[544,2974,2975,2977],{},[569,2976,91],{"href":92},": Security guidelines and production tips",[2979,2980,2981],"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":334,"searchDepth":372,"depth":372,"links":2983},[2984,2985,2986,2990,2994,2995],{"id":319,"depth":372,"text":320},{"id":574,"depth":372,"text":575},{"id":976,"depth":372,"text":977,"children":2987},[2988,2989],{"id":1327,"depth":379,"text":1328},{"id":1394,"depth":379,"text":1395},{"id":1802,"depth":372,"text":1803,"children":2991},[2992,2993],{"id":2064,"depth":379,"text":2065},{"id":2170,"depth":379,"text":2171},{"id":2541,"depth":372,"text":2542},{"id":2948,"depth":372,"text":2949},"Get up and running with evlog in minutes. Learn the log API, createLogger for wide events, useLogger for requests, and structured errors.","md",[2999,3001],{"label":2956,"icon":39,"to":37,"color":565,"variant":3000},"subtle",{"label":51,"icon":54,"to":52,"color":565,"variant":3000},{},{"icon":23},{"title":20,"description":2996},"nSKePPMhwkymFB3ojIEHJfZoPLd1HIJfUZFEpzFTetE",[3007,3009],{"title":15,"path":16,"stem":17,"description":3008,"icon":18,"children":-1},"Install evlog in your TypeScript project. Supports Nuxt, Next.js, SvelteKit, Hono, Express, Fastify, Elysia, NestJS, and standalone scripts.",{"title":25,"path":26,"stem":27,"description":3010,"icon":28,"children":-1},"AI-assisted code review and evlog adoption using Agent Skills. Let AI review your logging patterns and guide migration to wide events.",1775319487945]