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