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