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