[{"data":1,"prerenderedAt":1294},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-overview":439,"-integrate-frameworks-overview-surround":1289},[4,30,80,245,353,408],{"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],{"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,"children":357,"page":29},"Extend","\u002Fextend","5.extend",[358,362,367,372,377,381,385,389,393,398,403],{"title":36,"path":359,"stem":360,"icon":361},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":363,"path":364,"stem":365,"icon":366},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":368,"path":369,"stem":370,"icon":371},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":373,"path":374,"stem":375,"icon":376},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":378,"stem":379,"icon":380},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":382,"path":383,"stem":384,"icon":361},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":386,"path":387,"stem":388,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":390,"path":391,"stem":392,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":394,"path":395,"stem":396,"icon":397},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":399,"path":400,"stem":401,"icon":402},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":404,"path":405,"stem":406,"icon":407},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":409,"path":410,"stem":411,"children":412,"page":29},"Reference","\u002Freference","6.reference",[413,418,421,426,430,435],{"title":414,"path":415,"stem":416,"icon":417},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":419,"stem":420,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":422,"path":423,"stem":424,"icon":425},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":427,"path":428,"stem":429,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":431,"path":432,"stem":433,"icon":434},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":436,"path":437,"stem":438,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":440,"title":441,"body":442,"description":1282,"extension":1283,"links":1284,"meta":1285,"navigation":1286,"path":163,"seo":1287,"stem":164,"__hash__":1288},"docs\u002F3.integrate\u002Fframeworks\u002F00.overview.md","Framework Integrations",{"type":443,"value":444,"toc":1269},"minimark",[445,461,475,479,890,894,906,910,973,977,1062,1075,1079,1132,1136,1195,1216,1219,1229,1263],[446,447,448,449,453,454,453,457,460],"p",{},"evlog provides native integrations for every major TypeScript framework. The same core API (",[450,451,452],"code",{},"log.set()",", ",[450,455,456],{},"createError()",[450,458,459],{},"parseError()",") works identically everywhere. Only the setup differs.",[462,463,466,467,471,472,474],"callout",{"color":464,"icon":465},"neutral","i-lucide-globe","No HTTP framework? Use ",[468,469,470],"a",{"href":228},"Standalone TypeScript"," for scripts, libraries, and workers, and ",[468,473,222],{"href":223}," on the edge.",[476,477,36],"h2",{"id":478},"overview",[480,481,482,504],"table",{},[483,484,485],"thead",{},[486,487,488,492,495,498,501],"tr",{},[489,490,491],"th",{},"Framework",[489,493,494],{},"Import",[489,496,497],{},"Type",[489,499,500],{},"Logger Access",[489,502,503],{},"Status",[505,506,507,530,551,575,594,614,632,654,673,695,715,738,761,784,804,829,849,867],"tbody",{},[486,508,509,514,519,522,527],{},[510,511,512],"td",{},[468,513,167],{"href":168},[510,515,516],{},[450,517,518],{},"evlog\u002Fnuxt",[510,520,521],{},"Module",[510,523,524],{},[450,525,526],{},"useLogger(event)",[510,528,529],{},"Stable",[486,531,532,536,541,544,549],{},[510,533,534],{},[468,535,172],{"href":173},[510,537,538],{},[450,539,540],{},"evlog\u002Fnext",[510,542,543],{},"Factory",[510,545,546],{},[450,547,548],{},"useLogger()",[510,550,529],{},[486,552,553,557,562,565,573],{},[510,554,555],{},[468,556,177],{"href":178},[510,558,559],{},[450,560,561],{},"evlog\u002Fsveltekit",[510,563,564],{},"Hooks",[510,566,567,570,571],{},[450,568,569],{},"event.locals.log"," \u002F ",[450,572,548],{},[510,574,529],{},[486,576,577,581,586,588,592],{},[510,578,579],{},[468,580,182],{"href":183},[510,582,583],{},[450,584,585],{},"evlog\u002Fnitro",[510,587,521],{},[510,589,590],{},[450,591,526],{},[510,593,529],{},[486,595,596,600,605,607,612],{},[510,597,598],{},[468,599,187],{"href":188},[510,601,602],{},[450,603,604],{},"evlog\u002Fnitro\u002Fv3",[510,606,521],{},[510,608,609],{},[450,610,611],{},"useRequest().context.log",[510,613,529],{},[486,615,616,621,625,627,630],{},[510,617,618],{},[468,619,620],{"href":188},"TanStack Router",[510,622,623],{},[450,624,604],{},[510,626,521],{},[510,628,629],{},"Via TanStack Start (uses Nitro v3)",[510,631,529],{},[486,633,634,638,643,645,652],{},[510,635,636],{},[468,637,217],{"href":218},[510,639,640],{},[450,641,642],{},"evlog\u002Freact-router",[510,644,303],{},[510,646,647,570,650],{},[450,648,649],{},"context.get(loggerContext)",[450,651,548],{},[510,653,529],{},[486,655,656,660,665,667,671],{},[510,657,658],{},[468,659,192],{"href":193},[510,661,662],{},[450,663,664],{},"evlog\u002Fnestjs",[510,666,521],{},[510,668,669],{},[450,670,548],{},[510,672,529],{},[486,674,675,679,684,686,693],{},[510,676,677],{},[468,678,197],{"href":198},[510,680,681],{},[450,682,683],{},"evlog\u002Fexpress",[510,685,303],{},[510,687,688,570,691],{},[450,689,690],{},"req.log",[450,692,548],{},[510,694,529],{},[486,696,697,701,706,708,713],{},[510,698,699],{},[468,700,202],{"href":203},[510,702,703],{},[450,704,705],{},"evlog\u002Fhono",[510,707,303],{},[510,709,710],{},[450,711,712],{},"c.get('log')",[510,714,529],{},[486,716,717,721,726,729,736],{},[510,718,719],{},[468,720,207],{"href":208},[510,722,723],{},[450,724,725],{},"evlog\u002Ffastify",[510,727,728],{},"Plugin",[510,730,731,570,734],{},[450,732,733],{},"request.log",[450,735,548],{},[510,737,529],{},[486,739,740,744,749,751,759],{},[510,741,742],{},[468,743,212],{"href":213},[510,745,746],{},[450,747,748],{},"evlog\u002Felysia",[510,750,728],{},[510,752,753,756,757],{},[450,754,755],{},"log"," (context) \u002F ",[450,758,548],{},[510,760,529],{},[486,762,763,767,772,775,782],{},[510,764,765],{},[468,766,236],{"href":237},[510,768,769],{},[450,770,771],{},"evlog\u002Forpc",[510,773,774],{},"Handler wrapper + middleware",[510,776,777,570,780],{},[450,778,779],{},"context.log",[450,781,548],{},[510,783,529],{},[486,785,786,790,795,797,802],{},[510,787,788],{},[468,789,222],{"href":223},[510,791,792],{},[450,793,794],{},"evlog\u002Fworkers",[510,796,543],{},[510,798,799],{},[450,800,801],{},"createWorkersLogger()",[510,803,529],{},[486,805,806,810,815,818,826],{},[510,807,808],{},[468,809,241],{"href":242},[510,811,812],{},[450,813,814],{},"evlog",[510,816,817],{},"Manual",[510,819,820,570,823],{},[450,821,822],{},"createLogger()",[450,824,825],{},"createRequestLogger()",[510,827,828],{},"Guide",[486,830,831,835,839,841,847],{},[510,832,833],{},[468,834,227],{"href":228},[510,836,837],{},[450,838,814],{},[510,840,817],{},[510,842,843,570,845],{},[450,844,822],{},[450,846,825],{},[510,848,529],{},[486,850,851,855,859,861,865],{},[510,852,853],{},[468,854,231],{"href":232},[510,856,857],{},[450,858,814],{},[510,860,817],{},[510,862,863],{},[450,864,825],{},[510,866,828],{},[486,868,869,874,879,882,887],{},[510,870,871],{},[468,872,873],{"href":369},"Custom",[510,875,876],{},[450,877,878],{},"evlog\u002Ftoolkit",[510,880,881],{},"Build your own",[510,883,884],{},[450,885,886],{},"createMiddlewareLogger()",[510,888,889],{},"Beta",[476,891,893],{"id":892},"api-cheat-sheet","API cheat sheet",[446,895,896,897,901,902,905],{},"Two things differ per framework: how you ",[898,899,900],"strong",{},"bootstrap"," evlog, and how you ",[898,903,904],{},"access the request logger",".",[907,908,909],"h3",{"id":900},"Bootstrap",[480,911,912,921],{},[483,913,914],{},[486,915,916,919],{},[489,917,918],{},"Pattern",[489,920,158],{},[505,922,923,934,944,953,961],{},[486,924,925,931],{},[510,926,927,930],{},[450,928,929],{},"evlog(options)"," middleware \u002F plugin",[510,932,933],{},"Hono, Express, Fastify, Elysia, SvelteKit, React Router",[486,935,936,942],{},[510,937,938,941],{},[450,939,940],{},"createEvlog(options)"," factory",[510,943,172],{},[486,945,946,951],{},[510,947,948],{},[450,949,950],{},"EvlogModule.forRoot()",[510,952,192],{},[486,954,955,958],{},[510,956,957],{},"Module default export",[510,959,960],{},"Nuxt, Nitro v2\u002Fv3",[486,962,963,966],{},[510,964,965],{},"Manual factory",[510,967,968,969,972],{},"Cloudflare Workers (",[450,970,971],{},"createWorkersLogger","), Standalone, AWS Lambda, Astro",[907,974,976],{"id":975},"logger-access","Logger access",[480,978,979,987],{},[483,980,981],{},[486,982,983,985],{},[489,984,918],{},[489,986,158],{},[505,988,989,998,1007,1019,1027,1035,1043,1051],{},[486,990,991,995],{},[510,992,993],{},[450,994,526],{},[510,996,997],{},"Nuxt, Nitro",[486,999,1000,1004],{},[510,1001,1002],{},[450,1003,548],{},[510,1005,1006],{},"Next.js, NestJS, Express, Fastify, Elysia, SvelteKit, React Router",[486,1008,1009,1013],{},[510,1010,1011],{},[450,1012,712],{},[510,1014,1015,1016,1018],{},"Hono — no ",[450,1017,548],{}," export",[486,1020,1021,1025],{},[510,1022,1023],{},[450,1024,690],{},[510,1026,197],{},[486,1028,1029,1033],{},[510,1030,1031],{},[450,1032,733],{},[510,1034,207],{},[486,1036,1037,1041],{},[510,1038,1039],{},[450,1040,569],{},[510,1042,177],{},[486,1044,1045,1049],{},[510,1046,1047],{},[450,1048,649],{},[510,1050,217],{},[486,1052,1053,1059],{},[510,1054,1055,570,1057],{},[450,1056,825],{},[450,1058,822],{},[510,1060,1061],{},"Standalone, Workers, manual setups",[462,1063,1065,1066,1068,1069,1071,1072,905],{"color":1064,"icon":13},"info","Hono intentionally has no ",[450,1067,548],{}," — use ",[450,1070,712],{}," inside handlers. See ",[468,1073,1074],{"href":203},"Hono integration",[476,1076,1078],{"id":1077},"full-stack-frameworks","Full-Stack Frameworks",[1080,1081,1082,1097,1107,1112,1115,1118,1127],"card-group",{},[1083,1084,1085,1086,453,1089,1092,1093,1096],"card",{"color":464,"icon":170,"title":167,"to":168},"Auto-imported ",[450,1087,1088],{},"useLogger",[450,1090,1091],{},"createError",", and ",[450,1094,1095],{},"parseError",". Zero config.",[1083,1098,1099,1102,1103,1106],{"color":464,"icon":175,"title":172,"to":173},[450,1100,1101],{},"createEvlog()"," factory with ",[450,1104,1105],{},"withEvlog()"," handler wrapper and client provider.",[1083,1108,1109,1110,905],{"color":464,"icon":180,"title":177,"to":178},"Handle and handleError hooks with request-scoped logger on ",[450,1111,569],{},[1083,1113,1114],{"color":464,"icon":185,"title":182,"to":183},"Module for both Nitro v2 and v3 with plugin-based drain and enrichment hooks.",[1083,1116,1117],{"color":464,"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).",[1083,1119,1120,1121,1123,1124,1126],{"color":464,"icon":220,"title":217,"to":218},"Middleware with ",[450,1122,649],{}," and ",[450,1125,548],{}," for loaders and services.",[1083,1128,1129,1131],{"color":464,"icon":195,"title":192,"to":193},[450,1130,950],{}," with global middleware, exception filter, and async config.",[476,1133,1135],{"id":1134},"server-frameworks","Server Frameworks",[1080,1137,1138,1143,1152,1158,1166,1175,1178,1188,1191],{},[1083,1139,1120,1140,1142],{"color":464,"icon":200,"title":197,"to":198},[450,1141,690],{}," and 4-argument error handler.",[1083,1144,1145,1146,1148,1149,905],{"color":464,"icon":205,"title":202,"to":203},"Middleware with typed ",[450,1147,712],{}," via ",[450,1150,1151],{},"EvlogVariables",[1083,1153,1154,1155,1157],{"color":464,"icon":210,"title":207,"to":208},"Plugin with ",[450,1156,733],{}," that shadows Fastify's built-in pino logger.",[1083,1159,1154,1160,1162,1163,905],{"color":464,"icon":215,"title":212,"to":213},[450,1161,755],{}," in route context via Elysia's ",[450,1164,1165],{},"derive",[1083,1167,1168,1169,1171,1172,905],{"color":464,"icon":239,"title":236,"to":237},"Handler wrapper + procedure middleware exposing ",[450,1170,779],{}," and per-procedure ",[450,1173,1174],{},"operation",[1083,1176,1177],{"color":464,"icon":225,"title":222,"to":223},"Factory for creating request-scoped loggers with Cloudflare-specific context.",[1083,1179,1180,1183,1184,1187],{"color":464,"icon":244,"title":241,"to":242},[450,1181,1182],{},"initLogger"," once per runtime; ",[450,1185,1186],{},"createLogger"," per invocation (SQS, events, HTTP API).",[1083,1189,1190],{"color":464,"icon":74,"title":227,"to":228},"For scripts, CLI tools, queues, and any TypeScript process.",[1083,1192,1194],{"color":464,"icon":371,"title":1193,"to":369},"Custom Integration","Build your own middleware with the evlog toolkit API.",[462,1196,1197,1198,453,1201,453,1204,453,1207,453,1210,1092,1213,905],{"color":1064,"icon":13},"All frameworks support the same features: ",[468,1199,1200],{"href":47},"wide events",[468,1202,1203],{"href":52},"structured errors",[468,1205,1206],{"href":95},"drain adapters",[468,1208,1209],{"href":350},"enrichers",[468,1211,1212],{"href":62},"sampling",[468,1214,1215],{"href":266},"AI SDK integration",[476,1217,422],{"id":1218},"vite-plugin",[446,1220,1221,1222,1228],{},"For any Vite-based project, the ",[468,1223,1224,1227],{"href":423},[450,1225,1226],{},"evlog\u002Fvite"," plugin"," adds build-time optimizations:",[1230,1231,1232,1243,1253],"ul",{},[1233,1234,1235,1238,1239,1242],"li",{},[898,1236,1237],{},"Auto-initialization",": no ",[450,1240,1241],{},"initLogger()"," call needed",[1233,1244,1245,1248,1249,1252],{},[898,1246,1247],{},"Debug stripping",": ",[450,1250,1251],{},"log.debug()"," removed from production builds",[1233,1254,1255,1258,1259,1262],{},[898,1256,1257],{},"Source location",": inject ",[450,1260,1261],{},"__source: 'file:line'"," into log calls",[446,1264,1265,1266,1268],{},"Works with SvelteKit, Hono (via vite-node), and any Vite-powered setup. Nuxt users get these features via the ",[450,1267,518],{}," module options.",{"title":1270,"searchDepth":1271,"depth":1271,"links":1272},"",2,[1273,1274,1279,1280,1281],{"id":478,"depth":1271,"text":36},{"id":892,"depth":1271,"text":893,"children":1275},[1276,1278],{"id":900,"depth":1277,"text":909},3,{"id":975,"depth":1277,"text":976},{"id":1077,"depth":1271,"text":1078},{"id":1134,"depth":1271,"text":1135},{"id":1218,"depth":1271,"text":422},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.","md",null,{},{"title":36,"icon":165},{"title":441,"description":1282},"PMdFOIsDAjmoFgUgxi9wkd89AAUVrvWI8Ja6tuBPzT4",[1290,1292],{"title":153,"path":154,"stem":155,"description":1291,"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":1293,"icon":170,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",1779694496951]