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