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