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