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