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