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