[{"data":1,"prerenderedAt":3573},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-nuxt":308,"-frameworks-nuxt-surround":3568},[4,35,80,124,212,292],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"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",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,75],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F4.client-logging","i-lucide-monitor",{"title":66,"path":67,"stem":68,"icon":69},"AI SDK Integration","\u002Flogging\u002Fai-sdk","2.logging\u002F5.ai-sdk","i-simple-icons-vercel",{"title":71,"path":72,"stem":73,"icon":74},"Better Auth Integration","\u002Flogging\u002Fbetter-auth","2.logging\u002F6.better-auth","i-simple-icons-betterauth",{"title":76,"path":77,"stem":78,"icon":79},"Audit Logs","\u002Flogging\u002Faudit","2.logging\u002F7.audit","i-lucide-shield-check",{"title":81,"path":82,"stem":83,"children":84,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[85,90,95,100,105,109,114,119],{"title":86,"path":87,"stem":88,"icon":89},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":91,"path":92,"stem":93,"icon":94},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":96,"path":97,"stem":98,"icon":99},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":101,"path":102,"stem":103,"icon":104},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":106,"path":107,"stem":108,"icon":79},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":110,"path":111,"stem":112,"icon":113},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":115,"path":116,"stem":117,"icon":118},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":120,"path":121,"stem":122,"icon":123},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":125,"path":126,"stem":127,"children":128,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[129,133,138,143,148,153,158,163,168,173,178,183,188,193,197,202,207],{"title":41,"path":130,"stem":131,"icon":132},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":134,"path":135,"stem":136,"icon":137},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":139,"path":140,"stem":141,"icon":142},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":144,"path":145,"stem":146,"icon":147},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":149,"path":150,"stem":151,"icon":152},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":154,"path":155,"stem":156,"icon":157},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":159,"path":160,"stem":161,"icon":162},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":164,"path":165,"stem":166,"icon":167},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":169,"path":170,"stem":171,"icon":172},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":174,"path":175,"stem":176,"icon":177},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":179,"path":180,"stem":181,"icon":182},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":184,"path":185,"stem":186,"icon":187},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":189,"path":190,"stem":191,"icon":192},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":194,"path":195,"stem":196,"icon":104},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":198,"path":199,"stem":200,"icon":201},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"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,"icon":211},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":213,"path":214,"stem":215,"children":216,"page":34},"Adapters","\u002Fadapters","6.adapters",[217,257,272],{"title":218,"path":219,"stem":220,"children":221,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[222,227,232,237,242,247,252],{"title":223,"path":224,"stem":225,"icon":226},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":228,"path":229,"stem":230,"icon":231},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":233,"path":234,"stem":235,"icon":236},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":238,"path":239,"stem":240,"icon":241},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":243,"path":244,"stem":245,"icon":246},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":248,"path":249,"stem":250,"icon":251},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":253,"path":254,"stem":255,"icon":256},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":258,"path":259,"stem":260,"children":261,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[262,267],{"title":263,"path":264,"stem":265,"icon":266},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":268,"path":269,"stem":270,"icon":271},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":273,"path":274,"stem":275,"children":276,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[277,282,287],{"title":278,"path":279,"stem":280,"icon":281},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":283,"path":284,"stem":285,"icon":286},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":288,"path":289,"stem":290,"icon":291},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom","i-lucide-code",{"title":293,"path":294,"stem":295,"children":296,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[297,300,304],{"title":41,"path":298,"stem":299,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":301,"path":302,"stem":303,"icon":211},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":305,"path":306,"stem":307,"icon":291},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":309,"title":134,"body":310,"description":3561,"extension":3562,"links":3563,"meta":3564,"navigation":3565,"path":135,"seo":3566,"stem":136,"__hash__":3567},"docs\u002F4.frameworks\u002F01.nuxt.md",{"type":311,"value":312,"toc":3533},"minimark",[313,330,377,381,386,457,461,577,587,590,597,952,955,1033,1037,1052,1310,1326,1329,1350,1360,1634,1638,1647,1779,1793,1797,1800,1967,1971,1974,1978,2216,2220,2427,2437,2439,2443,2446,2573,2576,2580,2583,2727,2731,2738,2891,2898,2902,2905,2998,3002,3031,3035,3041,3146,3150,3153,3286,3290,3297,3490,3494,3500,3529],[314,315,316,317,321,322,325,326,329],"p",{},"evlog provides a first-class Nuxt module with auto-imported ",[318,319,320],"code",{},"useLogger",", ",[318,323,324],{},"createError",", and ",[318,327,328],{},"parseError",". Add it to your config and start logging with zero boilerplate.",[331,332,335,338,363],"prompt",{":actions":333,"description":334,"icon":137},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my Nuxt app",[314,336,337],{},"Set up evlog in my Nuxt app with wide events and structured errors.",[339,340,341,345,348,351,354,357,360],"ul",{},[342,343,344],"li",{},"Install evlog: pnpm add evlog",[342,346,347],{},"Add 'evlog\u002Fnuxt' to modules in nuxt.config.ts",[342,349,350],{},"Set evlog.env.service to my app name",[342,352,353],{},"useLogger, createError, and parseError are auto-imported",[342,355,356],{},"Create a server\u002Fapi route using useLogger(event) and log.set() to build a wide event",[342,358,359],{},"Throw errors with createError({ message, status, why, fix })",[342,361,362],{},"Wide events are auto-emitted when each request completes",[314,364,365,366,372,373],{},"Docs: ",[367,368,369],"a",{"href":369,"rel":370},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fnuxt",[371],"nofollow","\nAdapters: ",[367,374,375],{"href":375,"rel":376},"https:\u002F\u002Fwww.evlog.dev\u002Fadapters",[371],[378,379,20],"h2",{"id":380},"quick-start",[382,383,385],"h3",{"id":384},"_1-install","1. Install",[387,388,389,414,428,442],"code-group",{},[390,391,397],"pre",{"className":392,"code":393,"filename":394,"language":395,"meta":396,"style":396},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[318,398,399],{"__ignoreMap":396},[400,401,404,407,411],"span",{"class":402,"line":403},"line",1,[400,405,394],{"class":406},"sBMFI",[400,408,410],{"class":409},"sfazB"," add",[400,412,413],{"class":409}," evlog\n",[390,415,418],{"className":392,"code":416,"filename":417,"language":395,"meta":396,"style":396},"bun add evlog\n","bun",[318,419,420],{"__ignoreMap":396},[400,421,422,424,426],{"class":402,"line":403},[400,423,417],{"class":406},[400,425,410],{"class":409},[400,427,413],{"class":409},[390,429,432],{"className":392,"code":430,"filename":431,"language":395,"meta":396,"style":396},"yarn add evlog\n","yarn",[318,433,434],{"__ignoreMap":396},[400,435,436,438,440],{"class":402,"line":403},[400,437,431],{"class":406},[400,439,410],{"class":409},[400,441,413],{"class":409},[390,443,446],{"className":392,"code":444,"filename":445,"language":395,"meta":396,"style":396},"npm install evlog\n","npm",[318,447,448],{"__ignoreMap":396},[400,449,450,452,455],{"class":402,"line":403},[400,451,445],{"class":406},[400,453,454],{"class":409}," install",[400,456,413],{"class":409},[382,458,460],{"id":459},"_2-add-the-module","2. Add the module",[390,462,467],{"className":463,"code":464,"filename":465,"language":466,"meta":396,"style":396},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: {\n      service: 'my-app',\n    },\n  },\n})\n","nuxt.config.ts","typescript",[318,468,469,490,517,528,538,556,562,568],{"__ignoreMap":396},[400,470,471,475,478,482,486],{"class":402,"line":403},[400,472,474],{"class":473},"s7zQu","export",[400,476,477],{"class":473}," default",[400,479,481],{"class":480},"s2Zo4"," defineNuxtConfig",[400,483,485],{"class":484},"sTEyZ","(",[400,487,489],{"class":488},"sMK4o","{\n",[400,491,493,497,500,503,506,509,511,514],{"class":402,"line":492},2,[400,494,496],{"class":495},"swJcz","  modules",[400,498,499],{"class":488},":",[400,501,502],{"class":484}," [",[400,504,505],{"class":488},"'",[400,507,508],{"class":409},"evlog\u002Fnuxt",[400,510,505],{"class":488},[400,512,513],{"class":484},"]",[400,515,516],{"class":488},",\n",[400,518,520,523,525],{"class":402,"line":519},3,[400,521,522],{"class":495},"  evlog",[400,524,499],{"class":488},[400,526,527],{"class":488}," {\n",[400,529,531,534,536],{"class":402,"line":530},4,[400,532,533],{"class":495},"    env",[400,535,499],{"class":488},[400,537,527],{"class":488},[400,539,541,544,546,549,552,554],{"class":402,"line":540},5,[400,542,543],{"class":495},"      service",[400,545,499],{"class":488},[400,547,548],{"class":488}," '",[400,550,551],{"class":409},"my-app",[400,553,505],{"class":488},[400,555,516],{"class":488},[400,557,559],{"class":402,"line":558},6,[400,560,561],{"class":488},"    },\n",[400,563,565],{"class":402,"line":564},7,[400,566,567],{"class":488},"  },\n",[400,569,571,574],{"class":402,"line":570},8,[400,572,573],{"class":488},"}",[400,575,576],{"class":484},")\n",[314,578,579,580,321,582,325,584,586],{},"That's it. ",[318,581,320],{},[318,583,324],{},[318,585,328],{}," are auto-imported.",[378,588,51],{"id":589},"wide-events",[314,591,592,593,596],{},"Build up context progressively throughout a request with ",[318,594,595],{},"useLogger(event)",". evlog emits a single wide event when the request completes.",[390,598,601],{"className":463,"code":599,"filename":600,"language":466,"meta":396,"style":396},"export default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId, plan: 'enterprise' } })\n\n  const cart = await db.findCart(body.cartId)\n  log.set({ cart: { items: cart.items.length, total: cart.total } })\n\n  const payment = await processPayment(cart)\n  log.set({ payment: { method: payment.method, cardLast4: payment.last4 } })\n\n  return { success: true, orderId: payment.orderId }\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[318,602,603,633,653,674,680,738,742,773,828,833,855,906,911,945],{"__ignoreMap":396},[400,604,605,607,609,612,614,618,621,625,628,631],{"class":402,"line":403},[400,606,474],{"class":473},[400,608,477],{"class":473},[400,610,611],{"class":480}," defineEventHandler",[400,613,485],{"class":484},[400,615,617],{"class":616},"spNyl","async",[400,619,620],{"class":488}," (",[400,622,624],{"class":623},"sHdIc","event",[400,626,627],{"class":488},")",[400,629,630],{"class":616}," =>",[400,632,527],{"class":488},[400,634,635,638,641,644,647,649,651],{"class":402,"line":492},[400,636,637],{"class":616},"  const",[400,639,640],{"class":484}," log",[400,642,643],{"class":488}," =",[400,645,646],{"class":480}," useLogger",[400,648,485],{"class":495},[400,650,624],{"class":484},[400,652,576],{"class":495},[400,654,655,657,660,662,665,668,670,672],{"class":402,"line":519},[400,656,637],{"class":616},[400,658,659],{"class":484}," body",[400,661,643],{"class":488},[400,663,664],{"class":473}," await",[400,666,667],{"class":480}," readBody",[400,669,485],{"class":495},[400,671,624],{"class":484},[400,673,576],{"class":495},[400,675,676],{"class":402,"line":530},[400,677,679],{"emptyLinePlaceholder":678},true,"\n",[400,681,682,685,688,691,693,696,699,701,704,707,709,711,713,716,719,722,724,726,729,731,734,736],{"class":402,"line":540},[400,683,684],{"class":484},"  log",[400,686,687],{"class":488},".",[400,689,690],{"class":480},"set",[400,692,485],{"class":495},[400,694,695],{"class":488},"{",[400,697,698],{"class":495}," user",[400,700,499],{"class":488},[400,702,703],{"class":488}," {",[400,705,706],{"class":495}," id",[400,708,499],{"class":488},[400,710,659],{"class":484},[400,712,687],{"class":488},[400,714,715],{"class":484},"userId",[400,717,718],{"class":488},",",[400,720,721],{"class":495}," plan",[400,723,499],{"class":488},[400,725,548],{"class":488},[400,727,728],{"class":409},"enterprise",[400,730,505],{"class":488},[400,732,733],{"class":488}," }",[400,735,733],{"class":488},[400,737,576],{"class":495},[400,739,740],{"class":402,"line":558},[400,741,679],{"emptyLinePlaceholder":678},[400,743,744,746,749,751,753,756,758,761,763,766,768,771],{"class":402,"line":564},[400,745,637],{"class":616},[400,747,748],{"class":484}," cart",[400,750,643],{"class":488},[400,752,664],{"class":473},[400,754,755],{"class":484}," db",[400,757,687],{"class":488},[400,759,760],{"class":480},"findCart",[400,762,485],{"class":495},[400,764,765],{"class":484},"body",[400,767,687],{"class":488},[400,769,770],{"class":484},"cartId",[400,772,576],{"class":495},[400,774,775,777,779,781,783,785,787,789,791,794,796,798,800,803,805,808,810,813,815,817,819,822,824,826],{"class":402,"line":570},[400,776,684],{"class":484},[400,778,687],{"class":488},[400,780,690],{"class":480},[400,782,485],{"class":495},[400,784,695],{"class":488},[400,786,748],{"class":495},[400,788,499],{"class":488},[400,790,703],{"class":488},[400,792,793],{"class":495}," items",[400,795,499],{"class":488},[400,797,748],{"class":484},[400,799,687],{"class":488},[400,801,802],{"class":484},"items",[400,804,687],{"class":488},[400,806,807],{"class":484},"length",[400,809,718],{"class":488},[400,811,812],{"class":495}," total",[400,814,499],{"class":488},[400,816,748],{"class":484},[400,818,687],{"class":488},[400,820,821],{"class":484},"total",[400,823,733],{"class":488},[400,825,733],{"class":488},[400,827,576],{"class":495},[400,829,831],{"class":402,"line":830},9,[400,832,679],{"emptyLinePlaceholder":678},[400,834,836,838,841,843,845,848,850,853],{"class":402,"line":835},10,[400,837,637],{"class":616},[400,839,840],{"class":484}," payment",[400,842,643],{"class":488},[400,844,664],{"class":473},[400,846,847],{"class":480}," processPayment",[400,849,485],{"class":495},[400,851,852],{"class":484},"cart",[400,854,576],{"class":495},[400,856,858,860,862,864,866,868,870,872,874,877,879,881,883,886,888,891,893,895,897,900,902,904],{"class":402,"line":857},11,[400,859,684],{"class":484},[400,861,687],{"class":488},[400,863,690],{"class":480},[400,865,485],{"class":495},[400,867,695],{"class":488},[400,869,840],{"class":495},[400,871,499],{"class":488},[400,873,703],{"class":488},[400,875,876],{"class":495}," method",[400,878,499],{"class":488},[400,880,840],{"class":484},[400,882,687],{"class":488},[400,884,885],{"class":484},"method",[400,887,718],{"class":488},[400,889,890],{"class":495}," cardLast4",[400,892,499],{"class":488},[400,894,840],{"class":484},[400,896,687],{"class":488},[400,898,899],{"class":484},"last4",[400,901,733],{"class":488},[400,903,733],{"class":488},[400,905,576],{"class":495},[400,907,909],{"class":402,"line":908},12,[400,910,679],{"emptyLinePlaceholder":678},[400,912,914,917,919,922,924,928,930,933,935,937,939,942],{"class":402,"line":913},13,[400,915,916],{"class":473},"  return",[400,918,703],{"class":488},[400,920,921],{"class":495}," success",[400,923,499],{"class":488},[400,925,927],{"class":926},"sfNiH"," true",[400,929,718],{"class":488},[400,931,932],{"class":495}," orderId",[400,934,499],{"class":488},[400,936,840],{"class":484},[400,938,687],{"class":488},[400,940,941],{"class":484},"orderId",[400,943,944],{"class":488}," }\n",[400,946,948,950],{"class":402,"line":947},14,[400,949,573],{"class":488},[400,951,576],{"class":484},[314,953,954],{},"One request, one log line with all context:",[390,956,959],{"className":392,"code":957,"filename":958,"language":395,"meta":396,"style":396},"10:23:45 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123 plan=enterprise\n  ├─ cart: items=3 total=14999\n  ├─ payment: method=card cardLast4=4242\n  └─ requestId: a1b2c3d4-...\n","Terminal output",[318,960,961,972,986,1006,1022],{"__ignoreMap":396},[400,962,963,966,969],{"class":402,"line":403},[400,964,965],{"class":406},"10:23:45",[400,967,968],{"class":409}," INFO",[400,970,971],{"class":484}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[400,973,974,977,980,983],{"class":402,"line":492},[400,975,976],{"class":406},"  ├─",[400,978,979],{"class":409}," user:",[400,981,982],{"class":409}," id=usr_123",[400,984,985],{"class":409}," plan=enterprise\n",[400,987,988,990,993,996,1000,1003],{"class":402,"line":519},[400,989,976],{"class":406},[400,991,992],{"class":409}," cart:",[400,994,995],{"class":409}," items=",[400,997,999],{"class":998},"sbssI","3",[400,1001,1002],{"class":409}," total=",[400,1004,1005],{"class":998},"14999\n",[400,1007,1008,1010,1013,1016,1019],{"class":402,"line":530},[400,1009,976],{"class":406},[400,1011,1012],{"class":409}," payment:",[400,1014,1015],{"class":409}," method=card",[400,1017,1018],{"class":409}," cardLast4=",[400,1020,1021],{"class":998},"4242\n",[400,1023,1024,1027,1030],{"class":402,"line":540},[400,1025,1026],{"class":406},"  └─",[400,1028,1029],{"class":409}," requestId:",[400,1031,1032],{"class":409}," a1b2c3d4-...\n",[378,1034,1036],{"id":1035},"error-handling","Error Handling",[314,1038,1039,1041,1042,321,1045,325,1048,1051],{},[318,1040,324],{}," produces structured errors with ",[318,1043,1044],{},"why",[318,1046,1047],{},"fix",[318,1049,1050],{},"link"," fields that help both humans and AI agents understand what went wrong.",[390,1053,1056],{"className":463,"code":1054,"filename":1055,"language":466,"meta":396,"style":396},"export default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ payment: { amount: body.amount } })\n\n  if (body.amount \u003C= 0) {\n    throw createError({\n      status: 400,\n      message: 'Invalid payment amount',\n      why: 'The amount must be a positive number',\n      fix: 'Pass a positive integer in cents (e.g. 4999 for $49.99)',\n      link: 'https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount',\n    })\n  }\n\n  return { success: true }\n})\n","server\u002Fapi\u002Fpayment\u002Fprocess.post.ts",[318,1057,1058,1080,1096,1114,1118,1154,1158,1182,1194,1206,1222,1238,1254,1270,1277,1283,1288,1303],{"__ignoreMap":396},[400,1059,1060,1062,1064,1066,1068,1070,1072,1074,1076,1078],{"class":402,"line":403},[400,1061,474],{"class":473},[400,1063,477],{"class":473},[400,1065,611],{"class":480},[400,1067,485],{"class":484},[400,1069,617],{"class":616},[400,1071,620],{"class":488},[400,1073,624],{"class":623},[400,1075,627],{"class":488},[400,1077,630],{"class":616},[400,1079,527],{"class":488},[400,1081,1082,1084,1086,1088,1090,1092,1094],{"class":402,"line":492},[400,1083,637],{"class":616},[400,1085,640],{"class":484},[400,1087,643],{"class":488},[400,1089,646],{"class":480},[400,1091,485],{"class":495},[400,1093,624],{"class":484},[400,1095,576],{"class":495},[400,1097,1098,1100,1102,1104,1106,1108,1110,1112],{"class":402,"line":519},[400,1099,637],{"class":616},[400,1101,659],{"class":484},[400,1103,643],{"class":488},[400,1105,664],{"class":473},[400,1107,667],{"class":480},[400,1109,485],{"class":495},[400,1111,624],{"class":484},[400,1113,576],{"class":495},[400,1115,1116],{"class":402,"line":530},[400,1117,679],{"emptyLinePlaceholder":678},[400,1119,1120,1122,1124,1126,1128,1130,1132,1134,1136,1139,1141,1143,1145,1148,1150,1152],{"class":402,"line":540},[400,1121,684],{"class":484},[400,1123,687],{"class":488},[400,1125,690],{"class":480},[400,1127,485],{"class":495},[400,1129,695],{"class":488},[400,1131,840],{"class":495},[400,1133,499],{"class":488},[400,1135,703],{"class":488},[400,1137,1138],{"class":495}," amount",[400,1140,499],{"class":488},[400,1142,659],{"class":484},[400,1144,687],{"class":488},[400,1146,1147],{"class":484},"amount",[400,1149,733],{"class":488},[400,1151,733],{"class":488},[400,1153,576],{"class":495},[400,1155,1156],{"class":402,"line":558},[400,1157,679],{"emptyLinePlaceholder":678},[400,1159,1160,1163,1165,1167,1169,1171,1174,1177,1180],{"class":402,"line":564},[400,1161,1162],{"class":473},"  if",[400,1164,620],{"class":495},[400,1166,765],{"class":484},[400,1168,687],{"class":488},[400,1170,1147],{"class":484},[400,1172,1173],{"class":488}," \u003C=",[400,1175,1176],{"class":998}," 0",[400,1178,1179],{"class":495},") ",[400,1181,489],{"class":488},[400,1183,1184,1187,1190,1192],{"class":402,"line":570},[400,1185,1186],{"class":473},"    throw",[400,1188,1189],{"class":480}," createError",[400,1191,485],{"class":495},[400,1193,489],{"class":488},[400,1195,1196,1199,1201,1204],{"class":402,"line":830},[400,1197,1198],{"class":495},"      status",[400,1200,499],{"class":488},[400,1202,1203],{"class":998}," 400",[400,1205,516],{"class":488},[400,1207,1208,1211,1213,1215,1218,1220],{"class":402,"line":835},[400,1209,1210],{"class":495},"      message",[400,1212,499],{"class":488},[400,1214,548],{"class":488},[400,1216,1217],{"class":409},"Invalid payment amount",[400,1219,505],{"class":488},[400,1221,516],{"class":488},[400,1223,1224,1227,1229,1231,1234,1236],{"class":402,"line":857},[400,1225,1226],{"class":495},"      why",[400,1228,499],{"class":488},[400,1230,548],{"class":488},[400,1232,1233],{"class":409},"The amount must be a positive number",[400,1235,505],{"class":488},[400,1237,516],{"class":488},[400,1239,1240,1243,1245,1247,1250,1252],{"class":402,"line":908},[400,1241,1242],{"class":495},"      fix",[400,1244,499],{"class":488},[400,1246,548],{"class":488},[400,1248,1249],{"class":409},"Pass a positive integer in cents (e.g. 4999 for $49.99)",[400,1251,505],{"class":488},[400,1253,516],{"class":488},[400,1255,1256,1259,1261,1263,1266,1268],{"class":402,"line":913},[400,1257,1258],{"class":495},"      link",[400,1260,499],{"class":488},[400,1262,548],{"class":488},[400,1264,1265],{"class":409},"https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount",[400,1267,505],{"class":488},[400,1269,516],{"class":488},[400,1271,1272,1275],{"class":402,"line":947},[400,1273,1274],{"class":488},"    }",[400,1276,576],{"class":495},[400,1278,1280],{"class":402,"line":1279},15,[400,1281,1282],{"class":488},"  }\n",[400,1284,1286],{"class":402,"line":1285},16,[400,1287,679],{"emptyLinePlaceholder":678},[400,1289,1291,1293,1295,1297,1299,1301],{"class":402,"line":1290},17,[400,1292,916],{"class":473},[400,1294,703],{"class":488},[400,1296,921],{"class":495},[400,1298,499],{"class":488},[400,1300,927],{"class":926},[400,1302,944],{"class":488},[400,1304,1306,1308],{"class":402,"line":1305},18,[400,1307,573],{"class":488},[400,1309,576],{"class":484},[1311,1312,1314,1315,1318,1319,321,1321,325,1323,1325],"callout",{"color":1313,"icon":13},"info","Nuxt's error handler automatically catches ",[318,1316,1317],{},"EvlogError"," and returns a structured JSON response with ",[318,1320,1044],{},[318,1322,1047],{},[318,1324,1050],{}," fields.",[378,1327,91],{"id":1328},"configuration",[1311,1330,1332,1333,1336,1337,321,1340,321,1343,321,1346,1349],{"color":1313,"icon":1331},"i-lucide-book-open","See the ",[367,1334,1335],{"href":92},"Configuration reference"," for the full list of shared options (",[318,1338,1339],{},"enabled",[318,1341,1342],{},"pretty",[318,1344,1345],{},"silent",[318,1347,1348],{},"sampling",", middleware options, etc.).",[314,1351,1352,1353,1355,1356,1359],{},"All options are set in ",[318,1354,465],{}," under the ",[318,1357,1358],{},"evlog"," key:",[1361,1362,1363,1382],"table",{},[1364,1365,1366],"thead",{},[1367,1368,1369,1373,1376,1379],"tr",{},[1370,1371,1372],"th",{},"Option",[1370,1374,1375],{},"Type",[1370,1377,1378],{},"Default",[1370,1380,1381],{},"Description",[1383,1384,1385,1409,1427,1447,1464,1487,1505,1524,1542,1559,1578,1597,1615],"tbody",{},[1367,1386,1387,1392,1397,1402],{},[1388,1389,1390],"td",{},[318,1391,1339],{},[1388,1393,1394],{},[318,1395,1396],{},"boolean",[1388,1398,1399],{},[318,1400,1401],{},"true",[1388,1403,1404,1405,1408],{},"Globally enable\u002Fdisable all logging. When ",[318,1406,1407],{},"false",", all operations become no-ops",[1367,1410,1411,1416,1420,1424],{},[1388,1412,1413],{},[318,1414,1415],{},"console",[1388,1417,1418],{},[318,1419,1396],{},[1388,1421,1422],{},[318,1423,1401],{},[1388,1425,1426],{},"Enable\u002Fdisable browser console output",[1367,1428,1429,1434,1439,1444],{},[1388,1430,1431],{},[318,1432,1433],{},"env.service",[1388,1435,1436],{},[318,1437,1438],{},"string",[1388,1440,1441],{},[318,1442,1443],{},"'app'",[1388,1445,1446],{},"Service name shown in logs",[1367,1448,1449,1454,1458,1461],{},[1388,1450,1451],{},[318,1452,1453],{},"env.environment",[1388,1455,1456],{},[318,1457,1438],{},[1388,1459,1460],{},"Auto-detected",[1388,1462,1463],{},"Environment name",[1367,1465,1466,1471,1476,1481],{},[1388,1467,1468],{},[318,1469,1470],{},"include",[1388,1472,1473],{},[318,1474,1475],{},"string[]",[1388,1477,1478],{},[318,1479,1480],{},"undefined",[1388,1482,1483,1484,627],{},"Route patterns to log. Supports glob (",[318,1485,1486],{},"\u002Fapi\u002F**",[1367,1488,1489,1494,1498,1502],{},[1388,1490,1491],{},[318,1492,1493],{},"exclude",[1388,1495,1496],{},[318,1497,1475],{},[1388,1499,1500],{},[318,1501,1480],{},[1388,1503,1504],{},"Route patterns to exclude. Exclusions take precedence",[1367,1506,1507,1512,1517,1521],{},[1388,1508,1509],{},[318,1510,1511],{},"routes",[1388,1513,1514],{},[318,1515,1516],{},"Record\u003Cstring, RouteConfig>",[1388,1518,1519],{},[318,1520,1480],{},[1388,1522,1523],{},"Route-specific service configuration",[1367,1525,1526,1530,1534,1539],{},[1388,1527,1528],{},[318,1529,1342],{},[1388,1531,1532],{},[318,1533,1396],{},[1388,1535,1536,1538],{},[318,1537,1401],{}," in dev",[1388,1540,1541],{},"Pretty print with tree formatting",[1367,1543,1544,1548,1552,1556],{},[1388,1545,1546],{},[318,1547,1345],{},[1388,1549,1550],{},[318,1551,1396],{},[1388,1553,1554],{},[318,1555,1407],{},[1388,1557,1558],{},"Suppress console output. Events are still built, sampled, and drained. Use for stdout-based platforms",[1367,1560,1561,1566,1571,1575],{},[1388,1562,1563],{},[318,1564,1565],{},"sampling.rates",[1388,1567,1568],{},[318,1569,1570],{},"object",[1388,1572,1573],{},[318,1574,1480],{},[1388,1576,1577],{},"Head sampling rates per log level (0-100%)",[1367,1579,1580,1585,1590,1594],{},[1388,1581,1582],{},[318,1583,1584],{},"sampling.keep",[1388,1586,1587],{},[318,1588,1589],{},"array",[1388,1591,1592],{},[318,1593,1480],{},[1388,1595,1596],{},"Tail sampling conditions to force-keep logs",[1367,1598,1599,1604,1608,1612],{},[1388,1600,1601],{},[318,1602,1603],{},"transport.enabled",[1388,1605,1606],{},[318,1607,1396],{},[1388,1609,1610],{},[318,1611,1407],{},[1388,1613,1614],{},"Enable client-to-server log transport",[1367,1616,1617,1622,1626,1631],{},[1388,1618,1619],{},[318,1620,1621],{},"transport.endpoint",[1388,1623,1624],{},[318,1625,1438],{},[1388,1627,1628],{},[318,1629,1630],{},"'\u002Fapi\u002F_evlog\u002Fingest'",[1388,1632,1633],{},"Transport endpoint",[378,1635,1637],{"id":1636},"route-filtering","Route Filtering",[314,1639,1640,1641,1643,1644,1646],{},"Use ",[318,1642,1470],{}," and ",[318,1645,1493],{}," to control which routes are logged:",[390,1648,1650],{"className":463,"code":1649,"filename":465,"language":466,"meta":396,"style":396},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    include: ['\u002Fapi\u002F**', '\u002Fauth\u002F**'],\n    exclude: [\n      '\u002Fapi\u002F_nuxt_icon\u002F**',\n      '\u002Fapi\u002F_content\u002F**',\n      '\u002Fapi\u002Fhealth',\n    ],\n  },\n})\n",[318,1651,1652,1664,1682,1690,1718,1728,1740,1751,1762,1769,1773],{"__ignoreMap":396},[400,1653,1654,1656,1658,1660,1662],{"class":402,"line":403},[400,1655,474],{"class":473},[400,1657,477],{"class":473},[400,1659,481],{"class":480},[400,1661,485],{"class":484},[400,1663,489],{"class":488},[400,1665,1666,1668,1670,1672,1674,1676,1678,1680],{"class":402,"line":492},[400,1667,496],{"class":495},[400,1669,499],{"class":488},[400,1671,502],{"class":484},[400,1673,505],{"class":488},[400,1675,508],{"class":409},[400,1677,505],{"class":488},[400,1679,513],{"class":484},[400,1681,516],{"class":488},[400,1683,1684,1686,1688],{"class":402,"line":519},[400,1685,522],{"class":495},[400,1687,499],{"class":488},[400,1689,527],{"class":488},[400,1691,1692,1695,1697,1699,1701,1703,1705,1707,1709,1712,1714,1716],{"class":402,"line":530},[400,1693,1694],{"class":495},"    include",[400,1696,499],{"class":488},[400,1698,502],{"class":484},[400,1700,505],{"class":488},[400,1702,1486],{"class":409},[400,1704,505],{"class":488},[400,1706,718],{"class":488},[400,1708,548],{"class":488},[400,1710,1711],{"class":409},"\u002Fauth\u002F**",[400,1713,505],{"class":488},[400,1715,513],{"class":484},[400,1717,516],{"class":488},[400,1719,1720,1723,1725],{"class":402,"line":540},[400,1721,1722],{"class":495},"    exclude",[400,1724,499],{"class":488},[400,1726,1727],{"class":484}," [\n",[400,1729,1730,1733,1736,1738],{"class":402,"line":558},[400,1731,1732],{"class":488},"      '",[400,1734,1735],{"class":409},"\u002Fapi\u002F_nuxt_icon\u002F**",[400,1737,505],{"class":488},[400,1739,516],{"class":488},[400,1741,1742,1744,1747,1749],{"class":402,"line":564},[400,1743,1732],{"class":488},[400,1745,1746],{"class":409},"\u002Fapi\u002F_content\u002F**",[400,1748,505],{"class":488},[400,1750,516],{"class":488},[400,1752,1753,1755,1758,1760],{"class":402,"line":570},[400,1754,1732],{"class":488},[400,1756,1757],{"class":409},"\u002Fapi\u002Fhealth",[400,1759,505],{"class":488},[400,1761,516],{"class":488},[400,1763,1764,1767],{"class":402,"line":830},[400,1765,1766],{"class":484},"    ]",[400,1768,516],{"class":488},[400,1770,1771],{"class":402,"line":835},[400,1772,567],{"class":488},[400,1774,1775,1777],{"class":402,"line":857},[400,1776,573],{"class":488},[400,1778,576],{"class":484},[1311,1780,1783,1787,1788,1643,1790,1792],{"color":1781,"icon":1782},"warning","i-lucide-alert-triangle",[1784,1785,1786],"strong",{},"Exclusions take precedence."," If a path matches both ",[318,1789,1470],{},[318,1791,1493],{},", it will be excluded.",[382,1794,1796],{"id":1795},"route-based-service-names","Route-Based Service Names",[314,1798,1799],{},"Assign different service names to different route groups:",[390,1801,1803],{"className":463,"code":1802,"filename":465,"language":466,"meta":396,"style":396},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'default-service' },\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",[318,1804,1805,1817,1835,1843,1866,1875,1901,1927,1953,1957,1961],{"__ignoreMap":396},[400,1806,1807,1809,1811,1813,1815],{"class":402,"line":403},[400,1808,474],{"class":473},[400,1810,477],{"class":473},[400,1812,481],{"class":480},[400,1814,485],{"class":484},[400,1816,489],{"class":488},[400,1818,1819,1821,1823,1825,1827,1829,1831,1833],{"class":402,"line":492},[400,1820,496],{"class":495},[400,1822,499],{"class":488},[400,1824,502],{"class":484},[400,1826,505],{"class":488},[400,1828,508],{"class":409},[400,1830,505],{"class":488},[400,1832,513],{"class":484},[400,1834,516],{"class":488},[400,1836,1837,1839,1841],{"class":402,"line":519},[400,1838,522],{"class":495},[400,1840,499],{"class":488},[400,1842,527],{"class":488},[400,1844,1845,1847,1849,1851,1854,1856,1858,1861,1863],{"class":402,"line":530},[400,1846,533],{"class":495},[400,1848,499],{"class":488},[400,1850,703],{"class":488},[400,1852,1853],{"class":495}," service",[400,1855,499],{"class":488},[400,1857,548],{"class":488},[400,1859,1860],{"class":409},"default-service",[400,1862,505],{"class":488},[400,1864,1865],{"class":488}," },\n",[400,1867,1868,1871,1873],{"class":402,"line":540},[400,1869,1870],{"class":495},"    routes",[400,1872,499],{"class":488},[400,1874,527],{"class":488},[400,1876,1877,1879,1882,1884,1886,1888,1890,1892,1894,1897,1899],{"class":402,"line":558},[400,1878,1732],{"class":488},[400,1880,1881],{"class":495},"\u002Fapi\u002Fauth\u002F**",[400,1883,505],{"class":488},[400,1885,499],{"class":488},[400,1887,703],{"class":488},[400,1889,1853],{"class":495},[400,1891,499],{"class":488},[400,1893,548],{"class":488},[400,1895,1896],{"class":409},"auth-service",[400,1898,505],{"class":488},[400,1900,1865],{"class":488},[400,1902,1903,1905,1908,1910,1912,1914,1916,1918,1920,1923,1925],{"class":402,"line":564},[400,1904,1732],{"class":488},[400,1906,1907],{"class":495},"\u002Fapi\u002Fpayment\u002F**",[400,1909,505],{"class":488},[400,1911,499],{"class":488},[400,1913,703],{"class":488},[400,1915,1853],{"class":495},[400,1917,499],{"class":488},[400,1919,548],{"class":488},[400,1921,1922],{"class":409},"payment-service",[400,1924,505],{"class":488},[400,1926,1865],{"class":488},[400,1928,1929,1931,1934,1936,1938,1940,1942,1944,1946,1949,1951],{"class":402,"line":570},[400,1930,1732],{"class":488},[400,1932,1933],{"class":495},"\u002Fapi\u002Fbooking\u002F**",[400,1935,505],{"class":488},[400,1937,499],{"class":488},[400,1939,703],{"class":488},[400,1941,1853],{"class":495},[400,1943,499],{"class":488},[400,1945,548],{"class":488},[400,1947,1948],{"class":409},"booking-service",[400,1950,505],{"class":488},[400,1952,1865],{"class":488},[400,1954,1955],{"class":402,"line":830},[400,1956,561],{"class":488},[400,1958,1959],{"class":402,"line":835},[400,1960,567],{"class":488},[400,1962,1963,1965],{"class":402,"line":857},[400,1964,573],{"class":488},[400,1966,576],{"class":484},[378,1968,1970],{"id":1969},"drain-enrichers","Drain & Enrichers",[314,1972,1973],{},"Use Nitro plugin hooks to send logs to external services and enrich them with additional context.",[382,1975,1977],{"id":1976},"drain-plugin","Drain Plugin",[390,1979,1982],{"className":463,"code":1980,"filename":1981,"language":466,"meta":396,"style":396},"import type { DrainContext } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[318,1983,1984,2009,2029,2049,2053,2079,2108,2127,2133,2153,2157,2179,2210],{"__ignoreMap":396},[400,1985,1986,1989,1992,1994,1997,1999,2002,2004,2006],{"class":402,"line":403},[400,1987,1988],{"class":473},"import",[400,1990,1991],{"class":473}," type",[400,1993,703],{"class":488},[400,1995,1996],{"class":484}," DrainContext",[400,1998,733],{"class":488},[400,2000,2001],{"class":473}," from",[400,2003,548],{"class":488},[400,2005,1358],{"class":409},[400,2007,2008],{"class":488},"'\n",[400,2010,2011,2013,2015,2018,2020,2022,2024,2027],{"class":402,"line":492},[400,2012,1988],{"class":473},[400,2014,703],{"class":488},[400,2016,2017],{"class":484}," createAxiomDrain",[400,2019,733],{"class":488},[400,2021,2001],{"class":473},[400,2023,548],{"class":488},[400,2025,2026],{"class":409},"evlog\u002Faxiom",[400,2028,2008],{"class":488},[400,2030,2031,2033,2035,2038,2040,2042,2044,2047],{"class":402,"line":519},[400,2032,1988],{"class":473},[400,2034,703],{"class":488},[400,2036,2037],{"class":484}," createDrainPipeline",[400,2039,733],{"class":488},[400,2041,2001],{"class":473},[400,2043,548],{"class":488},[400,2045,2046],{"class":409},"evlog\u002Fpipeline",[400,2048,2008],{"class":488},[400,2050,2051],{"class":402,"line":530},[400,2052,679],{"emptyLinePlaceholder":678},[400,2054,2055,2058,2061,2064,2066,2069,2072,2075,2077],{"class":402,"line":540},[400,2056,2057],{"class":616},"const",[400,2059,2060],{"class":484}," pipeline ",[400,2062,2063],{"class":488},"=",[400,2065,2037],{"class":480},[400,2067,2068],{"class":488},"\u003C",[400,2070,2071],{"class":406},"DrainContext",[400,2073,2074],{"class":488},">",[400,2076,485],{"class":484},[400,2078,489],{"class":488},[400,2080,2081,2084,2086,2088,2091,2093,2096,2098,2101,2103,2106],{"class":402,"line":558},[400,2082,2083],{"class":495},"  batch",[400,2085,499],{"class":488},[400,2087,703],{"class":488},[400,2089,2090],{"class":495}," size",[400,2092,499],{"class":488},[400,2094,2095],{"class":998}," 50",[400,2097,718],{"class":488},[400,2099,2100],{"class":495}," intervalMs",[400,2102,499],{"class":488},[400,2104,2105],{"class":998}," 5000",[400,2107,1865],{"class":488},[400,2109,2110,2113,2115,2117,2120,2122,2125],{"class":402,"line":564},[400,2111,2112],{"class":495},"  retry",[400,2114,499],{"class":488},[400,2116,703],{"class":488},[400,2118,2119],{"class":495}," maxAttempts",[400,2121,499],{"class":488},[400,2123,2124],{"class":998}," 3",[400,2126,1865],{"class":488},[400,2128,2129,2131],{"class":402,"line":570},[400,2130,573],{"class":488},[400,2132,576],{"class":484},[400,2134,2135,2137,2140,2142,2145,2147,2150],{"class":402,"line":830},[400,2136,2057],{"class":616},[400,2138,2139],{"class":484}," drain ",[400,2141,2063],{"class":488},[400,2143,2144],{"class":480}," pipeline",[400,2146,485],{"class":484},[400,2148,2149],{"class":480},"createAxiomDrain",[400,2151,2152],{"class":484},"())\n",[400,2154,2155],{"class":402,"line":835},[400,2156,679],{"emptyLinePlaceholder":678},[400,2158,2159,2161,2163,2166,2168,2170,2173,2175,2177],{"class":402,"line":857},[400,2160,474],{"class":473},[400,2162,477],{"class":473},[400,2164,2165],{"class":480}," defineNitroPlugin",[400,2167,485],{"class":484},[400,2169,485],{"class":488},[400,2171,2172],{"class":623},"nitroApp",[400,2174,627],{"class":488},[400,2176,630],{"class":616},[400,2178,527],{"class":488},[400,2180,2181,2184,2186,2189,2191,2194,2196,2198,2201,2203,2205,2208],{"class":402,"line":908},[400,2182,2183],{"class":484},"  nitroApp",[400,2185,687],{"class":488},[400,2187,2188],{"class":484},"hooks",[400,2190,687],{"class":488},[400,2192,2193],{"class":480},"hook",[400,2195,485],{"class":495},[400,2197,505],{"class":488},[400,2199,2200],{"class":409},"evlog:drain",[400,2202,505],{"class":488},[400,2204,718],{"class":488},[400,2206,2207],{"class":484}," drain",[400,2209,576],{"class":495},[400,2211,2212,2214],{"class":402,"line":913},[400,2213,573],{"class":488},[400,2215,576],{"class":484},[382,2217,2219],{"id":2218},"enricher-plugin","Enricher Plugin",[390,2221,2224],{"className":463,"code":2222,"filename":2223,"language":466,"meta":396,"style":396},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","server\u002Fplugins\u002Fevlog-enrich.ts",[318,2225,2226,2232,2239,2246,2253,2260,2273,2277,2288,2297,2305,2313,2321,2326,2330,2350,2384,2413,2420],{"__ignoreMap":396},[400,2227,2228,2230],{"class":402,"line":403},[400,2229,1988],{"class":473},[400,2231,527],{"class":488},[400,2233,2234,2237],{"class":402,"line":492},[400,2235,2236],{"class":484},"  createUserAgentEnricher",[400,2238,516],{"class":488},[400,2240,2241,2244],{"class":402,"line":519},[400,2242,2243],{"class":484},"  createGeoEnricher",[400,2245,516],{"class":488},[400,2247,2248,2251],{"class":402,"line":530},[400,2249,2250],{"class":484},"  createRequestSizeEnricher",[400,2252,516],{"class":488},[400,2254,2255,2258],{"class":402,"line":540},[400,2256,2257],{"class":484},"  createTraceContextEnricher",[400,2259,516],{"class":488},[400,2261,2262,2264,2266,2268,2271],{"class":402,"line":558},[400,2263,573],{"class":488},[400,2265,2001],{"class":473},[400,2267,548],{"class":488},[400,2269,2270],{"class":409},"evlog\u002Fenrichers",[400,2272,2008],{"class":488},[400,2274,2275],{"class":402,"line":564},[400,2276,679],{"emptyLinePlaceholder":678},[400,2278,2279,2281,2284,2286],{"class":402,"line":570},[400,2280,2057],{"class":616},[400,2282,2283],{"class":484}," enrichers ",[400,2285,2063],{"class":488},[400,2287,1727],{"class":484},[400,2289,2290,2292,2295],{"class":402,"line":830},[400,2291,2236],{"class":480},[400,2293,2294],{"class":484},"()",[400,2296,516],{"class":488},[400,2298,2299,2301,2303],{"class":402,"line":835},[400,2300,2243],{"class":480},[400,2302,2294],{"class":484},[400,2304,516],{"class":488},[400,2306,2307,2309,2311],{"class":402,"line":857},[400,2308,2250],{"class":480},[400,2310,2294],{"class":484},[400,2312,516],{"class":488},[400,2314,2315,2317,2319],{"class":402,"line":908},[400,2316,2257],{"class":480},[400,2318,2294],{"class":484},[400,2320,516],{"class":488},[400,2322,2323],{"class":402,"line":913},[400,2324,2325],{"class":484},"]\n",[400,2327,2328],{"class":402,"line":947},[400,2329,679],{"emptyLinePlaceholder":678},[400,2331,2332,2334,2336,2338,2340,2342,2344,2346,2348],{"class":402,"line":1279},[400,2333,474],{"class":473},[400,2335,477],{"class":473},[400,2337,2165],{"class":480},[400,2339,485],{"class":484},[400,2341,485],{"class":488},[400,2343,2172],{"class":623},[400,2345,627],{"class":488},[400,2347,630],{"class":616},[400,2349,527],{"class":488},[400,2351,2352,2354,2356,2358,2360,2362,2364,2366,2369,2371,2373,2375,2378,2380,2382],{"class":402,"line":1285},[400,2353,2183],{"class":484},[400,2355,687],{"class":488},[400,2357,2188],{"class":484},[400,2359,687],{"class":488},[400,2361,2193],{"class":480},[400,2363,485],{"class":495},[400,2365,505],{"class":488},[400,2367,2368],{"class":409},"evlog:enrich",[400,2370,505],{"class":488},[400,2372,718],{"class":488},[400,2374,620],{"class":488},[400,2376,2377],{"class":623},"ctx",[400,2379,627],{"class":488},[400,2381,630],{"class":616},[400,2383,527],{"class":488},[400,2385,2386,2389,2391,2393,2396,2399,2402,2404,2407,2409,2411],{"class":402,"line":1290},[400,2387,2388],{"class":473},"    for",[400,2390,620],{"class":495},[400,2392,2057],{"class":616},[400,2394,2395],{"class":484}," enricher",[400,2397,2398],{"class":488}," of",[400,2400,2401],{"class":484}," enrichers",[400,2403,1179],{"class":495},[400,2405,2406],{"class":480},"enricher",[400,2408,485],{"class":495},[400,2410,2377],{"class":484},[400,2412,576],{"class":495},[400,2414,2415,2418],{"class":402,"line":1305},[400,2416,2417],{"class":488},"  }",[400,2419,576],{"class":495},[400,2421,2423,2425],{"class":402,"line":2422},19,[400,2424,573],{"class":488},[400,2426,576],{"class":484},[1311,2428,1332,2431,1643,2434,2436],{"color":2429,"icon":2430},"neutral","i-lucide-arrow-right",[367,2432,213],{"href":2433},"\u002Fadapters\u002Foverview",[367,2435,293],{"href":298}," docs for the full list of available drains and enrichers.",[378,2438,96],{"id":1348},[382,2440,2442],{"id":2441},"head-sampling","Head Sampling",[314,2444,2445],{},"Randomly keep a percentage of logs per level. Runs before the request completes.",[390,2447,2449],{"className":463,"code":2448,"filename":465,"language":466,"meta":396,"style":396},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sampling: {\n      rates: {\n        info: 10,\n        warn: 50,\n        debug: 5,\n        error: 100,\n      },\n    },\n  },\n})\n",[318,2450,2451,2463,2481,2489,2498,2507,2519,2530,2542,2554,2559,2563,2567],{"__ignoreMap":396},[400,2452,2453,2455,2457,2459,2461],{"class":402,"line":403},[400,2454,474],{"class":473},[400,2456,477],{"class":473},[400,2458,481],{"class":480},[400,2460,485],{"class":484},[400,2462,489],{"class":488},[400,2464,2465,2467,2469,2471,2473,2475,2477,2479],{"class":402,"line":492},[400,2466,496],{"class":495},[400,2468,499],{"class":488},[400,2470,502],{"class":484},[400,2472,505],{"class":488},[400,2474,508],{"class":409},[400,2476,505],{"class":488},[400,2478,513],{"class":484},[400,2480,516],{"class":488},[400,2482,2483,2485,2487],{"class":402,"line":519},[400,2484,522],{"class":495},[400,2486,499],{"class":488},[400,2488,527],{"class":488},[400,2490,2491,2494,2496],{"class":402,"line":530},[400,2492,2493],{"class":495},"    sampling",[400,2495,499],{"class":488},[400,2497,527],{"class":488},[400,2499,2500,2503,2505],{"class":402,"line":540},[400,2501,2502],{"class":495},"      rates",[400,2504,499],{"class":488},[400,2506,527],{"class":488},[400,2508,2509,2512,2514,2517],{"class":402,"line":558},[400,2510,2511],{"class":495},"        info",[400,2513,499],{"class":488},[400,2515,2516],{"class":998}," 10",[400,2518,516],{"class":488},[400,2520,2521,2524,2526,2528],{"class":402,"line":564},[400,2522,2523],{"class":495},"        warn",[400,2525,499],{"class":488},[400,2527,2095],{"class":998},[400,2529,516],{"class":488},[400,2531,2532,2535,2537,2540],{"class":402,"line":570},[400,2533,2534],{"class":495},"        debug",[400,2536,499],{"class":488},[400,2538,2539],{"class":998}," 5",[400,2541,516],{"class":488},[400,2543,2544,2547,2549,2552],{"class":402,"line":830},[400,2545,2546],{"class":495},"        error",[400,2548,499],{"class":488},[400,2550,2551],{"class":998}," 100",[400,2553,516],{"class":488},[400,2555,2556],{"class":402,"line":835},[400,2557,2558],{"class":488},"      },\n",[400,2560,2561],{"class":402,"line":857},[400,2562,561],{"class":488},[400,2564,2565],{"class":402,"line":908},[400,2566,567],{"class":488},[400,2568,2569,2571],{"class":402,"line":913},[400,2570,573],{"class":488},[400,2572,576],{"class":484},[314,2574,2575],{},"Each level is a percentage from 0 to 100. Levels you don't configure default to 100% (keep everything). Error defaults to 100% even when other levels are configured.",[382,2577,2579],{"id":2578},"tail-sampling","Tail Sampling",[314,2581,2582],{},"Evaluate after the request completes and force-keep logs that match specific conditions, regardless of head sampling.",[390,2584,2586],{"className":463,"code":2585,"filename":465,"language":466,"meta":396,"style":396},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sampling: {\n      rates: { info: 10 },\n      keep: [\n        { duration: 1000 },\n        { status: 400 },\n        { path: '\u002Fapi\u002Fcritical\u002F**' },\n      ],\n    },\n  },\n})\n",[318,2587,2588,2600,2618,2626,2634,2651,2660,2675,2688,2706,2713,2717,2721],{"__ignoreMap":396},[400,2589,2590,2592,2594,2596,2598],{"class":402,"line":403},[400,2591,474],{"class":473},[400,2593,477],{"class":473},[400,2595,481],{"class":480},[400,2597,485],{"class":484},[400,2599,489],{"class":488},[400,2601,2602,2604,2606,2608,2610,2612,2614,2616],{"class":402,"line":492},[400,2603,496],{"class":495},[400,2605,499],{"class":488},[400,2607,502],{"class":484},[400,2609,505],{"class":488},[400,2611,508],{"class":409},[400,2613,505],{"class":488},[400,2615,513],{"class":484},[400,2617,516],{"class":488},[400,2619,2620,2622,2624],{"class":402,"line":519},[400,2621,522],{"class":495},[400,2623,499],{"class":488},[400,2625,527],{"class":488},[400,2627,2628,2630,2632],{"class":402,"line":530},[400,2629,2493],{"class":495},[400,2631,499],{"class":488},[400,2633,527],{"class":488},[400,2635,2636,2638,2640,2642,2645,2647,2649],{"class":402,"line":540},[400,2637,2502],{"class":495},[400,2639,499],{"class":488},[400,2641,703],{"class":488},[400,2643,2644],{"class":495}," info",[400,2646,499],{"class":488},[400,2648,2516],{"class":998},[400,2650,1865],{"class":488},[400,2652,2653,2656,2658],{"class":402,"line":558},[400,2654,2655],{"class":495},"      keep",[400,2657,499],{"class":488},[400,2659,1727],{"class":484},[400,2661,2662,2665,2668,2670,2673],{"class":402,"line":564},[400,2663,2664],{"class":488},"        {",[400,2666,2667],{"class":495}," duration",[400,2669,499],{"class":488},[400,2671,2672],{"class":998}," 1000",[400,2674,1865],{"class":488},[400,2676,2677,2679,2682,2684,2686],{"class":402,"line":570},[400,2678,2664],{"class":488},[400,2680,2681],{"class":495}," status",[400,2683,499],{"class":488},[400,2685,1203],{"class":998},[400,2687,1865],{"class":488},[400,2689,2690,2692,2695,2697,2699,2702,2704],{"class":402,"line":830},[400,2691,2664],{"class":488},[400,2693,2694],{"class":495}," path",[400,2696,499],{"class":488},[400,2698,548],{"class":488},[400,2700,2701],{"class":409},"\u002Fapi\u002Fcritical\u002F**",[400,2703,505],{"class":488},[400,2705,1865],{"class":488},[400,2707,2708,2711],{"class":402,"line":835},[400,2709,2710],{"class":484},"      ]",[400,2712,516],{"class":488},[400,2714,2715],{"class":402,"line":857},[400,2716,561],{"class":488},[400,2718,2719],{"class":402,"line":908},[400,2720,567],{"class":488},[400,2722,2723,2725],{"class":402,"line":913},[400,2724,573],{"class":488},[400,2726,576],{"class":484},[382,2728,2730],{"id":2729},"custom-tail-sampling","Custom Tail Sampling",[314,2732,2733,2734,2737],{},"For conditions beyond status, duration, and path, use the ",[318,2735,2736],{},"evlog:emit:keep"," hook:",[390,2739,2742],{"className":463,"code":2740,"filename":2741,"language":466,"meta":396,"style":396},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) {\n      ctx.shouldKeep = true\n    }\n  })\n})\n","server\u002Fplugins\u002Fevlog-sampling.ts",[318,2743,2744,2764,2796,2840,2859,2874,2879,2885],{"__ignoreMap":396},[400,2745,2746,2748,2750,2752,2754,2756,2758,2760,2762],{"class":402,"line":403},[400,2747,474],{"class":473},[400,2749,477],{"class":473},[400,2751,2165],{"class":480},[400,2753,485],{"class":484},[400,2755,485],{"class":488},[400,2757,2172],{"class":623},[400,2759,627],{"class":488},[400,2761,630],{"class":616},[400,2763,527],{"class":488},[400,2765,2766,2768,2770,2772,2774,2776,2778,2780,2782,2784,2786,2788,2790,2792,2794],{"class":402,"line":492},[400,2767,2183],{"class":484},[400,2769,687],{"class":488},[400,2771,2188],{"class":484},[400,2773,687],{"class":488},[400,2775,2193],{"class":480},[400,2777,485],{"class":495},[400,2779,505],{"class":488},[400,2781,2736],{"class":409},[400,2783,505],{"class":488},[400,2785,718],{"class":488},[400,2787,620],{"class":488},[400,2789,2377],{"class":623},[400,2791,627],{"class":488},[400,2793,630],{"class":616},[400,2795,527],{"class":488},[400,2797,2798,2801,2803,2805,2808,2810,2813,2815,2818,2821,2823,2826,2829,2832,2834,2837],{"class":402,"line":519},[400,2799,2800],{"class":616},"    const",[400,2802,698],{"class":484},[400,2804,643],{"class":488},[400,2806,2807],{"class":484}," ctx",[400,2809,687],{"class":488},[400,2811,2812],{"class":484},"context",[400,2814,687],{"class":488},[400,2816,2817],{"class":484},"user",[400,2819,2820],{"class":473}," as",[400,2822,703],{"class":488},[400,2824,2825],{"class":495}," premium",[400,2827,2828],{"class":488},"?:",[400,2830,2831],{"class":406}," boolean",[400,2833,733],{"class":488},[400,2835,2836],{"class":488}," |",[400,2838,2839],{"class":406}," undefined\n",[400,2841,2842,2845,2847,2849,2852,2855,2857],{"class":402,"line":530},[400,2843,2844],{"class":473},"    if",[400,2846,620],{"class":495},[400,2848,2817],{"class":484},[400,2850,2851],{"class":488},"?.",[400,2853,2854],{"class":484},"premium",[400,2856,1179],{"class":495},[400,2858,489],{"class":488},[400,2860,2861,2864,2866,2869,2871],{"class":402,"line":540},[400,2862,2863],{"class":484},"      ctx",[400,2865,687],{"class":488},[400,2867,2868],{"class":484},"shouldKeep",[400,2870,643],{"class":488},[400,2872,2873],{"class":926}," true\n",[400,2875,2876],{"class":402,"line":558},[400,2877,2878],{"class":488},"    }\n",[400,2880,2881,2883],{"class":402,"line":564},[400,2882,2417],{"class":488},[400,2884,576],{"class":495},[400,2886,2887,2889],{"class":402,"line":570},[400,2888,573],{"class":488},[400,2890,576],{"class":484},[1311,2892,2893,2894,2897],{"color":1313,"icon":13},"Errors are always kept by default. You have to explicitly set ",[318,2895,2896],{},"error: 0"," to drop them.",[378,2899,2901],{"id":2900},"client-transport","Client Transport",[314,2903,2904],{},"Send browser logs to your server for processing and draining alongside server-side events.",[390,2906,2908],{"className":463,"code":2907,"filename":465,"language":466,"meta":396,"style":396},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    transport: {\n      enabled: true,\n      endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n    },\n  },\n})\n",[318,2909,2910,2922,2940,2948,2957,2968,2984,2988,2992],{"__ignoreMap":396},[400,2911,2912,2914,2916,2918,2920],{"class":402,"line":403},[400,2913,474],{"class":473},[400,2915,477],{"class":473},[400,2917,481],{"class":480},[400,2919,485],{"class":484},[400,2921,489],{"class":488},[400,2923,2924,2926,2928,2930,2932,2934,2936,2938],{"class":402,"line":492},[400,2925,496],{"class":495},[400,2927,499],{"class":488},[400,2929,502],{"class":484},[400,2931,505],{"class":488},[400,2933,508],{"class":409},[400,2935,505],{"class":488},[400,2937,513],{"class":484},[400,2939,516],{"class":488},[400,2941,2942,2944,2946],{"class":402,"line":519},[400,2943,522],{"class":495},[400,2945,499],{"class":488},[400,2947,527],{"class":488},[400,2949,2950,2953,2955],{"class":402,"line":530},[400,2951,2952],{"class":495},"    transport",[400,2954,499],{"class":488},[400,2956,527],{"class":488},[400,2958,2959,2962,2964,2966],{"class":402,"line":540},[400,2960,2961],{"class":495},"      enabled",[400,2963,499],{"class":488},[400,2965,927],{"class":926},[400,2967,516],{"class":488},[400,2969,2970,2973,2975,2977,2980,2982],{"class":402,"line":558},[400,2971,2972],{"class":495},"      endpoint",[400,2974,499],{"class":488},[400,2976,548],{"class":488},[400,2978,2979],{"class":409},"\u002Fapi\u002F_evlog\u002Fingest",[400,2981,505],{"class":488},[400,2983,516],{"class":488},[400,2985,2986],{"class":402,"line":564},[400,2987,561],{"class":488},[400,2989,2990],{"class":402,"line":570},[400,2991,567],{"class":488},[400,2993,2994,2996],{"class":402,"line":830},[400,2995,573],{"class":488},[400,2997,576],{"class":484},[382,2999,3001],{"id":3000},"how-it-works","How It Works",[3003,3004,3005,3011,3017,3020,3028],"ol",{},[342,3006,3007,3008],{},"Client calls ",[318,3009,3010],{},"log.info({ action: 'click', button: 'submit' })",[342,3012,3013,3014,3016],{},"Log is sent to ",[318,3015,2979],{}," via POST",[342,3018,3019],{},"Server enriches with environment context",[342,3021,3022,3024,3025],{},[318,3023,2200],{}," hook is called with ",[318,3026,3027],{},"source: 'client'",[342,3029,3030],{},"External services receive the log",[382,3032,3034],{"id":3033},"client-identity","Client Identity",[314,3036,3037,3038,499],{},"Attach user context to every client log with ",[318,3039,3040],{},"setIdentity",[390,3042,3045],{"className":463,"code":3043,"filename":3044,"language":466,"meta":396,"style":396},"\u002F\u002F After login\nsetIdentity({ userId: 'usr_123', orgId: 'org_456' })\n\nlog.info({ action: 'checkout' })\n\u002F\u002F -> { userId: 'usr_123', orgId: 'org_456', action: 'checkout', ... }\n\n\u002F\u002F After logout\nclearIdentity()\n","Nuxt (auto-imported)",[318,3046,3047,3053,3091,3095,3124,3129,3133,3138],{"__ignoreMap":396},[400,3048,3049],{"class":402,"line":403},[400,3050,3052],{"class":3051},"sHwdD","\u002F\u002F After login\n",[400,3054,3055,3057,3059,3061,3064,3066,3068,3071,3073,3075,3078,3080,3082,3085,3087,3089],{"class":402,"line":492},[400,3056,3040],{"class":480},[400,3058,485],{"class":484},[400,3060,695],{"class":488},[400,3062,3063],{"class":495}," userId",[400,3065,499],{"class":488},[400,3067,548],{"class":488},[400,3069,3070],{"class":409},"usr_123",[400,3072,505],{"class":488},[400,3074,718],{"class":488},[400,3076,3077],{"class":495}," orgId",[400,3079,499],{"class":488},[400,3081,548],{"class":488},[400,3083,3084],{"class":409},"org_456",[400,3086,505],{"class":488},[400,3088,733],{"class":488},[400,3090,576],{"class":484},[400,3092,3093],{"class":402,"line":519},[400,3094,679],{"emptyLinePlaceholder":678},[400,3096,3097,3100,3102,3104,3106,3108,3111,3113,3115,3118,3120,3122],{"class":402,"line":530},[400,3098,3099],{"class":484},"log",[400,3101,687],{"class":488},[400,3103,1313],{"class":480},[400,3105,485],{"class":484},[400,3107,695],{"class":488},[400,3109,3110],{"class":495}," action",[400,3112,499],{"class":488},[400,3114,548],{"class":488},[400,3116,3117],{"class":409},"checkout",[400,3119,505],{"class":488},[400,3121,733],{"class":488},[400,3123,576],{"class":484},[400,3125,3126],{"class":402,"line":540},[400,3127,3128],{"class":3051},"\u002F\u002F -> { userId: 'usr_123', orgId: 'org_456', action: 'checkout', ... }\n",[400,3130,3131],{"class":402,"line":558},[400,3132,679],{"emptyLinePlaceholder":678},[400,3134,3135],{"class":402,"line":564},[400,3136,3137],{"class":3051},"\u002F\u002F After logout\n",[400,3139,3140,3143],{"class":402,"line":570},[400,3141,3142],{"class":480},"clearIdentity",[400,3144,3145],{"class":484},"()\n",[382,3147,3149],{"id":3148},"syncing-identity-with-auth","Syncing Identity with Auth",[314,3151,3152],{},"Use a route middleware to keep identity in sync with your auth state:",[390,3154,3157],{"className":463,"code":3155,"filename":3156,"language":466,"meta":396,"style":396},"export default defineNuxtRouteMiddleware(() => {\n  const { user } = useAuth()\n\n  if (user.value) {\n    setIdentity({ userId: user.value.id, email: user.value.email })\n  } else {\n    clearIdentity()\n  }\n})\n","middleware\u002Fidentity.global.ts",[318,3158,3159,3176,3193,3197,3214,3260,3269,3276,3280],{"__ignoreMap":396},[400,3160,3161,3163,3165,3168,3170,3172,3174],{"class":402,"line":403},[400,3162,474],{"class":473},[400,3164,477],{"class":473},[400,3166,3167],{"class":480}," defineNuxtRouteMiddleware",[400,3169,485],{"class":484},[400,3171,2294],{"class":488},[400,3173,630],{"class":616},[400,3175,527],{"class":488},[400,3177,3178,3180,3182,3184,3186,3188,3191],{"class":402,"line":492},[400,3179,637],{"class":616},[400,3181,703],{"class":488},[400,3183,698],{"class":484},[400,3185,733],{"class":488},[400,3187,643],{"class":488},[400,3189,3190],{"class":480}," useAuth",[400,3192,3145],{"class":495},[400,3194,3195],{"class":402,"line":519},[400,3196,679],{"emptyLinePlaceholder":678},[400,3198,3199,3201,3203,3205,3207,3210,3212],{"class":402,"line":530},[400,3200,1162],{"class":473},[400,3202,620],{"class":495},[400,3204,2817],{"class":484},[400,3206,687],{"class":488},[400,3208,3209],{"class":484},"value",[400,3211,1179],{"class":495},[400,3213,489],{"class":488},[400,3215,3216,3219,3221,3223,3225,3227,3229,3231,3233,3235,3238,3240,3243,3245,3247,3249,3251,3253,3256,3258],{"class":402,"line":540},[400,3217,3218],{"class":480},"    setIdentity",[400,3220,485],{"class":495},[400,3222,695],{"class":488},[400,3224,3063],{"class":495},[400,3226,499],{"class":488},[400,3228,698],{"class":484},[400,3230,687],{"class":488},[400,3232,3209],{"class":484},[400,3234,687],{"class":488},[400,3236,3237],{"class":484},"id",[400,3239,718],{"class":488},[400,3241,3242],{"class":495}," email",[400,3244,499],{"class":488},[400,3246,698],{"class":484},[400,3248,687],{"class":488},[400,3250,3209],{"class":484},[400,3252,687],{"class":488},[400,3254,3255],{"class":484},"email",[400,3257,733],{"class":488},[400,3259,576],{"class":495},[400,3261,3262,3264,3267],{"class":402,"line":558},[400,3263,2417],{"class":488},[400,3265,3266],{"class":473}," else",[400,3268,527],{"class":488},[400,3270,3271,3274],{"class":402,"line":564},[400,3272,3273],{"class":480},"    clearIdentity",[400,3275,3145],{"class":495},[400,3277,3278],{"class":402,"line":570},[400,3279,1282],{"class":488},[400,3281,3282,3284],{"class":402,"line":830},[400,3283,573],{"class":488},[400,3285,576],{"class":484},[378,3287,3289],{"id":3288},"production-tips","Production Tips",[314,3291,3292,3293,3296],{},"Use Nuxt's ",[318,3294,3295],{},"$production"," override to keep full logging in development while sampling and disabling console output in production:",[390,3298,3300],{"className":463,"code":3299,"filename":465,"language":466,"meta":396,"style":396},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n  },\n  $production: {\n    evlog: {\n      console: false,\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 0 },\n        keep: [{ duration: 1000 }, { status: 400 }],\n      },\n    },\n  },\n})\n",[318,3301,3302,3314,3332,3340,3360,3364,3373,3382,3394,3403,3438,3472,3476,3480,3484],{"__ignoreMap":396},[400,3303,3304,3306,3308,3310,3312],{"class":402,"line":403},[400,3305,474],{"class":473},[400,3307,477],{"class":473},[400,3309,481],{"class":480},[400,3311,485],{"class":484},[400,3313,489],{"class":488},[400,3315,3316,3318,3320,3322,3324,3326,3328,3330],{"class":402,"line":492},[400,3317,496],{"class":495},[400,3319,499],{"class":488},[400,3321,502],{"class":484},[400,3323,505],{"class":488},[400,3325,508],{"class":409},[400,3327,505],{"class":488},[400,3329,513],{"class":484},[400,3331,516],{"class":488},[400,3333,3334,3336,3338],{"class":402,"line":519},[400,3335,522],{"class":495},[400,3337,499],{"class":488},[400,3339,527],{"class":488},[400,3341,3342,3344,3346,3348,3350,3352,3354,3356,3358],{"class":402,"line":530},[400,3343,533],{"class":495},[400,3345,499],{"class":488},[400,3347,703],{"class":488},[400,3349,1853],{"class":495},[400,3351,499],{"class":488},[400,3353,548],{"class":488},[400,3355,551],{"class":409},[400,3357,505],{"class":488},[400,3359,1865],{"class":488},[400,3361,3362],{"class":402,"line":540},[400,3363,567],{"class":488},[400,3365,3366,3369,3371],{"class":402,"line":558},[400,3367,3368],{"class":495},"  $production",[400,3370,499],{"class":488},[400,3372,527],{"class":488},[400,3374,3375,3378,3380],{"class":402,"line":564},[400,3376,3377],{"class":495},"    evlog",[400,3379,499],{"class":488},[400,3381,527],{"class":488},[400,3383,3384,3387,3389,3392],{"class":402,"line":570},[400,3385,3386],{"class":495},"      console",[400,3388,499],{"class":488},[400,3390,3391],{"class":926}," false",[400,3393,516],{"class":488},[400,3395,3396,3399,3401],{"class":402,"line":830},[400,3397,3398],{"class":495},"      sampling",[400,3400,499],{"class":488},[400,3402,527],{"class":488},[400,3404,3405,3408,3410,3412,3414,3416,3418,3420,3423,3425,3427,3429,3432,3434,3436],{"class":402,"line":835},[400,3406,3407],{"class":495},"        rates",[400,3409,499],{"class":488},[400,3411,703],{"class":488},[400,3413,2644],{"class":495},[400,3415,499],{"class":488},[400,3417,2516],{"class":998},[400,3419,718],{"class":488},[400,3421,3422],{"class":495}," warn",[400,3424,499],{"class":488},[400,3426,2095],{"class":998},[400,3428,718],{"class":488},[400,3430,3431],{"class":495}," debug",[400,3433,499],{"class":488},[400,3435,1176],{"class":998},[400,3437,1865],{"class":488},[400,3439,3440,3443,3445,3447,3449,3451,3453,3455,3458,3460,3462,3464,3466,3468,3470],{"class":402,"line":857},[400,3441,3442],{"class":495},"        keep",[400,3444,499],{"class":488},[400,3446,502],{"class":484},[400,3448,695],{"class":488},[400,3450,2667],{"class":495},[400,3452,499],{"class":488},[400,3454,2672],{"class":998},[400,3456,3457],{"class":488}," },",[400,3459,703],{"class":488},[400,3461,2681],{"class":495},[400,3463,499],{"class":488},[400,3465,1203],{"class":998},[400,3467,733],{"class":488},[400,3469,513],{"class":484},[400,3471,516],{"class":488},[400,3473,3474],{"class":402,"line":908},[400,3475,2558],{"class":488},[400,3477,3478],{"class":402,"line":913},[400,3479,561],{"class":488},[400,3481,3482],{"class":402,"line":947},[400,3483,567],{"class":488},[400,3485,3486,3488],{"class":402,"line":1279},[400,3487,573],{"class":488},[400,3489,576],{"class":484},[378,3491,3493],{"id":3492},"next-steps","Next Steps",[314,3495,3496,3497,3499],{},"Deepen your ",[1784,3498,134],{}," integration:",[339,3501,3502,3507,3512,3517],{},[342,3503,3504,3506],{},[367,3505,51],{"href":52},": Design comprehensive events with context layering",[342,3508,3509,3511],{},[367,3510,213],{"href":2433},": Send logs to Axiom, Sentry, PostHog, and more",[342,3513,3514,3516],{},[367,3515,96],{"href":97},": Control log volume with head and tail sampling",[342,3518,3519,3521,3522,321,3524,325,3526,3528],{},[367,3520,56],{"href":57},": Throw errors with ",[318,3523,1044],{},[318,3525,1047],{},[318,3527,1050],{}," fields",[3530,3531,3532],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":396,"searchDepth":492,"depth":492,"links":3534},[3535,3539,3540,3541,3542,3545,3549,3554,3559,3560],{"id":380,"depth":492,"text":20,"children":3536},[3537,3538],{"id":384,"depth":519,"text":385},{"id":459,"depth":519,"text":460},{"id":589,"depth":492,"text":51},{"id":1035,"depth":492,"text":1036},{"id":1328,"depth":492,"text":91},{"id":1636,"depth":492,"text":1637,"children":3543},[3544],{"id":1795,"depth":519,"text":1796},{"id":1969,"depth":492,"text":1970,"children":3546},[3547,3548],{"id":1976,"depth":519,"text":1977},{"id":2218,"depth":519,"text":2219},{"id":1348,"depth":492,"text":96,"children":3550},[3551,3552,3553],{"id":2441,"depth":519,"text":2442},{"id":2578,"depth":519,"text":2579},{"id":2729,"depth":519,"text":2730},{"id":2900,"depth":492,"text":2901,"children":3555},[3556,3557,3558],{"id":3000,"depth":519,"text":3001},{"id":3033,"depth":519,"text":3034},{"id":3148,"depth":519,"text":3149},{"id":3288,"depth":492,"text":3289},{"id":3492,"depth":492,"text":3493},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.","md",null,{},{"title":134,"icon":137},{"title":134,"description":3561},"xTvtny2mSuTNf0_nZJ9RsMN0P5v118Y76YhCv3DF1Kg",[3569,3571],{"title":41,"path":130,"stem":131,"description":3570,"icon":132,"children":-1},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.",{"title":139,"path":140,"stem":141,"description":3572,"icon":142,"children":-1},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.",1777667167893]