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