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