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