[{"data":1,"prerenderedAt":3327},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-nitro":464,"-integrate-frameworks-nitro-surround":3322},[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":182,"body":466,"description":3315,"extension":3316,"links":3317,"meta":3318,"navigation":3319,"path":183,"seo":3320,"stem":184,"__hash__":3321},"docs\u002F3.integrate\u002Fframeworks\u002F04.nitro.md",{"type":467,"value":468,"toc":3295},"minimark",[469,478,525,529,534,605,609,882,885,891,1363,1366,1425,1457,1461,1479,1841,1857,1860,1880,1884,1899,2281,2294,2298,2301,2305,2540,2552,2556,2715,2724,2726,2730,2733,3088,3091,3095,3102,3245,3252,3256,3262,3291],[470,471,472,473,477],"p",{},"evlog provides modules for both Nitro v3 and Nitro v2 (nitropack). The module hooks into the request lifecycle, creating a request-scoped logger accessible via ",[474,475,476],"code",{},"useLogger(event)",", and emits a wide event when the response completes.",[479,480,483,486,511],"prompt",{":actions":481,"description":482,"icon":185},"[\"copy\",\"cursor\",\"claude\"]","Set up evlog in my Nitro app",[470,484,485],{},"Set up evlog in my Nitro app.",[487,488,489,493,496,499,502,505,508],"ul",{},[490,491,492],"li",{},"Install evlog: pnpm add evlog",[490,494,495],{},"Import the evlog module in nitro.config.ts (evlog\u002Fnitro for v2, evlog\u002Fnitro\u002Fv3 for v3)",[490,497,498],{},"Configure env.service with your app name",[490,500,501],{},"Use useLogger(event) in route handlers to build wide events",[490,503,504],{},"Use log.set() to accumulate context throughout the request",[490,506,507],{},"Throw errors with createError({ message, status, why, fix })",[490,509,510],{},"Wide events are auto-emitted when each request completes",[470,512,513,514,520,521],{},"Docs: ",[515,516,517],"a",{"href":517,"rel":518},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fnitro",[519],"nofollow","\nAdapters: ",[515,522,523],{"href":523,"rel":524},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[519],[526,527,25],"h2",{"id":528},"quick-start",[530,531,533],"h3",{"id":532},"_1-install","1. Install",[535,536,537,562,576,590],"code-group",{},[538,539,545],"pre",{"className":540,"code":541,"filename":542,"language":543,"meta":544,"style":544},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[474,546,547],{"__ignoreMap":544},[548,549,552,555,559],"span",{"class":550,"line":551},"line",1,[548,553,542],{"class":554},"sBMFI",[548,556,558],{"class":557},"sfazB"," add",[548,560,561],{"class":557}," evlog\n",[538,563,566],{"className":540,"code":564,"filename":565,"language":543,"meta":544,"style":544},"bun add evlog\n","bun",[474,567,568],{"__ignoreMap":544},[548,569,570,572,574],{"class":550,"line":551},[548,571,565],{"class":554},[548,573,558],{"class":557},[548,575,561],{"class":557},[538,577,580],{"className":540,"code":578,"filename":579,"language":543,"meta":544,"style":544},"yarn add evlog\n","yarn",[474,581,582],{"__ignoreMap":544},[548,583,584,586,588],{"class":550,"line":551},[548,585,579],{"class":554},[548,587,558],{"class":557},[548,589,561],{"class":557},[538,591,594],{"className":540,"code":592,"filename":593,"language":543,"meta":544,"style":544},"npm install evlog\n","npm",[474,595,596],{"__ignoreMap":544},[548,597,598,600,603],{"class":550,"line":551},[548,599,593],{"class":554},[548,601,602],{"class":557}," install",[548,604,561],{"class":557},[530,606,608],{"id":607},"_2-add-the-module","2. Add the module",[535,610,611,769],{},[538,612,617],{"className":613,"code":614,"filename":615,"language":616,"meta":544,"style":544},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [\n    evlog({\n      env: { service: 'my-app' },\n    }),\n  ],\n})\n","nitro.config.ts (v3)","typescript",[474,618,619,648,666,673,691,704,714,740,752,760],{"__ignoreMap":544},[548,620,621,625,629,633,636,639,642,645],{"class":550,"line":551},[548,622,624],{"class":623},"s7zQu","import",[548,626,628],{"class":627},"sMK4o"," {",[548,630,632],{"class":631},"sTEyZ"," defineConfig",[548,634,635],{"class":627}," }",[548,637,638],{"class":623}," from",[548,640,641],{"class":627}," '",[548,643,644],{"class":557},"nitro",[548,646,647],{"class":627},"'\n",[548,649,651,653,656,659,661,664],{"class":550,"line":650},2,[548,652,624],{"class":623},[548,654,655],{"class":631}," evlog ",[548,657,658],{"class":623},"from",[548,660,641],{"class":627},[548,662,663],{"class":557},"evlog\u002Fnitro\u002Fv3",[548,665,647],{"class":627},[548,667,669],{"class":550,"line":668},3,[548,670,672],{"emptyLinePlaceholder":671},true,"\n",[548,674,676,679,682,685,688],{"class":550,"line":675},4,[548,677,678],{"class":623},"export",[548,680,681],{"class":623}," default",[548,683,632],{"class":684},"s2Zo4",[548,686,687],{"class":631},"(",[548,689,690],{"class":627},"{\n",[548,692,694,698,701],{"class":550,"line":693},5,[548,695,697],{"class":696},"swJcz","  modules",[548,699,700],{"class":627},":",[548,702,703],{"class":631}," [\n",[548,705,707,710,712],{"class":550,"line":706},6,[548,708,709],{"class":684},"    evlog",[548,711,687],{"class":631},[548,713,690],{"class":627},[548,715,717,720,722,724,727,729,731,734,737],{"class":550,"line":716},7,[548,718,719],{"class":696},"      env",[548,721,700],{"class":627},[548,723,628],{"class":627},[548,725,726],{"class":696}," service",[548,728,700],{"class":627},[548,730,641],{"class":627},[548,732,733],{"class":557},"my-app",[548,735,736],{"class":627},"'",[548,738,739],{"class":627}," },\n",[548,741,743,746,749],{"class":550,"line":742},8,[548,744,745],{"class":627},"    }",[548,747,748],{"class":631},")",[548,750,751],{"class":627},",\n",[548,753,755,758],{"class":550,"line":754},9,[548,756,757],{"class":631},"  ]",[548,759,751],{"class":627},[548,761,763,766],{"class":550,"line":762},10,[548,764,765],{"class":627},"}",[548,767,768],{"class":631},")\n",[538,770,773],{"className":613,"code":771,"filename":772,"language":616,"meta":544,"style":544},"import { defineNitroConfig } from 'nitropack\u002Fconfig'\nimport evlog from 'evlog\u002Fnitro'\n\nexport default defineNitroConfig({\n  modules: [\n    evlog({\n      env: { service: 'my-app' },\n    }),\n  ],\n})\n","nitro.config.ts (v2)",[474,774,775,795,810,814,826,834,842,862,870,876],{"__ignoreMap":544},[548,776,777,779,781,784,786,788,790,793],{"class":550,"line":551},[548,778,624],{"class":623},[548,780,628],{"class":627},[548,782,783],{"class":631}," defineNitroConfig",[548,785,635],{"class":627},[548,787,638],{"class":623},[548,789,641],{"class":627},[548,791,792],{"class":557},"nitropack\u002Fconfig",[548,794,647],{"class":627},[548,796,797,799,801,803,805,808],{"class":550,"line":650},[548,798,624],{"class":623},[548,800,655],{"class":631},[548,802,658],{"class":623},[548,804,641],{"class":627},[548,806,807],{"class":557},"evlog\u002Fnitro",[548,809,647],{"class":627},[548,811,812],{"class":550,"line":668},[548,813,672],{"emptyLinePlaceholder":671},[548,815,816,818,820,822,824],{"class":550,"line":675},[548,817,678],{"class":623},[548,819,681],{"class":623},[548,821,783],{"class":684},[548,823,687],{"class":631},[548,825,690],{"class":627},[548,827,828,830,832],{"class":550,"line":693},[548,829,697],{"class":696},[548,831,700],{"class":627},[548,833,703],{"class":631},[548,835,836,838,840],{"class":550,"line":706},[548,837,709],{"class":684},[548,839,687],{"class":631},[548,841,690],{"class":627},[548,843,844,846,848,850,852,854,856,858,860],{"class":550,"line":716},[548,845,719],{"class":696},[548,847,700],{"class":627},[548,849,628],{"class":627},[548,851,726],{"class":696},[548,853,700],{"class":627},[548,855,641],{"class":627},[548,857,733],{"class":557},[548,859,736],{"class":627},[548,861,739],{"class":627},[548,863,864,866,868],{"class":550,"line":742},[548,865,745],{"class":627},[548,867,748],{"class":631},[548,869,751],{"class":627},[548,871,872,874],{"class":550,"line":754},[548,873,757],{"class":631},[548,875,751],{"class":627},[548,877,878,880],{"class":550,"line":762},[548,879,765],{"class":627},[548,881,768],{"class":631},[526,883,46],{"id":884},"wide-events",[470,886,887,888,890],{},"Build up context progressively throughout a request with ",[474,889,476],{},". evlog emits a single wide event when the request completes.",[535,892,893,1144],{},[538,894,897],{"className":613,"code":895,"filename":896,"language":616,"meta":544,"style":544},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId } })\n  log.set({ cart: { items: body.items.length, total: body.total } })\n\n  return { success: true }\n})\n","routes\u002Fapi\u002Fcheckout.post.ts (v3)",[474,898,899,919,938,942,971,990,1011,1015,1056,1113,1117,1137],{"__ignoreMap":544},[548,900,901,903,905,908,910,912,914,917],{"class":550,"line":551},[548,902,624],{"class":623},[548,904,628],{"class":627},[548,906,907],{"class":631}," defineHandler",[548,909,635],{"class":627},[548,911,638],{"class":623},[548,913,641],{"class":627},[548,915,916],{"class":557},"nitro\u002Fh3",[548,918,647],{"class":627},[548,920,921,923,925,928,930,932,934,936],{"class":550,"line":650},[548,922,624],{"class":623},[548,924,628],{"class":627},[548,926,927],{"class":631}," useLogger",[548,929,635],{"class":627},[548,931,638],{"class":623},[548,933,641],{"class":627},[548,935,663],{"class":557},[548,937,647],{"class":627},[548,939,940],{"class":550,"line":668},[548,941,672],{"emptyLinePlaceholder":671},[548,943,944,946,948,950,952,956,959,963,965,968],{"class":550,"line":675},[548,945,678],{"class":623},[548,947,681],{"class":623},[548,949,907],{"class":684},[548,951,687],{"class":631},[548,953,955],{"class":954},"spNyl","async",[548,957,958],{"class":627}," (",[548,960,962],{"class":961},"sHdIc","event",[548,964,748],{"class":627},[548,966,967],{"class":954}," =>",[548,969,970],{"class":627}," {\n",[548,972,973,976,979,982,984,986,988],{"class":550,"line":693},[548,974,975],{"class":954},"  const",[548,977,978],{"class":631}," log",[548,980,981],{"class":627}," =",[548,983,927],{"class":684},[548,985,687],{"class":696},[548,987,962],{"class":631},[548,989,768],{"class":696},[548,991,992,994,997,999,1002,1005,1007,1009],{"class":550,"line":706},[548,993,975],{"class":954},[548,995,996],{"class":631}," body",[548,998,981],{"class":627},[548,1000,1001],{"class":623}," await",[548,1003,1004],{"class":684}," readBody",[548,1006,687],{"class":696},[548,1008,962],{"class":631},[548,1010,768],{"class":696},[548,1012,1013],{"class":550,"line":716},[548,1014,672],{"emptyLinePlaceholder":671},[548,1016,1017,1020,1023,1026,1028,1031,1034,1036,1038,1041,1043,1045,1047,1050,1052,1054],{"class":550,"line":742},[548,1018,1019],{"class":631},"  log",[548,1021,1022],{"class":627},".",[548,1024,1025],{"class":684},"set",[548,1027,687],{"class":696},[548,1029,1030],{"class":627},"{",[548,1032,1033],{"class":696}," user",[548,1035,700],{"class":627},[548,1037,628],{"class":627},[548,1039,1040],{"class":696}," id",[548,1042,700],{"class":627},[548,1044,996],{"class":631},[548,1046,1022],{"class":627},[548,1048,1049],{"class":631},"userId",[548,1051,635],{"class":627},[548,1053,635],{"class":627},[548,1055,768],{"class":696},[548,1057,1058,1060,1062,1064,1066,1068,1071,1073,1075,1078,1080,1082,1084,1087,1089,1092,1095,1098,1100,1102,1104,1107,1109,1111],{"class":550,"line":754},[548,1059,1019],{"class":631},[548,1061,1022],{"class":627},[548,1063,1025],{"class":684},[548,1065,687],{"class":696},[548,1067,1030],{"class":627},[548,1069,1070],{"class":696}," cart",[548,1072,700],{"class":627},[548,1074,628],{"class":627},[548,1076,1077],{"class":696}," items",[548,1079,700],{"class":627},[548,1081,996],{"class":631},[548,1083,1022],{"class":627},[548,1085,1086],{"class":631},"items",[548,1088,1022],{"class":627},[548,1090,1091],{"class":631},"length",[548,1093,1094],{"class":627},",",[548,1096,1097],{"class":696}," total",[548,1099,700],{"class":627},[548,1101,996],{"class":631},[548,1103,1022],{"class":627},[548,1105,1106],{"class":631},"total",[548,1108,635],{"class":627},[548,1110,635],{"class":627},[548,1112,768],{"class":696},[548,1114,1115],{"class":550,"line":762},[548,1116,672],{"emptyLinePlaceholder":671},[548,1118,1120,1123,1125,1128,1130,1134],{"class":550,"line":1119},11,[548,1121,1122],{"class":623},"  return",[548,1124,628],{"class":627},[548,1126,1127],{"class":696}," success",[548,1129,700],{"class":627},[548,1131,1133],{"class":1132},"sfNiH"," true",[548,1135,1136],{"class":627}," }\n",[548,1138,1140,1142],{"class":550,"line":1139},12,[548,1141,765],{"class":627},[548,1143,768],{"class":631},[538,1145,1148],{"className":613,"code":1146,"filename":1147,"language":616,"meta":544,"style":544},"import { defineEventHandler, readBody } from 'h3'\nimport { useLogger } from 'evlog\u002Fnitro'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId } })\n  log.set({ cart: { items: body.items.length, total: body.total } })\n\n  return { success: true }\n})\n","routes\u002Fapi\u002Fcheckout.post.ts (v2)",[474,1149,1150,1173,1191,1195,1217,1233,1251,1255,1289,1339,1343,1357],{"__ignoreMap":544},[548,1151,1152,1154,1156,1159,1161,1163,1165,1167,1169,1171],{"class":550,"line":551},[548,1153,624],{"class":623},[548,1155,628],{"class":627},[548,1157,1158],{"class":631}," defineEventHandler",[548,1160,1094],{"class":627},[548,1162,1004],{"class":631},[548,1164,635],{"class":627},[548,1166,638],{"class":623},[548,1168,641],{"class":627},[548,1170,530],{"class":557},[548,1172,647],{"class":627},[548,1174,1175,1177,1179,1181,1183,1185,1187,1189],{"class":550,"line":650},[548,1176,624],{"class":623},[548,1178,628],{"class":627},[548,1180,927],{"class":631},[548,1182,635],{"class":627},[548,1184,638],{"class":623},[548,1186,641],{"class":627},[548,1188,807],{"class":557},[548,1190,647],{"class":627},[548,1192,1193],{"class":550,"line":668},[548,1194,672],{"emptyLinePlaceholder":671},[548,1196,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215],{"class":550,"line":675},[548,1198,678],{"class":623},[548,1200,681],{"class":623},[548,1202,1158],{"class":684},[548,1204,687],{"class":631},[548,1206,955],{"class":954},[548,1208,958],{"class":627},[548,1210,962],{"class":961},[548,1212,748],{"class":627},[548,1214,967],{"class":954},[548,1216,970],{"class":627},[548,1218,1219,1221,1223,1225,1227,1229,1231],{"class":550,"line":693},[548,1220,975],{"class":954},[548,1222,978],{"class":631},[548,1224,981],{"class":627},[548,1226,927],{"class":684},[548,1228,687],{"class":696},[548,1230,962],{"class":631},[548,1232,768],{"class":696},[548,1234,1235,1237,1239,1241,1243,1245,1247,1249],{"class":550,"line":706},[548,1236,975],{"class":954},[548,1238,996],{"class":631},[548,1240,981],{"class":627},[548,1242,1001],{"class":623},[548,1244,1004],{"class":684},[548,1246,687],{"class":696},[548,1248,962],{"class":631},[548,1250,768],{"class":696},[548,1252,1253],{"class":550,"line":716},[548,1254,672],{"emptyLinePlaceholder":671},[548,1256,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287],{"class":550,"line":742},[548,1258,1019],{"class":631},[548,1260,1022],{"class":627},[548,1262,1025],{"class":684},[548,1264,687],{"class":696},[548,1266,1030],{"class":627},[548,1268,1033],{"class":696},[548,1270,700],{"class":627},[548,1272,628],{"class":627},[548,1274,1040],{"class":696},[548,1276,700],{"class":627},[548,1278,996],{"class":631},[548,1280,1022],{"class":627},[548,1282,1049],{"class":631},[548,1284,635],{"class":627},[548,1286,635],{"class":627},[548,1288,768],{"class":696},[548,1290,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337],{"class":550,"line":754},[548,1292,1019],{"class":631},[548,1294,1022],{"class":627},[548,1296,1025],{"class":684},[548,1298,687],{"class":696},[548,1300,1030],{"class":627},[548,1302,1070],{"class":696},[548,1304,700],{"class":627},[548,1306,628],{"class":627},[548,1308,1077],{"class":696},[548,1310,700],{"class":627},[548,1312,996],{"class":631},[548,1314,1022],{"class":627},[548,1316,1086],{"class":631},[548,1318,1022],{"class":627},[548,1320,1091],{"class":631},[548,1322,1094],{"class":627},[548,1324,1097],{"class":696},[548,1326,700],{"class":627},[548,1328,996],{"class":631},[548,1330,1022],{"class":627},[548,1332,1106],{"class":631},[548,1334,635],{"class":627},[548,1336,635],{"class":627},[548,1338,768],{"class":696},[548,1340,1341],{"class":550,"line":762},[548,1342,672],{"emptyLinePlaceholder":671},[548,1344,1345,1347,1349,1351,1353,1355],{"class":550,"line":1119},[548,1346,1122],{"class":623},[548,1348,628],{"class":627},[548,1350,1127],{"class":696},[548,1352,700],{"class":627},[548,1354,1133],{"class":1132},[548,1356,1136],{"class":627},[548,1358,1359,1361],{"class":550,"line":1139},[548,1360,765],{"class":627},[548,1362,768],{"class":631},[470,1364,1365],{},"One request, one log line with all context:",[538,1367,1370],{"className":540,"code":1368,"filename":1369,"language":543,"meta":544,"style":544},"10:23:45 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123\n  ├─ cart: items=3 total=14999\n  └─ requestId: a1b2c3d4-...\n","Terminal output",[474,1371,1372,1383,1394,1414],{"__ignoreMap":544},[548,1373,1374,1377,1380],{"class":550,"line":551},[548,1375,1376],{"class":554},"10:23:45",[548,1378,1379],{"class":557}," INFO",[548,1381,1382],{"class":631}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[548,1384,1385,1388,1391],{"class":550,"line":650},[548,1386,1387],{"class":554},"  ├─",[548,1389,1390],{"class":557}," user:",[548,1392,1393],{"class":557}," id=usr_123\n",[548,1395,1396,1398,1401,1404,1408,1411],{"class":550,"line":668},[548,1397,1387],{"class":554},[548,1399,1400],{"class":557}," cart:",[548,1402,1403],{"class":557}," items=",[548,1405,1407],{"class":1406},"sbssI","3",[548,1409,1410],{"class":557}," total=",[548,1412,1413],{"class":1406},"14999\n",[548,1415,1416,1419,1422],{"class":550,"line":675},[548,1417,1418],{"class":554},"  └─",[548,1420,1421],{"class":557}," requestId:",[548,1423,1424],{"class":557}," a1b2c3d4-...\n",[470,1426,1427,1428,1433,1434,1437,1438,1444,1445,1448,1449,1452,1453,1022],{},"Nitro uses ",[1429,1430,1431],"strong",{},[474,1432,476],{}," (event-bound scope), not ",[474,1435,1436],{},"AsyncLocalStorage",", so ",[1429,1439,1440,1443],{},[474,1441,1442],{},"log.fork()"," is not available"," here yet. For AI SDK streaming responses, evlog defers wide-event emit until the response body finishes so ",[474,1446,1447],{},"createAILogger(log)"," metadata stays on the same request event. Post-emit warnings only apply when code calls ",[474,1450,1451],{},"set()"," after the wide event has actually emitted — for example in non-streaming handlers or background work. See ",[515,1454,1456],{"href":1455},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","Wide events — After emit",[526,1458,1460],{"id":1459},"error-handling","Error Handling",[470,1462,1463,1466,1467,1470,1471,1474,1475,1478],{},[474,1464,1465],{},"createError"," produces structured errors with ",[474,1468,1469],{},"why",", ",[474,1472,1473],{},"fix",", and ",[474,1476,1477],{},"link"," fields that help both humans and AI agents understand what went wrong.",[535,1480,1481,1659],{},[538,1482,1485],{"className":613,"code":1483,"filename":1484,"language":616,"meta":544,"style":544},"import { defineHandler } from 'nitro\u002Fh3'\nimport { useLogger, createError } from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineHandler(async (event) => {\n  const log = useLogger(event)\n\n  throw createError({\n    status: 402,\n    message: 'Payment failed',\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n  })\n})\n","routes\u002Fapi\u002Fpayment.post.ts (v3)",[474,1486,1487,1505,1528,1532,1554,1570,1574,1585,1597,1613,1629,1645,1652],{"__ignoreMap":544},[548,1488,1489,1491,1493,1495,1497,1499,1501,1503],{"class":550,"line":551},[548,1490,624],{"class":623},[548,1492,628],{"class":627},[548,1494,907],{"class":631},[548,1496,635],{"class":627},[548,1498,638],{"class":623},[548,1500,641],{"class":627},[548,1502,916],{"class":557},[548,1504,647],{"class":627},[548,1506,1507,1509,1511,1513,1515,1518,1520,1522,1524,1526],{"class":550,"line":650},[548,1508,624],{"class":623},[548,1510,628],{"class":627},[548,1512,927],{"class":631},[548,1514,1094],{"class":627},[548,1516,1517],{"class":631}," createError",[548,1519,635],{"class":627},[548,1521,638],{"class":623},[548,1523,641],{"class":627},[548,1525,663],{"class":557},[548,1527,647],{"class":627},[548,1529,1530],{"class":550,"line":668},[548,1531,672],{"emptyLinePlaceholder":671},[548,1533,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552],{"class":550,"line":675},[548,1535,678],{"class":623},[548,1537,681],{"class":623},[548,1539,907],{"class":684},[548,1541,687],{"class":631},[548,1543,955],{"class":954},[548,1545,958],{"class":627},[548,1547,962],{"class":961},[548,1549,748],{"class":627},[548,1551,967],{"class":954},[548,1553,970],{"class":627},[548,1555,1556,1558,1560,1562,1564,1566,1568],{"class":550,"line":693},[548,1557,975],{"class":954},[548,1559,978],{"class":631},[548,1561,981],{"class":627},[548,1563,927],{"class":684},[548,1565,687],{"class":696},[548,1567,962],{"class":631},[548,1569,768],{"class":696},[548,1571,1572],{"class":550,"line":706},[548,1573,672],{"emptyLinePlaceholder":671},[548,1575,1576,1579,1581,1583],{"class":550,"line":716},[548,1577,1578],{"class":623},"  throw",[548,1580,1517],{"class":684},[548,1582,687],{"class":696},[548,1584,690],{"class":627},[548,1586,1587,1590,1592,1595],{"class":550,"line":742},[548,1588,1589],{"class":696},"    status",[548,1591,700],{"class":627},[548,1593,1594],{"class":1406}," 402",[548,1596,751],{"class":627},[548,1598,1599,1602,1604,1606,1609,1611],{"class":550,"line":754},[548,1600,1601],{"class":696},"    message",[548,1603,700],{"class":627},[548,1605,641],{"class":627},[548,1607,1608],{"class":557},"Payment failed",[548,1610,736],{"class":627},[548,1612,751],{"class":627},[548,1614,1615,1618,1620,1622,1625,1627],{"class":550,"line":762},[548,1616,1617],{"class":696},"    why",[548,1619,700],{"class":627},[548,1621,641],{"class":627},[548,1623,1624],{"class":557},"Card declined by issuer",[548,1626,736],{"class":627},[548,1628,751],{"class":627},[548,1630,1631,1634,1636,1638,1641,1643],{"class":550,"line":1119},[548,1632,1633],{"class":696},"    fix",[548,1635,700],{"class":627},[548,1637,641],{"class":627},[548,1639,1640],{"class":557},"Try a different payment method",[548,1642,736],{"class":627},[548,1644,751],{"class":627},[548,1646,1647,1650],{"class":550,"line":1139},[548,1648,1649],{"class":627},"  }",[548,1651,768],{"class":696},[548,1653,1655,1657],{"class":550,"line":1654},13,[548,1656,765],{"class":627},[548,1658,768],{"class":631},[538,1660,1663],{"className":613,"code":1661,"filename":1662,"language":616,"meta":544,"style":544},"import { defineEventHandler } from 'h3'\nimport { useLogger } from 'evlog\u002Fnitro'\nimport { createError } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  throw createError({\n    status: 402,\n    message: 'Payment failed',\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n  })\n})\n","routes\u002Fapi\u002Fpayment.post.ts (v2)",[474,1664,1665,1683,1701,1720,1724,1746,1762,1766,1776,1786,1800,1814,1828,1834],{"__ignoreMap":544},[548,1666,1667,1669,1671,1673,1675,1677,1679,1681],{"class":550,"line":551},[548,1668,624],{"class":623},[548,1670,628],{"class":627},[548,1672,1158],{"class":631},[548,1674,635],{"class":627},[548,1676,638],{"class":623},[548,1678,641],{"class":627},[548,1680,530],{"class":557},[548,1682,647],{"class":627},[548,1684,1685,1687,1689,1691,1693,1695,1697,1699],{"class":550,"line":650},[548,1686,624],{"class":623},[548,1688,628],{"class":627},[548,1690,927],{"class":631},[548,1692,635],{"class":627},[548,1694,638],{"class":623},[548,1696,641],{"class":627},[548,1698,807],{"class":557},[548,1700,647],{"class":627},[548,1702,1703,1705,1707,1709,1711,1713,1715,1718],{"class":550,"line":668},[548,1704,624],{"class":623},[548,1706,628],{"class":627},[548,1708,1517],{"class":631},[548,1710,635],{"class":627},[548,1712,638],{"class":623},[548,1714,641],{"class":627},[548,1716,1717],{"class":557},"evlog",[548,1719,647],{"class":627},[548,1721,1722],{"class":550,"line":675},[548,1723,672],{"emptyLinePlaceholder":671},[548,1725,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744],{"class":550,"line":693},[548,1727,678],{"class":623},[548,1729,681],{"class":623},[548,1731,1158],{"class":684},[548,1733,687],{"class":631},[548,1735,955],{"class":954},[548,1737,958],{"class":627},[548,1739,962],{"class":961},[548,1741,748],{"class":627},[548,1743,967],{"class":954},[548,1745,970],{"class":627},[548,1747,1748,1750,1752,1754,1756,1758,1760],{"class":550,"line":706},[548,1749,975],{"class":954},[548,1751,978],{"class":631},[548,1753,981],{"class":627},[548,1755,927],{"class":684},[548,1757,687],{"class":696},[548,1759,962],{"class":631},[548,1761,768],{"class":696},[548,1763,1764],{"class":550,"line":716},[548,1765,672],{"emptyLinePlaceholder":671},[548,1767,1768,1770,1772,1774],{"class":550,"line":742},[548,1769,1578],{"class":623},[548,1771,1517],{"class":684},[548,1773,687],{"class":696},[548,1775,690],{"class":627},[548,1777,1778,1780,1782,1784],{"class":550,"line":754},[548,1779,1589],{"class":696},[548,1781,700],{"class":627},[548,1783,1594],{"class":1406},[548,1785,751],{"class":627},[548,1787,1788,1790,1792,1794,1796,1798],{"class":550,"line":762},[548,1789,1601],{"class":696},[548,1791,700],{"class":627},[548,1793,641],{"class":627},[548,1795,1608],{"class":557},[548,1797,736],{"class":627},[548,1799,751],{"class":627},[548,1801,1802,1804,1806,1808,1810,1812],{"class":550,"line":1119},[548,1803,1617],{"class":696},[548,1805,700],{"class":627},[548,1807,641],{"class":627},[548,1809,1624],{"class":557},[548,1811,736],{"class":627},[548,1813,751],{"class":627},[548,1815,1816,1818,1820,1822,1824,1826],{"class":550,"line":1139},[548,1817,1633],{"class":696},[548,1819,700],{"class":627},[548,1821,641],{"class":627},[548,1823,1640],{"class":557},[548,1825,736],{"class":627},[548,1827,751],{"class":627},[548,1829,1830,1832],{"class":550,"line":1654},[548,1831,1649],{"class":627},[548,1833,768],{"class":696},[548,1835,1837,1839],{"class":550,"line":1836},14,[548,1838,765],{"class":627},[548,1840,768],{"class":631},[1842,1843,1845,1846,1848,1849,1851,1852,1848,1854,1856],"callout",{"color":1844,"icon":13},"info","In Nitro v3, import ",[474,1847,1465],{}," from ",[474,1850,663],{}," - it wraps the Nitro error handler. In Nitro v2, import ",[474,1853,1465],{},[474,1855,1717],{}," directly.",[526,1858,439],{"id":1859},"configuration",[470,1861,1862,1863,1866,1867,1470,1870,1470,1873,1470,1876,1879],{},"See the ",[515,1864,1865],{"href":440},"Configuration reference"," for all available options (",[474,1868,1869],{},"enabled",[474,1871,1872],{},"pretty",[474,1874,1875],{},"silent",[474,1877,1878],{},"sampling",", etc.).",[530,1881,1883],{"id":1882},"route-filtering","Route Filtering",[470,1885,1886,1887,1890,1891,1894,1895,1898],{},"Use ",[474,1888,1889],{},"include"," and ",[474,1892,1893],{},"exclude"," to control which routes are logged, and ",[474,1896,1897],{},"routes"," to assign different service names to different route groups:",[535,1900,1901,2098],{},[538,1902,1904],{"className":613,"code":1903,"filename":615,"language":616,"meta":544,"style":544},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [\n    evlog({\n      include: ['\u002Fapi\u002F**'],\n      exclude: ['\u002Fapi\u002Fhealth'],\n      routes: {\n        '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n        '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      },\n    })\n  ],\n})\n",[474,1905,1906,1924,1938,1942,1954,1962,1970,1992,2012,2021,2048,2074,2079,2085,2091],{"__ignoreMap":544},[548,1907,1908,1910,1912,1914,1916,1918,1920,1922],{"class":550,"line":551},[548,1909,624],{"class":623},[548,1911,628],{"class":627},[548,1913,632],{"class":631},[548,1915,635],{"class":627},[548,1917,638],{"class":623},[548,1919,641],{"class":627},[548,1921,644],{"class":557},[548,1923,647],{"class":627},[548,1925,1926,1928,1930,1932,1934,1936],{"class":550,"line":650},[548,1927,624],{"class":623},[548,1929,655],{"class":631},[548,1931,658],{"class":623},[548,1933,641],{"class":627},[548,1935,663],{"class":557},[548,1937,647],{"class":627},[548,1939,1940],{"class":550,"line":668},[548,1941,672],{"emptyLinePlaceholder":671},[548,1943,1944,1946,1948,1950,1952],{"class":550,"line":675},[548,1945,678],{"class":623},[548,1947,681],{"class":623},[548,1949,632],{"class":684},[548,1951,687],{"class":631},[548,1953,690],{"class":627},[548,1955,1956,1958,1960],{"class":550,"line":693},[548,1957,697],{"class":696},[548,1959,700],{"class":627},[548,1961,703],{"class":631},[548,1963,1964,1966,1968],{"class":550,"line":706},[548,1965,709],{"class":684},[548,1967,687],{"class":631},[548,1969,690],{"class":627},[548,1971,1972,1975,1977,1980,1982,1985,1987,1990],{"class":550,"line":716},[548,1973,1974],{"class":696},"      include",[548,1976,700],{"class":627},[548,1978,1979],{"class":631}," [",[548,1981,736],{"class":627},[548,1983,1984],{"class":557},"\u002Fapi\u002F**",[548,1986,736],{"class":627},[548,1988,1989],{"class":631},"]",[548,1991,751],{"class":627},[548,1993,1994,1997,1999,2001,2003,2006,2008,2010],{"class":550,"line":742},[548,1995,1996],{"class":696},"      exclude",[548,1998,700],{"class":627},[548,2000,1979],{"class":631},[548,2002,736],{"class":627},[548,2004,2005],{"class":557},"\u002Fapi\u002Fhealth",[548,2007,736],{"class":627},[548,2009,1989],{"class":631},[548,2011,751],{"class":627},[548,2013,2014,2017,2019],{"class":550,"line":754},[548,2015,2016],{"class":696},"      routes",[548,2018,700],{"class":627},[548,2020,970],{"class":627},[548,2022,2023,2026,2029,2031,2033,2035,2037,2039,2041,2044,2046],{"class":550,"line":762},[548,2024,2025],{"class":627},"        '",[548,2027,2028],{"class":696},"\u002Fapi\u002Fauth\u002F**",[548,2030,736],{"class":627},[548,2032,700],{"class":627},[548,2034,628],{"class":627},[548,2036,726],{"class":696},[548,2038,700],{"class":627},[548,2040,641],{"class":627},[548,2042,2043],{"class":557},"auth-service",[548,2045,736],{"class":627},[548,2047,739],{"class":627},[548,2049,2050,2052,2055,2057,2059,2061,2063,2065,2067,2070,2072],{"class":550,"line":1119},[548,2051,2025],{"class":627},[548,2053,2054],{"class":696},"\u002Fapi\u002Fpayment\u002F**",[548,2056,736],{"class":627},[548,2058,700],{"class":627},[548,2060,628],{"class":627},[548,2062,726],{"class":696},[548,2064,700],{"class":627},[548,2066,641],{"class":627},[548,2068,2069],{"class":557},"payment-service",[548,2071,736],{"class":627},[548,2073,739],{"class":627},[548,2075,2076],{"class":550,"line":1139},[548,2077,2078],{"class":627},"      },\n",[548,2080,2081,2083],{"class":550,"line":1654},[548,2082,745],{"class":627},[548,2084,768],{"class":631},[548,2086,2087,2089],{"class":550,"line":1836},[548,2088,757],{"class":631},[548,2090,751],{"class":627},[548,2092,2094,2096],{"class":550,"line":2093},15,[548,2095,765],{"class":627},[548,2097,768],{"class":631},[538,2099,2101],{"className":613,"code":2100,"filename":772,"language":616,"meta":544,"style":544},"import { defineNitroConfig } from 'nitropack\u002Fconfig'\nimport evlog from 'evlog\u002Fnitro'\n\nexport default defineNitroConfig({\n  modules: [\n    evlog({\n      include: ['\u002Fapi\u002F**'],\n      exclude: ['\u002Fapi\u002Fhealth'],\n      routes: {\n        '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n        '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      },\n    })\n  ],\n})\n",[474,2102,2103,2121,2135,2139,2151,2159,2167,2185,2203,2211,2235,2259,2263,2269,2275],{"__ignoreMap":544},[548,2104,2105,2107,2109,2111,2113,2115,2117,2119],{"class":550,"line":551},[548,2106,624],{"class":623},[548,2108,628],{"class":627},[548,2110,783],{"class":631},[548,2112,635],{"class":627},[548,2114,638],{"class":623},[548,2116,641],{"class":627},[548,2118,792],{"class":557},[548,2120,647],{"class":627},[548,2122,2123,2125,2127,2129,2131,2133],{"class":550,"line":650},[548,2124,624],{"class":623},[548,2126,655],{"class":631},[548,2128,658],{"class":623},[548,2130,641],{"class":627},[548,2132,807],{"class":557},[548,2134,647],{"class":627},[548,2136,2137],{"class":550,"line":668},[548,2138,672],{"emptyLinePlaceholder":671},[548,2140,2141,2143,2145,2147,2149],{"class":550,"line":675},[548,2142,678],{"class":623},[548,2144,681],{"class":623},[548,2146,783],{"class":684},[548,2148,687],{"class":631},[548,2150,690],{"class":627},[548,2152,2153,2155,2157],{"class":550,"line":693},[548,2154,697],{"class":696},[548,2156,700],{"class":627},[548,2158,703],{"class":631},[548,2160,2161,2163,2165],{"class":550,"line":706},[548,2162,709],{"class":684},[548,2164,687],{"class":631},[548,2166,690],{"class":627},[548,2168,2169,2171,2173,2175,2177,2179,2181,2183],{"class":550,"line":716},[548,2170,1974],{"class":696},[548,2172,700],{"class":627},[548,2174,1979],{"class":631},[548,2176,736],{"class":627},[548,2178,1984],{"class":557},[548,2180,736],{"class":627},[548,2182,1989],{"class":631},[548,2184,751],{"class":627},[548,2186,2187,2189,2191,2193,2195,2197,2199,2201],{"class":550,"line":742},[548,2188,1996],{"class":696},[548,2190,700],{"class":627},[548,2192,1979],{"class":631},[548,2194,736],{"class":627},[548,2196,2005],{"class":557},[548,2198,736],{"class":627},[548,2200,1989],{"class":631},[548,2202,751],{"class":627},[548,2204,2205,2207,2209],{"class":550,"line":754},[548,2206,2016],{"class":696},[548,2208,700],{"class":627},[548,2210,970],{"class":627},[548,2212,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233],{"class":550,"line":762},[548,2214,2025],{"class":627},[548,2216,2028],{"class":696},[548,2218,736],{"class":627},[548,2220,700],{"class":627},[548,2222,628],{"class":627},[548,2224,726],{"class":696},[548,2226,700],{"class":627},[548,2228,641],{"class":627},[548,2230,2043],{"class":557},[548,2232,736],{"class":627},[548,2234,739],{"class":627},[548,2236,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257],{"class":550,"line":1119},[548,2238,2025],{"class":627},[548,2240,2054],{"class":696},[548,2242,736],{"class":627},[548,2244,700],{"class":627},[548,2246,628],{"class":627},[548,2248,726],{"class":696},[548,2250,700],{"class":627},[548,2252,641],{"class":627},[548,2254,2069],{"class":557},[548,2256,736],{"class":627},[548,2258,739],{"class":627},[548,2260,2261],{"class":550,"line":1139},[548,2262,2078],{"class":627},[548,2264,2265,2267],{"class":550,"line":1654},[548,2266,745],{"class":627},[548,2268,768],{"class":631},[548,2270,2271,2273],{"class":550,"line":1836},[548,2272,757],{"class":631},[548,2274,751],{"class":627},[548,2276,2277,2279],{"class":550,"line":2093},[548,2278,765],{"class":627},[548,2280,768],{"class":631},[1842,2282,2285,2288,2289,1890,2291,2293],{"color":2283,"icon":2284},"warning","i-lucide-alert-triangle",[1429,2286,2287],{},"Exclusions take precedence."," If a path matches both ",[474,2290,1889],{},[474,2292,1893],{},", it will be excluded.",[526,2295,2297],{"id":2296},"drain-enrichers","Drain & Enrichers",[470,2299,2300],{},"Use Nitro plugin hooks to send logs to external services and enrich them with additional context.",[530,2302,2304],{"id":2303},"drain-plugin","Drain Plugin",[538,2306,2309],{"className":613,"code":2307,"filename":2308,"language":616,"meta":544,"style":544},"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,2310,2311,2333,2353,2373,2377,2403,2432,2451,2457,2477,2481,2503,2534],{"__ignoreMap":544},[548,2312,2313,2315,2318,2320,2323,2325,2327,2329,2331],{"class":550,"line":551},[548,2314,624],{"class":623},[548,2316,2317],{"class":623}," type",[548,2319,628],{"class":627},[548,2321,2322],{"class":631}," DrainContext",[548,2324,635],{"class":627},[548,2326,638],{"class":623},[548,2328,641],{"class":627},[548,2330,1717],{"class":557},[548,2332,647],{"class":627},[548,2334,2335,2337,2339,2342,2344,2346,2348,2351],{"class":550,"line":650},[548,2336,624],{"class":623},[548,2338,628],{"class":627},[548,2340,2341],{"class":631}," createAxiomDrain",[548,2343,635],{"class":627},[548,2345,638],{"class":623},[548,2347,641],{"class":627},[548,2349,2350],{"class":557},"evlog\u002Faxiom",[548,2352,647],{"class":627},[548,2354,2355,2357,2359,2362,2364,2366,2368,2371],{"class":550,"line":668},[548,2356,624],{"class":623},[548,2358,628],{"class":627},[548,2360,2361],{"class":631}," createDrainPipeline",[548,2363,635],{"class":627},[548,2365,638],{"class":623},[548,2367,641],{"class":627},[548,2369,2370],{"class":557},"evlog\u002Fpipeline",[548,2372,647],{"class":627},[548,2374,2375],{"class":550,"line":675},[548,2376,672],{"emptyLinePlaceholder":671},[548,2378,2379,2382,2385,2388,2390,2393,2396,2399,2401],{"class":550,"line":693},[548,2380,2381],{"class":954},"const",[548,2383,2384],{"class":631}," pipeline ",[548,2386,2387],{"class":627},"=",[548,2389,2361],{"class":684},[548,2391,2392],{"class":627},"\u003C",[548,2394,2395],{"class":554},"DrainContext",[548,2397,2398],{"class":627},">",[548,2400,687],{"class":631},[548,2402,690],{"class":627},[548,2404,2405,2408,2410,2412,2415,2417,2420,2422,2425,2427,2430],{"class":550,"line":706},[548,2406,2407],{"class":696},"  batch",[548,2409,700],{"class":627},[548,2411,628],{"class":627},[548,2413,2414],{"class":696}," size",[548,2416,700],{"class":627},[548,2418,2419],{"class":1406}," 50",[548,2421,1094],{"class":627},[548,2423,2424],{"class":696}," intervalMs",[548,2426,700],{"class":627},[548,2428,2429],{"class":1406}," 5000",[548,2431,739],{"class":627},[548,2433,2434,2437,2439,2441,2444,2446,2449],{"class":550,"line":716},[548,2435,2436],{"class":696},"  retry",[548,2438,700],{"class":627},[548,2440,628],{"class":627},[548,2442,2443],{"class":696}," maxAttempts",[548,2445,700],{"class":627},[548,2447,2448],{"class":1406}," 3",[548,2450,739],{"class":627},[548,2452,2453,2455],{"class":550,"line":742},[548,2454,765],{"class":627},[548,2456,768],{"class":631},[548,2458,2459,2461,2464,2466,2469,2471,2474],{"class":550,"line":754},[548,2460,2381],{"class":954},[548,2462,2463],{"class":631}," drain ",[548,2465,2387],{"class":627},[548,2467,2468],{"class":684}," pipeline",[548,2470,687],{"class":631},[548,2472,2473],{"class":684},"createAxiomDrain",[548,2475,2476],{"class":631},"())\n",[548,2478,2479],{"class":550,"line":762},[548,2480,672],{"emptyLinePlaceholder":671},[548,2482,2483,2485,2487,2490,2492,2494,2497,2499,2501],{"class":550,"line":1119},[548,2484,678],{"class":623},[548,2486,681],{"class":623},[548,2488,2489],{"class":684}," defineNitroPlugin",[548,2491,687],{"class":631},[548,2493,687],{"class":627},[548,2495,2496],{"class":961},"nitroApp",[548,2498,748],{"class":627},[548,2500,967],{"class":954},[548,2502,970],{"class":627},[548,2504,2505,2508,2510,2513,2515,2518,2520,2522,2525,2527,2529,2532],{"class":550,"line":1139},[548,2506,2507],{"class":631},"  nitroApp",[548,2509,1022],{"class":627},[548,2511,2512],{"class":631},"hooks",[548,2514,1022],{"class":627},[548,2516,2517],{"class":684},"hook",[548,2519,687],{"class":696},[548,2521,736],{"class":627},[548,2523,2524],{"class":557},"evlog:drain",[548,2526,736],{"class":627},[548,2528,1094],{"class":627},[548,2530,2531],{"class":631}," drain",[548,2533,768],{"class":696},[548,2535,2536,2538],{"class":550,"line":1654},[548,2537,765],{"class":627},[548,2539,768],{"class":631},[1842,2541,2542,2543,1848,2546,2548,2549,1022],{"color":1844,"icon":13},"For Nitro v3 standalone, use ",[474,2544,2545],{},"definePlugin",[474,2547,644],{}," instead of ",[474,2550,2551],{},"defineNitroPlugin",[530,2553,2555],{"id":2554},"enricher-plugin","Enricher Plugin",[538,2557,2560],{"className":613,"code":2558,"filename":2559,"language":616,"meta":544,"style":544},"import { createUserAgentEnricher, createGeoEnricher } from 'evlog\u002Fenrichers'\n\nconst enrichers = [createUserAgentEnricher(), createGeoEnricher()]\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,2561,2562,2587,2591,2615,2619,2639,2673,2703,2709],{"__ignoreMap":544},[548,2563,2564,2566,2568,2571,2573,2576,2578,2580,2582,2585],{"class":550,"line":551},[548,2565,624],{"class":623},[548,2567,628],{"class":627},[548,2569,2570],{"class":631}," createUserAgentEnricher",[548,2572,1094],{"class":627},[548,2574,2575],{"class":631}," createGeoEnricher",[548,2577,635],{"class":627},[548,2579,638],{"class":623},[548,2581,641],{"class":627},[548,2583,2584],{"class":557},"evlog\u002Fenrichers",[548,2586,647],{"class":627},[548,2588,2589],{"class":550,"line":650},[548,2590,672],{"emptyLinePlaceholder":671},[548,2592,2593,2595,2598,2600,2602,2605,2608,2610,2612],{"class":550,"line":668},[548,2594,2381],{"class":954},[548,2596,2597],{"class":631}," enrichers ",[548,2599,2387],{"class":627},[548,2601,1979],{"class":631},[548,2603,2604],{"class":684},"createUserAgentEnricher",[548,2606,2607],{"class":631},"()",[548,2609,1094],{"class":627},[548,2611,2575],{"class":684},[548,2613,2614],{"class":631},"()]\n",[548,2616,2617],{"class":550,"line":675},[548,2618,672],{"emptyLinePlaceholder":671},[548,2620,2621,2623,2625,2627,2629,2631,2633,2635,2637],{"class":550,"line":693},[548,2622,678],{"class":623},[548,2624,681],{"class":623},[548,2626,2489],{"class":684},[548,2628,687],{"class":631},[548,2630,687],{"class":627},[548,2632,2496],{"class":961},[548,2634,748],{"class":627},[548,2636,967],{"class":954},[548,2638,970],{"class":627},[548,2640,2641,2643,2645,2647,2649,2651,2653,2655,2658,2660,2662,2664,2667,2669,2671],{"class":550,"line":706},[548,2642,2507],{"class":631},[548,2644,1022],{"class":627},[548,2646,2512],{"class":631},[548,2648,1022],{"class":627},[548,2650,2517],{"class":684},[548,2652,687],{"class":696},[548,2654,736],{"class":627},[548,2656,2657],{"class":557},"evlog:enrich",[548,2659,736],{"class":627},[548,2661,1094],{"class":627},[548,2663,958],{"class":627},[548,2665,2666],{"class":961},"ctx",[548,2668,748],{"class":627},[548,2670,967],{"class":954},[548,2672,970],{"class":627},[548,2674,2675,2678,2680,2682,2685,2688,2691,2694,2697,2699,2701],{"class":550,"line":716},[548,2676,2677],{"class":623},"    for",[548,2679,958],{"class":696},[548,2681,2381],{"class":954},[548,2683,2684],{"class":631}," enricher",[548,2686,2687],{"class":627}," of",[548,2689,2690],{"class":631}," enrichers",[548,2692,2693],{"class":696},") ",[548,2695,2696],{"class":684},"enricher",[548,2698,687],{"class":696},[548,2700,2666],{"class":631},[548,2702,768],{"class":696},[548,2704,2705,2707],{"class":550,"line":742},[548,2706,1649],{"class":627},[548,2708,768],{"class":696},[548,2710,2711,2713],{"class":550,"line":754},[548,2712,765],{"class":627},[548,2714,768],{"class":631},[1842,2716,1862,2719,1890,2721,2723],{"color":2717,"icon":2718},"neutral","i-lucide-arrow-right",[515,2720,90],{"href":95},[515,2722,370],{"href":371}," docs for the full list of available drains and enrichers.",[526,2725,61],{"id":1878},[530,2727,2729],{"id":2728},"head-sampling","Head Sampling",[470,2731,2732],{},"Randomly keep a percentage of logs per level. Runs before the request completes.",[535,2734,2735,2919],{},[538,2736,2738],{"className":613,"code":2737,"filename":615,"language":616,"meta":544,"style":544},"import { defineConfig } from 'nitro'\nimport evlog from 'evlog\u002Fnitro\u002Fv3'\n\nexport default defineConfig({\n  modules: [\n    evlog({\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 5 },\n        keep: [\n          { duration: 1000 },\n          { status: 400 },\n        ],\n      },\n    })\n  ],\n})\n",[474,2739,2740,2758,2772,2776,2788,2796,2804,2813,2851,2860,2875,2889,2896,2900,2906,2912],{"__ignoreMap":544},[548,2741,2742,2744,2746,2748,2750,2752,2754,2756],{"class":550,"line":551},[548,2743,624],{"class":623},[548,2745,628],{"class":627},[548,2747,632],{"class":631},[548,2749,635],{"class":627},[548,2751,638],{"class":623},[548,2753,641],{"class":627},[548,2755,644],{"class":557},[548,2757,647],{"class":627},[548,2759,2760,2762,2764,2766,2768,2770],{"class":550,"line":650},[548,2761,624],{"class":623},[548,2763,655],{"class":631},[548,2765,658],{"class":623},[548,2767,641],{"class":627},[548,2769,663],{"class":557},[548,2771,647],{"class":627},[548,2773,2774],{"class":550,"line":668},[548,2775,672],{"emptyLinePlaceholder":671},[548,2777,2778,2780,2782,2784,2786],{"class":550,"line":675},[548,2779,678],{"class":623},[548,2781,681],{"class":623},[548,2783,632],{"class":684},[548,2785,687],{"class":631},[548,2787,690],{"class":627},[548,2789,2790,2792,2794],{"class":550,"line":693},[548,2791,697],{"class":696},[548,2793,700],{"class":627},[548,2795,703],{"class":631},[548,2797,2798,2800,2802],{"class":550,"line":706},[548,2799,709],{"class":684},[548,2801,687],{"class":631},[548,2803,690],{"class":627},[548,2805,2806,2809,2811],{"class":550,"line":716},[548,2807,2808],{"class":696},"      sampling",[548,2810,700],{"class":627},[548,2812,970],{"class":627},[548,2814,2815,2818,2820,2822,2825,2827,2830,2832,2835,2837,2839,2841,2844,2846,2849],{"class":550,"line":742},[548,2816,2817],{"class":696},"        rates",[548,2819,700],{"class":627},[548,2821,628],{"class":627},[548,2823,2824],{"class":696}," info",[548,2826,700],{"class":627},[548,2828,2829],{"class":1406}," 10",[548,2831,1094],{"class":627},[548,2833,2834],{"class":696}," warn",[548,2836,700],{"class":627},[548,2838,2419],{"class":1406},[548,2840,1094],{"class":627},[548,2842,2843],{"class":696}," debug",[548,2845,700],{"class":627},[548,2847,2848],{"class":1406}," 5",[548,2850,739],{"class":627},[548,2852,2853,2856,2858],{"class":550,"line":754},[548,2854,2855],{"class":696},"        keep",[548,2857,700],{"class":627},[548,2859,703],{"class":631},[548,2861,2862,2865,2868,2870,2873],{"class":550,"line":762},[548,2863,2864],{"class":627},"          {",[548,2866,2867],{"class":696}," duration",[548,2869,700],{"class":627},[548,2871,2872],{"class":1406}," 1000",[548,2874,739],{"class":627},[548,2876,2877,2879,2882,2884,2887],{"class":550,"line":1119},[548,2878,2864],{"class":627},[548,2880,2881],{"class":696}," status",[548,2883,700],{"class":627},[548,2885,2886],{"class":1406}," 400",[548,2888,739],{"class":627},[548,2890,2891,2894],{"class":550,"line":1139},[548,2892,2893],{"class":631},"        ]",[548,2895,751],{"class":627},[548,2897,2898],{"class":550,"line":1654},[548,2899,2078],{"class":627},[548,2901,2902,2904],{"class":550,"line":1836},[548,2903,745],{"class":627},[548,2905,768],{"class":631},[548,2907,2908,2910],{"class":550,"line":2093},[548,2909,757],{"class":631},[548,2911,751],{"class":627},[548,2913,2915,2917],{"class":550,"line":2914},16,[548,2916,765],{"class":627},[548,2918,768],{"class":631},[538,2920,2922],{"className":613,"code":2921,"filename":772,"language":616,"meta":544,"style":544},"import { defineNitroConfig } from 'nitropack\u002Fconfig'\nimport evlog from 'evlog\u002Fnitro'\n\nexport default defineNitroConfig({\n  modules: [\n    evlog({\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 5 },\n        keep: [\n          { duration: 1000 },\n          { status: 400 },\n        ],\n      },\n    })\n  ],\n})\n",[474,2923,2924,2942,2956,2960,2972,2980,2988,2996,3028,3036,3048,3060,3066,3070,3076,3082],{"__ignoreMap":544},[548,2925,2926,2928,2930,2932,2934,2936,2938,2940],{"class":550,"line":551},[548,2927,624],{"class":623},[548,2929,628],{"class":627},[548,2931,783],{"class":631},[548,2933,635],{"class":627},[548,2935,638],{"class":623},[548,2937,641],{"class":627},[548,2939,792],{"class":557},[548,2941,647],{"class":627},[548,2943,2944,2946,2948,2950,2952,2954],{"class":550,"line":650},[548,2945,624],{"class":623},[548,2947,655],{"class":631},[548,2949,658],{"class":623},[548,2951,641],{"class":627},[548,2953,807],{"class":557},[548,2955,647],{"class":627},[548,2957,2958],{"class":550,"line":668},[548,2959,672],{"emptyLinePlaceholder":671},[548,2961,2962,2964,2966,2968,2970],{"class":550,"line":675},[548,2963,678],{"class":623},[548,2965,681],{"class":623},[548,2967,783],{"class":684},[548,2969,687],{"class":631},[548,2971,690],{"class":627},[548,2973,2974,2976,2978],{"class":550,"line":693},[548,2975,697],{"class":696},[548,2977,700],{"class":627},[548,2979,703],{"class":631},[548,2981,2982,2984,2986],{"class":550,"line":706},[548,2983,709],{"class":684},[548,2985,687],{"class":631},[548,2987,690],{"class":627},[548,2989,2990,2992,2994],{"class":550,"line":716},[548,2991,2808],{"class":696},[548,2993,700],{"class":627},[548,2995,970],{"class":627},[548,2997,2998,3000,3002,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026],{"class":550,"line":742},[548,2999,2817],{"class":696},[548,3001,700],{"class":627},[548,3003,628],{"class":627},[548,3005,2824],{"class":696},[548,3007,700],{"class":627},[548,3009,2829],{"class":1406},[548,3011,1094],{"class":627},[548,3013,2834],{"class":696},[548,3015,700],{"class":627},[548,3017,2419],{"class":1406},[548,3019,1094],{"class":627},[548,3021,2843],{"class":696},[548,3023,700],{"class":627},[548,3025,2848],{"class":1406},[548,3027,739],{"class":627},[548,3029,3030,3032,3034],{"class":550,"line":754},[548,3031,2855],{"class":696},[548,3033,700],{"class":627},[548,3035,703],{"class":631},[548,3037,3038,3040,3042,3044,3046],{"class":550,"line":762},[548,3039,2864],{"class":627},[548,3041,2867],{"class":696},[548,3043,700],{"class":627},[548,3045,2872],{"class":1406},[548,3047,739],{"class":627},[548,3049,3050,3052,3054,3056,3058],{"class":550,"line":1119},[548,3051,2864],{"class":627},[548,3053,2881],{"class":696},[548,3055,700],{"class":627},[548,3057,2886],{"class":1406},[548,3059,739],{"class":627},[548,3061,3062,3064],{"class":550,"line":1139},[548,3063,2893],{"class":631},[548,3065,751],{"class":627},[548,3067,3068],{"class":550,"line":1654},[548,3069,2078],{"class":627},[548,3071,3072,3074],{"class":550,"line":1836},[548,3073,745],{"class":627},[548,3075,768],{"class":631},[548,3077,3078,3080],{"class":550,"line":2093},[548,3079,757],{"class":631},[548,3081,751],{"class":627},[548,3083,3084,3086],{"class":550,"line":2914},[548,3085,765],{"class":627},[548,3087,768],{"class":631},[470,3089,3090],{},"Each level is a percentage from 0 to 100. Levels you don't configure default to 100% (keep everything).",[530,3092,3094],{"id":3093},"custom-tail-sampling","Custom Tail Sampling",[470,3096,3097,3098,3101],{},"For conditions beyond status, duration, and path, use the ",[474,3099,3100],{},"evlog:emit:keep"," hook:",[538,3103,3106],{"className":613,"code":3104,"filename":3105,"language":616,"meta":544,"style":544},"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) ctx.shouldKeep = true\n  })\n})\n","server\u002Fplugins\u002Fevlog-sampling.ts",[474,3107,3108,3128,3160,3204,3233,3239],{"__ignoreMap":544},[548,3109,3110,3112,3114,3116,3118,3120,3122,3124,3126],{"class":550,"line":551},[548,3111,678],{"class":623},[548,3113,681],{"class":623},[548,3115,2489],{"class":684},[548,3117,687],{"class":631},[548,3119,687],{"class":627},[548,3121,2496],{"class":961},[548,3123,748],{"class":627},[548,3125,967],{"class":954},[548,3127,970],{"class":627},[548,3129,3130,3132,3134,3136,3138,3140,3142,3144,3146,3148,3150,3152,3154,3156,3158],{"class":550,"line":650},[548,3131,2507],{"class":631},[548,3133,1022],{"class":627},[548,3135,2512],{"class":631},[548,3137,1022],{"class":627},[548,3139,2517],{"class":684},[548,3141,687],{"class":696},[548,3143,736],{"class":627},[548,3145,3100],{"class":557},[548,3147,736],{"class":627},[548,3149,1094],{"class":627},[548,3151,958],{"class":627},[548,3153,2666],{"class":961},[548,3155,748],{"class":627},[548,3157,967],{"class":954},[548,3159,970],{"class":627},[548,3161,3162,3165,3167,3169,3172,3174,3177,3179,3182,3185,3187,3190,3193,3196,3198,3201],{"class":550,"line":668},[548,3163,3164],{"class":954},"    const",[548,3166,1033],{"class":631},[548,3168,981],{"class":627},[548,3170,3171],{"class":631}," ctx",[548,3173,1022],{"class":627},[548,3175,3176],{"class":631},"context",[548,3178,1022],{"class":627},[548,3180,3181],{"class":631},"user",[548,3183,3184],{"class":623}," as",[548,3186,628],{"class":627},[548,3188,3189],{"class":696}," premium",[548,3191,3192],{"class":627},"?:",[548,3194,3195],{"class":554}," boolean",[548,3197,635],{"class":627},[548,3199,3200],{"class":627}," |",[548,3202,3203],{"class":554}," undefined\n",[548,3205,3206,3209,3211,3213,3216,3219,3221,3223,3225,3228,3230],{"class":550,"line":675},[548,3207,3208],{"class":623},"    if",[548,3210,958],{"class":696},[548,3212,3181],{"class":631},[548,3214,3215],{"class":627},"?.",[548,3217,3218],{"class":631},"premium",[548,3220,2693],{"class":696},[548,3222,2666],{"class":631},[548,3224,1022],{"class":627},[548,3226,3227],{"class":631},"shouldKeep",[548,3229,981],{"class":627},[548,3231,3232],{"class":1132}," true\n",[548,3234,3235,3237],{"class":550,"line":693},[548,3236,1649],{"class":627},[548,3238,768],{"class":696},[548,3240,3241,3243],{"class":550,"line":706},[548,3242,765],{"class":627},[548,3244,768],{"class":631},[1842,3246,3247,3248,3251],{"color":1844,"icon":13},"Errors are always kept by default. You have to explicitly set ",[474,3249,3250],{},"error: 0"," to drop them.",[526,3253,3255],{"id":3254},"next-steps","Next Steps",[470,3257,3258,3259,3261],{},"Deepen your ",[1429,3260,182],{}," integration:",[487,3263,3264,3269,3274,3279],{},[490,3265,3266,3268],{},[515,3267,46],{"href":47},": Design comprehensive events with context layering",[490,3270,3271,3273],{},[515,3272,90],{"href":95},": Send logs to Axiom, Sentry, PostHog, and more",[490,3275,3276,3278],{},[515,3277,61],{"href":62},": Control log volume with head and tail sampling",[490,3280,3281,3283,3284,1470,3286,1474,3288,3290],{},[515,3282,51],{"href":52},": Throw errors with ",[474,3285,1469],{},[474,3287,1473],{},[474,3289,1477],{}," fields",[3292,3293,3294],"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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}",{"title":544,"searchDepth":650,"depth":650,"links":3296},[3297,3301,3302,3303,3306,3310,3314],{"id":528,"depth":650,"text":25,"children":3298},[3299,3300],{"id":532,"depth":668,"text":533},{"id":607,"depth":668,"text":608},{"id":884,"depth":650,"text":46},{"id":1459,"depth":650,"text":1460},{"id":1859,"depth":650,"text":439,"children":3304},[3305],{"id":1882,"depth":668,"text":1883},{"id":2296,"depth":650,"text":2297,"children":3307},[3308,3309],{"id":2303,"depth":668,"text":2304},{"id":2554,"depth":668,"text":2555},{"id":1878,"depth":650,"text":61,"children":3311},[3312,3313],{"id":2728,"depth":668,"text":2729},{"id":3093,"depth":668,"text":3094},{"id":3254,"depth":650,"text":3255},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Nitro v2 and v3 applications.","md",null,{},{"title":182,"icon":185},{"title":182,"description":3315},"gewPHrm1Qu3FJtCXvBHeoM2qY0unbsbdhHEwn1M17OE",[3323,3325],{"title":177,"path":178,"stem":179,"description":3324,"icon":180,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in SvelteKit applications.",{"title":187,"path":188,"stem":189,"description":3326,"icon":190,"children":-1},"Automatic wide events, structured errors, and logging in TanStack Start API routes and server functions.",1784213442613]