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