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