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