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