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