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