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