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