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