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