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