[{"data":1,"prerenderedAt":800},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-overview":253,"-frameworks-overview-surround":795},[4,30,110,169,223,239],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"icon":109},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F14.custom-integration","i-lucide-puzzle",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[115,120,125,130,135,140,145,149,154,159,164],{"title":116,"path":117,"stem":118,"icon":119},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":121,"path":122,"stem":123,"icon":124},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F10.vite-plugin","i-custom-vite",{"title":131,"path":132,"stem":133,"icon":134},"AI SDK Integration","\u002Fcore-concepts\u002Fai-sdk","3.core-concepts\u002F11.ai-sdk","i-lucide-scan-eye",{"title":136,"path":137,"stem":138,"icon":139},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":141,"path":142,"stem":143,"icon":144},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":146,"path":147,"stem":148,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":150,"path":151,"stem":152,"icon":153},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":155,"path":156,"stem":157,"icon":158},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":160,"path":161,"stem":162,"icon":163},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":165,"path":166,"stem":167,"icon":168},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F8.performance","i-lucide-gauge",{"title":170,"path":171,"stem":172,"children":173,"page":29},"Adapters","\u002Fadapters","4.adapters",[174,178,183,188,193,198,203,208,213,218],{"title":36,"path":175,"stem":176,"icon":177},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":179,"path":180,"stem":181,"icon":182},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":184,"path":185,"stem":186,"icon":187},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":189,"path":190,"stem":191,"icon":192},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":194,"path":195,"stem":196,"icon":197},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":199,"path":200,"stem":201,"icon":202},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":204,"path":205,"stem":206,"icon":207},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":209,"path":210,"stem":211,"icon":212},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":214,"path":215,"stem":216,"icon":217},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":219,"path":220,"stem":221,"icon":222},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":224,"path":225,"stem":226,"children":227,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[228,231,235],{"title":36,"path":229,"stem":230,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":232,"path":233,"stem":234,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":236,"path":237,"stem":238,"icon":217},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":240,"path":241,"stem":242,"children":243,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[244,248],{"title":36,"path":245,"stem":246,"icon":247},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":249,"path":250,"stem":251,"icon":252},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":254,"title":255,"body":256,"description":788,"extension":789,"links":790,"meta":791,"navigation":792,"path":37,"seo":793,"stem":38,"__hash__":794},"docs\u002F2.frameworks\u002F00.overview.md","Framework Integrations",{"type":257,"value":258,"toc":780},"minimark",[259,275,279,608,612,659,663,703,726,729,739,774],[260,261,262,263,267,268,267,271,274],"p",{},"evlog provides native integrations for every major TypeScript framework. The same core API (",[264,265,266],"code",{},"log.set()",", ",[264,269,270],{},"createError()",[264,272,273],{},"parseError()",") works identically everywhere. Only the setup differs.",[276,277,36],"h2",{"id":278},"overview",[280,281,282,304],"table",{},[283,284,285],"thead",{},[286,287,288,292,295,298,301],"tr",{},[289,290,291],"th",{},"Framework",[289,293,294],{},"Import",[289,296,297],{},"Type",[289,299,300],{},"Logger Access",[289,302,303],{},"Status",[305,306,307,331,352,376,395,415,434,457,477,500,523,543,567,586],"tbody",{},[286,308,309,315,320,323,328],{},[310,311,312],"td",{},[313,314,41],"a",{"href":42},[310,316,317],{},[264,318,319],{},"evlog\u002Fnuxt",[310,321,322],{},"Module",[310,324,325],{},[264,326,327],{},"useLogger(event)",[310,329,330],{},"Stable",[286,332,333,337,342,345,350],{},[310,334,335],{},[313,336,46],{"href":47},[310,338,339],{},[264,340,341],{},"evlog\u002Fnext",[310,343,344],{},"Factory",[310,346,347],{},[264,348,349],{},"useLogger()",[310,351,330],{},[286,353,354,358,363,366,374],{},[310,355,356],{},[313,357,51],{"href":52},[310,359,360],{},[264,361,362],{},"evlog\u002Fsveltekit",[310,364,365],{},"Hooks",[310,367,368,371,372],{},[264,369,370],{},"event.locals.log"," \u002F ",[264,373,349],{},[310,375,330],{},[286,377,378,382,387,389,393],{},[310,379,380],{},[313,381,56],{"href":57},[310,383,384],{},[264,385,386],{},"evlog\u002Fnitro",[310,388,322],{},[310,390,391],{},[264,392,327],{},[310,394,330],{},[286,396,397,401,406,408,413],{},[310,398,399],{},[313,400,61],{"href":62},[310,402,403],{},[264,404,405],{},"evlog\u002Fnitro\u002Fv3",[310,407,322],{},[310,409,410],{},[264,411,412],{},"useRequest().context.log",[310,414,330],{},[286,416,417,421,426,428,432],{},[310,418,419],{},[313,420,66],{"href":67},[310,422,423],{},[264,424,425],{},"evlog\u002Fnestjs",[310,427,322],{},[310,429,430],{},[264,431,349],{},[310,433,330],{},[286,435,436,440,445,448,455],{},[310,437,438],{},[313,439,71],{"href":72},[310,441,442],{},[264,443,444],{},"evlog\u002Fexpress",[310,446,447],{},"Middleware",[310,449,450,371,453],{},[264,451,452],{},"req.log",[264,454,349],{},[310,456,330],{},[286,458,459,463,468,470,475],{},[310,460,461],{},[313,462,76],{"href":77},[310,464,465],{},[264,466,467],{},"evlog\u002Fhono",[310,469,447],{},[310,471,472],{},[264,473,474],{},"c.get('log')",[310,476,330],{},[286,478,479,483,488,491,498],{},[310,480,481],{},[313,482,81],{"href":82},[310,484,485],{},[264,486,487],{},"evlog\u002Ffastify",[310,489,490],{},"Plugin",[310,492,493,371,496],{},[264,494,495],{},"request.log",[264,497,349],{},[310,499,330],{},[286,501,502,506,511,513,521],{},[310,503,504],{},[313,505,86],{"href":87},[310,507,508],{},[264,509,510],{},"evlog\u002Felysia",[310,512,490],{},[310,514,515,518,519],{},[264,516,517],{},"log"," (context) \u002F ",[264,520,349],{},[310,522,330],{},[286,524,525,529,534,536,541],{},[310,526,527],{},[313,528,91],{"href":92},[310,530,531],{},[264,532,533],{},"evlog\u002Fworkers",[310,535,344],{},[310,537,538],{},[264,539,540],{},"createWorkersLogger()",[310,542,330],{},[286,544,545,549,554,557,565],{},[310,546,547],{},[313,548,96],{"href":97},[310,550,551],{},[264,552,553],{},"evlog",[310,555,556],{},"Manual",[310,558,559,371,562],{},[264,560,561],{},"createLogger()",[264,563,564],{},"createRequestLogger()",[310,566,330],{},[286,568,569,573,577,579,583],{},[310,570,571],{},[313,572,101],{"href":102},[310,574,575],{},[264,576,553],{},[310,578,556],{},[310,580,581],{},[264,582,564],{},[310,584,585],{},"Guide",[286,587,588,592,597,600,605],{},[310,589,590],{},[313,591,236],{"href":107},[310,593,594],{},[264,595,596],{},"evlog\u002Ftoolkit",[310,598,599],{},"Build your own",[310,601,602],{},[264,603,604],{},"createMiddlewareLogger()",[310,606,607],{},"Beta",[276,609,611],{"id":610},"full-stack-frameworks","Full-Stack Frameworks",[613,614,615,631,641,647,650,653],"card-group",{},[616,617,619,620,267,623,626,627,630],"card",{"color":618,"icon":44,"title":41,"to":42},"neutral","Auto-imported ",[264,621,622],{},"useLogger",[264,624,625],{},"createError",", and ",[264,628,629],{},"parseError",". Zero config.",[616,632,633,636,637,640],{"color":618,"icon":49,"title":46,"to":47},[264,634,635],{},"createEvlog()"," factory with ",[264,638,639],{},"withEvlog()"," handler wrapper and client provider.",[616,642,643,644,646],{"color":618,"icon":54,"title":51,"to":52},"Handle and handleError hooks with request-scoped logger on ",[264,645,370],{},".",[616,648,649],{"color":618,"icon":59,"title":56,"to":57},"Module for both Nitro v2 and v3 with plugin-based drain and enrichment hooks.",[616,651,652],{"color":618,"icon":64,"title":61,"to":62},"Uses Nitro v3 module with async context for seamless logging in server functions.",[616,654,655,658],{"color":618,"icon":69,"title":66,"to":67},[264,656,657],{},"EvlogModule.forRoot()"," with global middleware, exception filter, and async config.",[276,660,662],{"id":661},"server-frameworks","Server Frameworks",[613,664,665,671,680,686,694,697,700],{},[616,666,667,668,670],{"color":618,"icon":74,"title":71,"to":72},"Middleware with ",[264,669,452],{}," and 4-argument error handler.",[616,672,673,674,676,677,646],{"color":618,"icon":79,"title":76,"to":77},"Middleware with typed ",[264,675,474],{}," via ",[264,678,679],{},"EvlogVariables",[616,681,682,683,685],{"color":618,"icon":84,"title":81,"to":82},"Plugin with ",[264,684,495],{}," that shadows Fastify's built-in pino logger.",[616,687,682,688,690,691,646],{"color":618,"icon":89,"title":86,"to":87},[264,689,517],{}," in route context via Elysia's ",[264,692,693],{},"derive",[616,695,696],{"color":618,"icon":94,"title":91,"to":92},"Factory for creating request-scoped loggers with Cloudflare-specific context.",[616,698,699],{"color":618,"icon":99,"title":96,"to":97},"For scripts, CLI tools, queues, and any TypeScript process.",[616,701,702],{"color":618,"icon":109,"title":106,"to":107},"Build your own middleware with the evlog toolkit API.",[704,705,707,708,267,711,267,714,267,717,267,720,626,723,646],"callout",{"color":706,"icon":13},"info","All frameworks support the same features: ",[313,709,710],{"href":122},"wide events",[313,712,713],{"href":137},"structured errors",[313,715,716],{"href":175},"drain adapters",[313,718,719],{"href":229},"enrichers",[313,721,722],{"href":142},"sampling",[313,724,725],{"href":132},"AI SDK integration",[276,727,126],{"id":728},"vite-plugin",[260,730,731,732,738],{},"For any Vite-based project, the ",[313,733,734,737],{"href":127},[264,735,736],{},"evlog\u002Fvite"," plugin"," adds build-time optimizations:",[740,741,742,754,764],"ul",{},[743,744,745,749,750,753],"li",{},[746,747,748],"strong",{},"Auto-initialization"," — no ",[264,751,752],{},"initLogger()"," call needed",[743,755,756,759,760,763],{},[746,757,758],{},"Debug stripping"," — ",[264,761,762],{},"log.debug()"," removed from production builds",[743,765,766,769,770,773],{},[746,767,768],{},"Source location"," — inject ",[264,771,772],{},"__source: 'file:line'"," into log calls",[260,775,776,777,779],{},"Works with SvelteKit, Hono (via vite-node), and any Vite-powered setup. Nuxt users get these features via the ",[264,778,319],{}," module options.",{"title":781,"searchDepth":782,"depth":782,"links":783},"",2,[784,785,786,787],{"id":278,"depth":782,"text":36},{"id":610,"depth":782,"text":611},{"id":661,"depth":782,"text":662},{"id":728,"depth":782,"text":126},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.","md",null,{},{"title":36,"icon":39},{"title":255,"description":788},"hy1IJ_toIAYulm6_18z8WSweMoVQPU5f0SsGbF8bYKc",[796,798],{"title":25,"path":26,"stem":27,"description":797,"icon":28,"children":-1},"AI-assisted code review and evlog adoption using Agent Skills. Let AI review your logging patterns and guide migration to wide events.",{"title":41,"path":42,"stem":43,"description":799,"icon":44,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",1773605724255]