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