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