[{"data":1,"prerenderedAt":717},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-overview":228,"-frameworks-overview-surround":712},[4,30,110,149,198,214],{"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,139,144],{"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},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":131,"path":132,"stem":133,"icon":134},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":136,"path":137,"stem":138,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":140,"path":141,"stem":142,"icon":143},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":145,"path":146,"stem":147,"icon":148},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":150,"path":151,"stem":152,"children":153,"page":29},"Adapters","\u002Fadapters","4.adapters",[154,158,163,168,173,178,183,188,193],{"title":36,"path":155,"stem":156,"icon":157},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":159,"path":160,"stem":161,"icon":162},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":164,"path":165,"stem":166,"icon":167},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":169,"path":170,"stem":171,"icon":172},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":174,"path":175,"stem":176,"icon":177},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":179,"path":180,"stem":181,"icon":182},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":184,"path":185,"stem":186,"icon":187},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F7.custom","i-lucide-code",{"title":189,"path":190,"stem":191,"icon":192},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F8.pipeline","i-lucide-workflow",{"title":194,"path":195,"stem":196,"icon":197},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F9.browser","i-lucide-globe",{"title":199,"path":200,"stem":201,"children":202,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[203,206,210],{"title":36,"path":204,"stem":205,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":207,"path":208,"stem":209,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":211,"path":212,"stem":213,"icon":187},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":215,"path":216,"stem":217,"children":218,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[219,223],{"title":36,"path":220,"stem":221,"icon":222},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":224,"path":225,"stem":226,"icon":227},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":229,"title":230,"body":231,"description":705,"extension":706,"links":707,"meta":708,"navigation":709,"path":37,"seo":710,"stem":38,"__hash__":711},"docs\u002F2.frameworks\u002F00.overview.md","Framework Integrations",{"type":232,"value":233,"toc":698},"minimark",[234,250,254,583,587,634,638,678],[235,236,237,238,242,243,242,246,249],"p",{},"evlog provides native integrations for every major TypeScript framework. The same core API — ",[239,240,241],"code",{},"log.set()",", ",[239,244,245],{},"createError()",[239,247,248],{},"parseError()"," — works identically everywhere. Only the setup differs.",[251,252,36],"h2",{"id":253},"overview",[255,256,257,279],"table",{},[258,259,260],"thead",{},[261,262,263,267,270,273,276],"tr",{},[264,265,266],"th",{},"Framework",[264,268,269],{},"Import",[264,271,272],{},"Type",[264,274,275],{},"Logger Access",[264,277,278],{},"Status",[280,281,282,306,327,351,370,390,409,432,452,475,498,518,542,561],"tbody",{},[261,283,284,290,295,298,303],{},[285,286,287],"td",{},[288,289,41],"a",{"href":42},[285,291,292],{},[239,293,294],{},"evlog\u002Fnuxt",[285,296,297],{},"Module",[285,299,300],{},[239,301,302],{},"useLogger(event)",[285,304,305],{},"Stable",[261,307,308,312,317,320,325],{},[285,309,310],{},[288,311,46],{"href":47},[285,313,314],{},[239,315,316],{},"evlog\u002Fnext",[285,318,319],{},"Factory",[285,321,322],{},[239,323,324],{},"useLogger()",[285,326,305],{},[261,328,329,333,338,341,349],{},[285,330,331],{},[288,332,51],{"href":52},[285,334,335],{},[239,336,337],{},"evlog\u002Fsveltekit",[285,339,340],{},"Hooks",[285,342,343,346,347],{},[239,344,345],{},"event.locals.log"," \u002F ",[239,348,324],{},[285,350,305],{},[261,352,353,357,362,364,368],{},[285,354,355],{},[288,356,56],{"href":57},[285,358,359],{},[239,360,361],{},"evlog\u002Fnitro",[285,363,297],{},[285,365,366],{},[239,367,302],{},[285,369,305],{},[261,371,372,376,381,383,388],{},[285,373,374],{},[288,375,61],{"href":62},[285,377,378],{},[239,379,380],{},"evlog\u002Fnitro\u002Fv3",[285,382,297],{},[285,384,385],{},[239,386,387],{},"useRequest().context.log",[285,389,305],{},[261,391,392,396,401,403,407],{},[285,393,394],{},[288,395,66],{"href":67},[285,397,398],{},[239,399,400],{},"evlog\u002Fnestjs",[285,402,297],{},[285,404,405],{},[239,406,324],{},[285,408,305],{},[261,410,411,415,420,423,430],{},[285,412,413],{},[288,414,71],{"href":72},[285,416,417],{},[239,418,419],{},"evlog\u002Fexpress",[285,421,422],{},"Middleware",[285,424,425,346,428],{},[239,426,427],{},"req.log",[239,429,324],{},[285,431,305],{},[261,433,434,438,443,445,450],{},[285,435,436],{},[288,437,76],{"href":77},[285,439,440],{},[239,441,442],{},"evlog\u002Fhono",[285,444,422],{},[285,446,447],{},[239,448,449],{},"c.get('log')",[285,451,305],{},[261,453,454,458,463,466,473],{},[285,455,456],{},[288,457,81],{"href":82},[285,459,460],{},[239,461,462],{},"evlog\u002Ffastify",[285,464,465],{},"Plugin",[285,467,468,346,471],{},[239,469,470],{},"request.log",[239,472,324],{},[285,474,305],{},[261,476,477,481,486,488,496],{},[285,478,479],{},[288,480,86],{"href":87},[285,482,483],{},[239,484,485],{},"evlog\u002Felysia",[285,487,465],{},[285,489,490,493,494],{},[239,491,492],{},"log"," (context) \u002F ",[239,495,324],{},[285,497,305],{},[261,499,500,504,509,511,516],{},[285,501,502],{},[288,503,91],{"href":92},[285,505,506],{},[239,507,508],{},"evlog\u002Fworkers",[285,510,319],{},[285,512,513],{},[239,514,515],{},"createWorkersLogger()",[285,517,305],{},[261,519,520,524,529,532,540],{},[285,521,522],{},[288,523,96],{"href":97},[285,525,526],{},[239,527,528],{},"evlog",[285,530,531],{},"Manual",[285,533,534,346,537],{},[239,535,536],{},"createLogger()",[239,538,539],{},"createRequestLogger()",[285,541,305],{},[261,543,544,548,552,554,558],{},[285,545,546],{},[288,547,101],{"href":102},[285,549,550],{},[239,551,528],{},[285,553,531],{},[285,555,556],{},[239,557,539],{},[285,559,560],{},"Guide",[261,562,563,567,572,575,580],{},[285,564,565],{},[288,566,211],{"href":107},[285,568,569],{},[239,570,571],{},"evlog\u002Ftoolkit",[285,573,574],{},"Build your own",[285,576,577],{},[239,578,579],{},"createMiddlewareLogger()",[285,581,582],{},"Beta",[251,584,586],{"id":585},"full-stack-frameworks","Full-Stack Frameworks",[588,589,590,606,616,622,625,628],"card-group",{},[591,592,594,595,242,598,601,602,605],"card",{"color":593,"icon":44,"title":41,"to":42},"neutral","Auto-imported ",[239,596,597],{},"useLogger",[239,599,600],{},"createError",", and ",[239,603,604],{},"parseError",". Zero config.",[591,607,608,611,612,615],{"color":593,"icon":49,"title":46,"to":47},[239,609,610],{},"createEvlog()"," factory with ",[239,613,614],{},"withEvlog()"," handler wrapper and client provider.",[591,617,618,619,621],{"color":593,"icon":54,"title":51,"to":52},"Handle and handleError hooks with request-scoped logger on ",[239,620,345],{},".",[591,623,624],{"color":593,"icon":59,"title":56,"to":57},"Module for both Nitro v2 and v3 with plugin-based drain and enrichment hooks.",[591,626,627],{"color":593,"icon":64,"title":61,"to":62},"Uses Nitro v3 module with async context for seamless logging in server functions.",[591,629,630,633],{"color":593,"icon":69,"title":66,"to":67},[239,631,632],{},"EvlogModule.forRoot()"," with global middleware, exception filter, and async config.",[251,635,637],{"id":636},"server-frameworks","Server Frameworks",[588,639,640,646,655,661,669,672,675],{},[591,641,642,643,645],{"color":593,"icon":74,"title":71,"to":72},"Middleware with ",[239,644,427],{}," and 4-argument error handler.",[591,647,648,649,651,652,621],{"color":593,"icon":79,"title":76,"to":77},"Middleware with typed ",[239,650,449],{}," via ",[239,653,654],{},"EvlogVariables",[591,656,657,658,660],{"color":593,"icon":84,"title":81,"to":82},"Plugin with ",[239,659,470],{}," that shadows Fastify's built-in pino logger.",[591,662,657,663,665,666,621],{"color":593,"icon":89,"title":86,"to":87},[239,664,492],{}," in route context via Elysia's ",[239,667,668],{},"derive",[591,670,671],{"color":593,"icon":94,"title":91,"to":92},"Factory for creating request-scoped loggers with Cloudflare-specific context.",[591,673,674],{"color":593,"icon":99,"title":96,"to":97},"For scripts, CLI tools, queues, and any TypeScript process.",[591,676,677],{"color":593,"icon":109,"title":106,"to":107},"Build your own middleware with the evlog toolkit API.",[679,680,682,683,242,686,242,689,242,692,601,695,621],"callout",{"color":681,"icon":13},"info","All frameworks support the same features: ",[288,684,685],{"href":122},"wide events",[288,687,688],{"href":127},"structured errors",[288,690,691],{"href":155},"drain adapters",[288,693,694],{"href":204},"enrichers",[288,696,697],{"href":132},"sampling",{"title":699,"searchDepth":700,"depth":700,"links":701},"",2,[702,703,704],{"id":253,"depth":700,"text":36},{"id":585,"depth":700,"text":586},{"id":636,"depth":700,"text":637},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.","md",null,{},{"title":36,"icon":39},{"title":230,"description":705},"_6M2cJIEtl6R8uAp45bjxx1fH6M9b7dW3ah_TI0JIe4",[713,715],{"title":25,"path":26,"stem":27,"description":714,"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":716,"icon":44,"children":-1},"Using evlog with Nuxt — automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",1773428024925]