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