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