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