[{"data":1,"prerenderedAt":835},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-overview":258,"-frameworks-overview-surround":830},[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":823,"extension":824,"links":825,"meta":826,"navigation":827,"path":37,"seo":828,"stem":38,"__hash__":829},"docs\u002F2.frameworks\u002F00.overview.md","Framework Integrations",{"type":262,"value":263,"toc":815},"minimark",[264,280,284,635,639,695,699,738,761,764,774,809],[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,443,462,484,504,527,550,570,594,613],"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,426,431,434,441],{},[315,423,424],{},[318,425,91],{"href":92},[315,427,428],{},[269,429,430],{},"evlog\u002Freact-router",[315,432,433],{},"Middleware",[315,435,436,376,439],{},[269,437,438],{},"context.get(loggerContext)",[269,440,354],{},[315,442,335],{},[291,444,445,449,454,456,460],{},[315,446,447],{},[318,448,66],{"href":67},[315,450,451],{},[269,452,453],{},"evlog\u002Fnestjs",[315,455,327],{},[315,457,458],{},[269,459,354],{},[315,461,335],{},[291,463,464,468,473,475,482],{},[315,465,466],{},[318,467,71],{"href":72},[315,469,470],{},[269,471,472],{},"evlog\u002Fexpress",[315,474,433],{},[315,476,477,376,480],{},[269,478,479],{},"req.log",[269,481,354],{},[315,483,335],{},[291,485,486,490,495,497,502],{},[315,487,488],{},[318,489,76],{"href":77},[315,491,492],{},[269,493,494],{},"evlog\u002Fhono",[315,496,433],{},[315,498,499],{},[269,500,501],{},"c.get('log')",[315,503,335],{},[291,505,506,510,515,518,525],{},[315,507,508],{},[318,509,81],{"href":82},[315,511,512],{},[269,513,514],{},"evlog\u002Ffastify",[315,516,517],{},"Plugin",[315,519,520,376,523],{},[269,521,522],{},"request.log",[269,524,354],{},[315,526,335],{},[291,528,529,533,538,540,548],{},[315,530,531],{},[318,532,86],{"href":87},[315,534,535],{},[269,536,537],{},"evlog\u002Felysia",[315,539,517],{},[315,541,542,545,546],{},[269,543,544],{},"log"," (context) \u002F ",[269,547,354],{},[315,549,335],{},[291,551,552,556,561,563,568],{},[315,553,554],{},[318,555,96],{"href":97},[315,557,558],{},[269,559,560],{},"evlog\u002Fworkers",[315,562,349],{},[315,564,565],{},[269,566,567],{},"createWorkersLogger()",[315,569,335],{},[291,571,572,576,581,584,592],{},[315,573,574],{},[318,575,101],{"href":102},[315,577,578],{},[269,579,580],{},"evlog",[315,582,583],{},"Manual",[315,585,586,376,589],{},[269,587,588],{},"createLogger()",[269,590,591],{},"createRequestLogger()",[315,593,335],{},[291,595,596,600,604,606,610],{},[315,597,598],{},[318,599,106],{"href":107},[315,601,602],{},[269,603,580],{},[315,605,583],{},[315,607,608],{},[269,609,591],{},[315,611,612],{},"Guide",[291,614,615,619,624,627,632],{},[315,616,617],{},[318,618,241],{"href":112},[315,620,621],{},[269,622,623],{},"evlog\u002Ftoolkit",[315,625,626],{},"Build your own",[315,628,629],{},[269,630,631],{},"createMiddlewareLogger()",[315,633,634],{},"Beta",[281,636,638],{"id":637},"full-stack-frameworks","Full-Stack Frameworks",[640,641,642,658,668,674,677,680,689],"card-group",{},[643,644,646,647,272,650,653,654,657],"card",{"color":645,"icon":44,"title":41,"to":42},"neutral","Auto-imported ",[269,648,649],{},"useLogger",[269,651,652],{},"createError",", and ",[269,655,656],{},"parseError",". Zero config.",[643,659,660,663,664,667],{"color":645,"icon":49,"title":46,"to":47},[269,661,662],{},"createEvlog()"," factory with ",[269,665,666],{},"withEvlog()"," handler wrapper and client provider.",[643,669,670,671,673],{"color":645,"icon":54,"title":51,"to":52},"Handle and handleError hooks with request-scoped logger on ",[269,672,375],{},".",[643,675,676],{"color":645,"icon":59,"title":56,"to":57},"Module for both Nitro v2 and v3 with plugin-based drain and enrichment hooks.",[643,678,679],{"color":645,"icon":64,"title":61,"to":62},"Uses Nitro v3 module with async context for seamless logging in server functions.",[643,681,682,683,685,686,688],{"color":645,"icon":94,"title":91,"to":92},"Middleware with ",[269,684,438],{}," and ",[269,687,354],{}," for loaders and services.",[643,690,691,694],{"color":645,"icon":69,"title":66,"to":67},[269,692,693],{},"EvlogModule.forRoot()"," with global middleware, exception filter, and async config.",[281,696,698],{"id":697},"server-frameworks","Server Frameworks",[640,700,701,706,715,721,729,732,735],{},[643,702,682,703,705],{"color":645,"icon":74,"title":71,"to":72},[269,704,479],{}," and 4-argument error handler.",[643,707,708,709,711,712,673],{"color":645,"icon":79,"title":76,"to":77},"Middleware with typed ",[269,710,501],{}," via ",[269,713,714],{},"EvlogVariables",[643,716,717,718,720],{"color":645,"icon":84,"title":81,"to":82},"Plugin with ",[269,719,522],{}," that shadows Fastify's built-in pino logger.",[643,722,717,723,725,726,673],{"color":645,"icon":89,"title":86,"to":87},[269,724,544],{}," in route context via Elysia's ",[269,727,728],{},"derive",[643,730,731],{"color":645,"icon":99,"title":96,"to":97},"Factory for creating request-scoped loggers with Cloudflare-specific context.",[643,733,734],{"color":645,"icon":104,"title":101,"to":102},"For scripts, CLI tools, queues, and any TypeScript process.",[643,736,737],{"color":645,"icon":114,"title":111,"to":112},"Build your own middleware with the evlog toolkit API.",[739,740,742,743,272,746,272,749,272,752,272,755,653,758,673],"callout",{"color":741,"icon":13},"info","All frameworks support the same features: ",[318,744,745],{"href":127},"wide events",[318,747,748],{"href":142},"structured errors",[318,750,751],{"href":180},"drain adapters",[318,753,754],{"href":234},"enrichers",[318,756,757],{"href":147},"sampling",[318,759,760],{"href":137},"AI SDK integration",[281,762,131],{"id":763},"vite-plugin",[265,765,766,767,773],{},"For any Vite-based project, the ",[318,768,769,772],{"href":132},[269,770,771],{},"evlog\u002Fvite"," plugin"," adds build-time optimizations:",[775,776,777,789,799],"ul",{},[778,779,780,784,785,788],"li",{},[781,782,783],"strong",{},"Auto-initialization"," — no ",[269,786,787],{},"initLogger()"," call needed",[778,790,791,794,795,798],{},[781,792,793],{},"Debug stripping"," — ",[269,796,797],{},"log.debug()"," removed from production builds",[778,800,801,804,805,808],{},[781,802,803],{},"Source location"," — inject ",[269,806,807],{},"__source: 'file:line'"," into log calls",[265,810,811,812,814],{},"Works with SvelteKit, Hono (via vite-node), and any Vite-powered setup. Nuxt users get these features via the ",[269,813,324],{}," module options.",{"title":816,"searchDepth":817,"depth":817,"links":818},"",2,[819,820,821,822],{"id":283,"depth":817,"text":36},{"id":637,"depth":817,"text":638},{"id":697,"depth":817,"text":698},{"id":763,"depth":817,"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":823},"Mnrh5NbGHmOhD9cgy817Q5B0x5yMuss1pDbUYUpU59c",[831,833],{"title":25,"path":26,"stem":27,"description":832,"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":834,"icon":44,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",1774093161430]