[{"data":1,"prerenderedAt":1299},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-overview":444,"-integrate-frameworks-overview-surround":1294},[4,30,80,245,358,413],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,353],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"icon":357},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":359,"path":360,"stem":361,"children":362,"page":29},"Extend","\u002Fextend","5.extend",[363,367,372,377,382,386,390,394,398,403,408],{"title":36,"path":364,"stem":365,"icon":366},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":368,"path":369,"stem":370,"icon":371},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":373,"path":374,"stem":375,"icon":376},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":378,"path":379,"stem":380,"icon":381},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":383,"stem":384,"icon":385},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":387,"path":388,"stem":389,"icon":366},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":391,"path":392,"stem":393,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":395,"path":396,"stem":397,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":399,"path":400,"stem":401,"icon":402},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":404,"path":405,"stem":406,"icon":407},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":409,"path":410,"stem":411,"icon":412},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":414,"path":415,"stem":416,"children":417,"page":29},"Reference","\u002Freference","6.reference",[418,423,426,431,435,440],{"title":419,"path":420,"stem":421,"icon":422},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":424,"stem":425,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":427,"path":428,"stem":429,"icon":430},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":432,"path":433,"stem":434,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":436,"path":437,"stem":438,"icon":439},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":441,"path":442,"stem":443,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":445,"title":446,"body":447,"description":1287,"extension":1288,"links":1289,"meta":1290,"navigation":1291,"path":163,"seo":1292,"stem":164,"__hash__":1293},"docs\u002F3.integrate\u002Fframeworks\u002F00.overview.md","Framework Integrations",{"type":448,"value":449,"toc":1274},"minimark",[450,466,480,484,895,899,911,915,978,982,1067,1080,1084,1137,1141,1200,1221,1224,1234,1268],[451,452,453,454,458,459,458,462,465],"p",{},"evlog provides native integrations for every major TypeScript framework. The same core API (",[455,456,457],"code",{},"log.set()",", ",[455,460,461],{},"createError()",[455,463,464],{},"parseError()",") works identically everywhere. Only the setup differs.",[467,468,471,472,476,477,479],"callout",{"color":469,"icon":470},"neutral","i-lucide-globe","No HTTP framework? Use ",[473,474,475],"a",{"href":228},"Standalone TypeScript"," for scripts, libraries, and workers, and ",[473,478,222],{"href":223}," on the edge.",[481,482,36],"h2",{"id":483},"overview",[485,486,487,509],"table",{},[488,489,490],"thead",{},[491,492,493,497,500,503,506],"tr",{},[494,495,496],"th",{},"Framework",[494,498,499],{},"Import",[494,501,502],{},"Type",[494,504,505],{},"Logger Access",[494,507,508],{},"Status",[510,511,512,535,556,580,599,619,637,659,678,700,720,743,766,789,809,834,854,872],"tbody",{},[491,513,514,519,524,527,532],{},[515,516,517],"td",{},[473,518,167],{"href":168},[515,520,521],{},[455,522,523],{},"evlog\u002Fnuxt",[515,525,526],{},"Module",[515,528,529],{},[455,530,531],{},"useLogger(event)",[515,533,534],{},"Stable",[491,536,537,541,546,549,554],{},[515,538,539],{},[473,540,172],{"href":173},[515,542,543],{},[455,544,545],{},"evlog\u002Fnext",[515,547,548],{},"Factory",[515,550,551],{},[455,552,553],{},"useLogger()",[515,555,534],{},[491,557,558,562,567,570,578],{},[515,559,560],{},[473,561,177],{"href":178},[515,563,564],{},[455,565,566],{},"evlog\u002Fsveltekit",[515,568,569],{},"Hooks",[515,571,572,575,576],{},[455,573,574],{},"event.locals.log"," \u002F ",[455,577,553],{},[515,579,534],{},[491,581,582,586,591,593,597],{},[515,583,584],{},[473,585,182],{"href":183},[515,587,588],{},[455,589,590],{},"evlog\u002Fnitro",[515,592,526],{},[515,594,595],{},[455,596,531],{},[515,598,534],{},[491,600,601,605,610,612,617],{},[515,602,603],{},[473,604,187],{"href":188},[515,606,607],{},[455,608,609],{},"evlog\u002Fnitro\u002Fv3",[515,611,526],{},[515,613,614],{},[455,615,616],{},"useRequest().context.log",[515,618,534],{},[491,620,621,626,630,632,635],{},[515,622,623],{},[473,624,625],{"href":188},"TanStack Router",[515,627,628],{},[455,629,609],{},[515,631,526],{},[515,633,634],{},"Via TanStack Start (uses Nitro v3)",[515,636,534],{},[491,638,639,643,648,650,657],{},[515,640,641],{},[473,642,217],{"href":218},[515,644,645],{},[455,646,647],{},"evlog\u002Freact-router",[515,649,303],{},[515,651,652,575,655],{},[455,653,654],{},"context.get(loggerContext)",[455,656,553],{},[515,658,534],{},[491,660,661,665,670,672,676],{},[515,662,663],{},[473,664,192],{"href":193},[515,666,667],{},[455,668,669],{},"evlog\u002Fnestjs",[515,671,526],{},[515,673,674],{},[455,675,553],{},[515,677,534],{},[491,679,680,684,689,691,698],{},[515,681,682],{},[473,683,197],{"href":198},[515,685,686],{},[455,687,688],{},"evlog\u002Fexpress",[515,690,303],{},[515,692,693,575,696],{},[455,694,695],{},"req.log",[455,697,553],{},[515,699,534],{},[491,701,702,706,711,713,718],{},[515,703,704],{},[473,705,202],{"href":203},[515,707,708],{},[455,709,710],{},"evlog\u002Fhono",[515,712,303],{},[515,714,715],{},[455,716,717],{},"c.get('log')",[515,719,534],{},[491,721,722,726,731,734,741],{},[515,723,724],{},[473,725,207],{"href":208},[515,727,728],{},[455,729,730],{},"evlog\u002Ffastify",[515,732,733],{},"Plugin",[515,735,736,575,739],{},[455,737,738],{},"request.log",[455,740,553],{},[515,742,534],{},[491,744,745,749,754,756,764],{},[515,746,747],{},[473,748,212],{"href":213},[515,750,751],{},[455,752,753],{},"evlog\u002Felysia",[515,755,733],{},[515,757,758,761,762],{},[455,759,760],{},"log"," (context) \u002F ",[455,763,553],{},[515,765,534],{},[491,767,768,772,777,780,787],{},[515,769,770],{},[473,771,236],{"href":237},[515,773,774],{},[455,775,776],{},"evlog\u002Forpc",[515,778,779],{},"Handler wrapper + middleware",[515,781,782,575,785],{},[455,783,784],{},"context.log",[455,786,553],{},[515,788,534],{},[491,790,791,795,800,802,807],{},[515,792,793],{},[473,794,222],{"href":223},[515,796,797],{},[455,798,799],{},"evlog\u002Fworkers",[515,801,548],{},[515,803,804],{},[455,805,806],{},"createWorkersLogger()",[515,808,534],{},[491,810,811,815,820,823,831],{},[515,812,813],{},[473,814,241],{"href":242},[515,816,817],{},[455,818,819],{},"evlog",[515,821,822],{},"Manual",[515,824,825,575,828],{},[455,826,827],{},"createLogger()",[455,829,830],{},"createRequestLogger()",[515,832,833],{},"Guide",[491,835,836,840,844,846,852],{},[515,837,838],{},[473,839,227],{"href":228},[515,841,842],{},[455,843,819],{},[515,845,822],{},[515,847,848,575,850],{},[455,849,827],{},[455,851,830],{},[515,853,534],{},[491,855,856,860,864,866,870],{},[515,857,858],{},[473,859,231],{"href":232},[515,861,862],{},[455,863,819],{},[515,865,822],{},[515,867,868],{},[455,869,830],{},[515,871,833],{},[491,873,874,879,884,887,892],{},[515,875,876],{},[473,877,878],{"href":374},"Custom",[515,880,881],{},[455,882,883],{},"evlog\u002Ftoolkit",[515,885,886],{},"Build your own",[515,888,889],{},[455,890,891],{},"createMiddlewareLogger()",[515,893,894],{},"Beta",[481,896,898],{"id":897},"api-cheat-sheet","API cheat sheet",[451,900,901,902,906,907,910],{},"Two things differ per framework: how you ",[903,904,905],"strong",{},"bootstrap"," evlog, and how you ",[903,908,909],{},"access the request logger",".",[912,913,914],"h3",{"id":905},"Bootstrap",[485,916,917,926],{},[488,918,919],{},[491,920,921,924],{},[494,922,923],{},"Pattern",[494,925,158],{},[510,927,928,939,949,958,966],{},[491,929,930,936],{},[515,931,932,935],{},[455,933,934],{},"evlog(options)"," middleware \u002F plugin",[515,937,938],{},"Hono, Express, Fastify, Elysia, SvelteKit, React Router",[491,940,941,947],{},[515,942,943,946],{},[455,944,945],{},"createEvlog(options)"," factory",[515,948,172],{},[491,950,951,956],{},[515,952,953],{},[455,954,955],{},"EvlogModule.forRoot()",[515,957,192],{},[491,959,960,963],{},[515,961,962],{},"Module default export",[515,964,965],{},"Nuxt, Nitro v2\u002Fv3",[491,967,968,971],{},[515,969,970],{},"Manual factory",[515,972,973,974,977],{},"Cloudflare Workers (",[455,975,976],{},"createWorkersLogger","), Standalone, AWS Lambda, Astro",[912,979,981],{"id":980},"logger-access","Logger access",[485,983,984,992],{},[488,985,986],{},[491,987,988,990],{},[494,989,923],{},[494,991,158],{},[510,993,994,1003,1012,1024,1032,1040,1048,1056],{},[491,995,996,1000],{},[515,997,998],{},[455,999,531],{},[515,1001,1002],{},"Nuxt, Nitro",[491,1004,1005,1009],{},[515,1006,1007],{},[455,1008,553],{},[515,1010,1011],{},"Next.js, NestJS, Express, Fastify, Elysia, SvelteKit, React Router",[491,1013,1014,1018],{},[515,1015,1016],{},[455,1017,717],{},[515,1019,1020,1021,1023],{},"Hono — no ",[455,1022,553],{}," export",[491,1025,1026,1030],{},[515,1027,1028],{},[455,1029,695],{},[515,1031,197],{},[491,1033,1034,1038],{},[515,1035,1036],{},[455,1037,738],{},[515,1039,207],{},[491,1041,1042,1046],{},[515,1043,1044],{},[455,1045,574],{},[515,1047,177],{},[491,1049,1050,1054],{},[515,1051,1052],{},[455,1053,654],{},[515,1055,217],{},[491,1057,1058,1064],{},[515,1059,1060,575,1062],{},[455,1061,830],{},[455,1063,827],{},[515,1065,1066],{},"Standalone, Workers, manual setups",[467,1068,1070,1071,1073,1074,1076,1077,910],{"color":1069,"icon":13},"info","Hono intentionally has no ",[455,1072,553],{}," — use ",[455,1075,717],{}," inside handlers. See ",[473,1078,1079],{"href":203},"Hono integration",[481,1081,1083],{"id":1082},"full-stack-frameworks","Full-Stack Frameworks",[1085,1086,1087,1102,1112,1117,1120,1123,1132],"card-group",{},[1088,1089,1090,1091,458,1094,1097,1098,1101],"card",{"color":469,"icon":170,"title":167,"to":168},"Auto-imported ",[455,1092,1093],{},"useLogger",[455,1095,1096],{},"createError",", and ",[455,1099,1100],{},"parseError",". Zero config.",[1088,1103,1104,1107,1108,1111],{"color":469,"icon":175,"title":172,"to":173},[455,1105,1106],{},"createEvlog()"," factory with ",[455,1109,1110],{},"withEvlog()"," handler wrapper and client provider.",[1088,1113,1114,1115,910],{"color":469,"icon":180,"title":177,"to":178},"Handle and handleError hooks with request-scoped logger on ",[455,1116,574],{},[1088,1118,1119],{"color":469,"icon":185,"title":182,"to":183},"Module for both Nitro v2 and v3 with plugin-based drain and enrichment hooks.",[1088,1121,1122],{"color":469,"icon":190,"title":187,"to":188},"Uses Nitro v3 module with async context for seamless logging in server functions. Also covers TanStack Router (full-stack mode).",[1088,1124,1125,1126,1128,1129,1131],{"color":469,"icon":220,"title":217,"to":218},"Middleware with ",[455,1127,654],{}," and ",[455,1130,553],{}," for loaders and services.",[1088,1133,1134,1136],{"color":469,"icon":195,"title":192,"to":193},[455,1135,955],{}," with global middleware, exception filter, and async config.",[481,1138,1140],{"id":1139},"server-frameworks","Server Frameworks",[1085,1142,1143,1148,1157,1163,1171,1180,1183,1193,1196],{},[1088,1144,1125,1145,1147],{"color":469,"icon":200,"title":197,"to":198},[455,1146,695],{}," and 4-argument error handler.",[1088,1149,1150,1151,1153,1154,910],{"color":469,"icon":205,"title":202,"to":203},"Middleware with typed ",[455,1152,717],{}," via ",[455,1155,1156],{},"EvlogVariables",[1088,1158,1159,1160,1162],{"color":469,"icon":210,"title":207,"to":208},"Plugin with ",[455,1161,738],{}," that shadows Fastify's built-in pino logger.",[1088,1164,1159,1165,1167,1168,910],{"color":469,"icon":215,"title":212,"to":213},[455,1166,760],{}," in route context via Elysia's ",[455,1169,1170],{},"derive",[1088,1172,1173,1174,1176,1177,910],{"color":469,"icon":239,"title":236,"to":237},"Handler wrapper + procedure middleware exposing ",[455,1175,784],{}," and per-procedure ",[455,1178,1179],{},"operation",[1088,1181,1182],{"color":469,"icon":225,"title":222,"to":223},"Factory for creating request-scoped loggers with Cloudflare-specific context.",[1088,1184,1185,1188,1189,1192],{"color":469,"icon":244,"title":241,"to":242},[455,1186,1187],{},"initLogger"," once per runtime; ",[455,1190,1191],{},"createLogger"," per invocation (SQS, events, HTTP API).",[1088,1194,1195],{"color":469,"icon":74,"title":227,"to":228},"For scripts, CLI tools, queues, and any TypeScript process.",[1088,1197,1199],{"color":469,"icon":376,"title":1198,"to":374},"Custom Integration","Build your own middleware with the evlog toolkit API.",[467,1201,1202,1203,458,1206,458,1209,458,1212,458,1215,1097,1218,910],{"color":1069,"icon":13},"All frameworks support the same features: ",[473,1204,1205],{"href":47},"wide events",[473,1207,1208],{"href":52},"structured errors",[473,1210,1211],{"href":95},"drain adapters",[473,1213,1214],{"href":350},"enrichers",[473,1216,1217],{"href":62},"sampling",[473,1219,1220],{"href":266},"AI SDK integration",[481,1222,427],{"id":1223},"vite-plugin",[451,1225,1226,1227,1233],{},"For any Vite-based project, the ",[473,1228,1229,1232],{"href":428},[455,1230,1231],{},"evlog\u002Fvite"," plugin"," adds build-time optimizations:",[1235,1236,1237,1248,1258],"ul",{},[1238,1239,1240,1243,1244,1247],"li",{},[903,1241,1242],{},"Auto-initialization",": no ",[455,1245,1246],{},"initLogger()"," call needed",[1238,1249,1250,1253,1254,1257],{},[903,1251,1252],{},"Debug stripping",": ",[455,1255,1256],{},"log.debug()"," removed from production builds",[1238,1259,1260,1263,1264,1267],{},[903,1261,1262],{},"Source location",": inject ",[455,1265,1266],{},"__source: 'file:line'"," into log calls",[451,1269,1270,1271,1273],{},"Works with SvelteKit, Hono (via vite-node), and any Vite-powered setup. Nuxt users get these features via the ",[455,1272,523],{}," module options.",{"title":1275,"searchDepth":1276,"depth":1276,"links":1277},"",2,[1278,1279,1284,1285,1286],{"id":483,"depth":1276,"text":36},{"id":897,"depth":1276,"text":898,"children":1280},[1281,1283],{"id":905,"depth":1282,"text":914},3,{"id":980,"depth":1282,"text":981},{"id":1082,"depth":1276,"text":1083},{"id":1139,"depth":1276,"text":1140},{"id":1223,"depth":1276,"text":427},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.","md",null,{},{"title":36,"icon":165},{"title":446,"description":1287},"PMdFOIsDAjmoFgUgxi9wkd89AAUVrvWI8Ja6tuBPzT4",[1295,1297],{"title":153,"path":154,"stem":155,"description":1296,"icon":156,"children":-1},"Store wide events in an in-memory ring buffer. Works in any runtime — including Cloudflare Workers (workerd) — where the file system is unavailable.",{"title":167,"path":168,"stem":169,"description":1298,"icon":170,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",1782925716358]