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