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