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