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