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