[{"data":1,"prerenderedAt":3110},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-cloudflare-workers":534,"-integrate-frameworks-cloudflare-workers-surround":3105},[4,30,80,128,308,440,499],{"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],{"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,"children":132,"page":29},"Integrate","\u002Fintegrate","4.integrate",[133,137,220],{"title":36,"path":134,"stem":135,"icon":136},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[142,145,175,200],{"title":36,"path":143,"stem":144,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":146,"path":147,"stem":148,"children":149,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[150,155,160,165,170],{"title":151,"path":152,"stem":153,"icon":154},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":156,"path":157,"stem":158,"icon":159},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":161,"path":162,"stem":163,"icon":164},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":166,"path":167,"stem":168,"icon":169},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":171,"path":172,"stem":173,"icon":174},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":176,"path":177,"stem":178,"children":179,"page":29},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[180,185,190,195],{"title":181,"path":182,"stem":183,"icon":184},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":186,"path":187,"stem":188,"icon":189},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":191,"path":192,"stem":193,"icon":194},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":196,"path":197,"stem":198,"icon":199},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":201,"path":202,"stem":203,"children":204,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[205,210,215],{"title":206,"path":207,"stem":208,"icon":209},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":211,"path":212,"stem":213,"icon":214},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":216,"path":217,"stem":218,"icon":219},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":221,"path":222,"stem":223,"children":224,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[225,229,234,239,244,249,254,259,264,269,274,279,284,289,293,298,303],{"title":36,"path":226,"stem":227,"icon":228},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":230,"path":231,"stem":232,"icon":233},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":235,"path":236,"stem":237,"icon":238},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":240,"path":241,"stem":242,"icon":243},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":245,"path":246,"stem":247,"icon":248},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":250,"path":251,"stem":252,"icon":253},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":255,"path":256,"stem":257,"icon":258},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":260,"path":261,"stem":262,"icon":263},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":265,"path":266,"stem":267,"icon":268},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":270,"path":271,"stem":272,"icon":273},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":275,"path":276,"stem":277,"icon":278},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":280,"path":281,"stem":282,"icon":283},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":285,"path":286,"stem":287,"icon":288},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":290,"path":291,"stem":292,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":294,"path":295,"stem":296,"icon":297},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":299,"path":300,"stem":301,"icon":302},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":304,"path":305,"stem":306,"icon":307},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":309,"path":310,"stem":311,"children":312,"page":29},"Use Cases","\u002Fuse-cases","5.use-cases",[313,316,321,350,377,409,430,435],{"title":36,"path":314,"stem":315,"icon":102},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":317,"path":318,"stem":319,"icon":320},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":322,"icon":323,"path":324,"stem":325,"children":326,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[327,330,335,340,345],{"title":36,"path":328,"stem":329,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":331,"path":332,"stem":333,"icon":334},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":336,"path":337,"stem":338,"icon":339},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":341,"path":342,"stem":343,"icon":344},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":346,"path":347,"stem":348,"icon":349},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":351,"icon":352,"path":353,"stem":354,"children":355,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[356,359,364,369,373],{"title":36,"path":357,"stem":358,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":360,"path":361,"stem":362,"icon":363},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":365,"path":366,"stem":367,"icon":368},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":370,"path":371,"stem":372,"icon":320},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":374,"path":375,"stem":376,"icon":107},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":378,"icon":379,"path":380,"stem":381,"children":382,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[383,386,391,396,401,405],{"title":36,"path":384,"stem":385,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":387,"path":388,"stem":389,"icon":390},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":392,"path":393,"stem":394,"icon":395},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":397,"path":398,"stem":399,"icon":400},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":402,"path":403,"stem":404,"icon":379},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":406,"path":407,"stem":408,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":346,"icon":107,"path":410,"stem":411,"children":412,"page":29},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[413,416,421,426],{"title":36,"path":414,"stem":415,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":417,"path":418,"stem":419,"icon":420},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":422,"path":423,"stem":424,"icon":425},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":427,"path":428,"stem":429,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":431,"path":432,"stem":433,"icon":434},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":436,"path":437,"stem":438,"icon":439},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":441,"path":442,"stem":443,"children":444,"page":29},"Extend","\u002Fextend","6.extend",[445,449,454,459,463,468,472,476,480,484,489,494],{"title":36,"path":446,"stem":447,"icon":448},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":450,"path":451,"stem":452,"icon":453},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":455,"path":456,"stem":457,"icon":458},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":460,"path":461,"stem":462,"icon":453},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":464,"path":465,"stem":466,"icon":467},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":406,"path":469,"stem":470,"icon":471},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":473,"path":474,"stem":475,"icon":448},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":477,"path":478,"stem":479,"icon":434},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":481,"path":482,"stem":483,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":485,"path":486,"stem":487,"icon":488},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":490,"path":491,"stem":492,"icon":493},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":495,"path":496,"stem":497,"icon":498},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":427,"path":500,"stem":501,"children":502,"page":29},"\u002Freference","7.reference",[503,508,511,516,520,525,529],{"title":504,"path":505,"stem":506,"icon":507},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":374,"path":509,"stem":510,"icon":107},"\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":379},"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":434},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":530,"path":531,"stem":532,"icon":533},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"id":535,"title":285,"body":536,"description":3098,"extension":3099,"links":3100,"meta":3101,"navigation":3102,"path":286,"seo":3103,"stem":287,"__hash__":3104},"docs\u002F4.integrate\u002Fframeworks\u002F12.cloudflare-workers.md",{"type":537,"value":538,"toc":3083},"minimark",[539,548,566,613,617,622,693,697,937,960,991,994,999,1407,1411,1423,1591,1631,1634,1637,2062,2127,2131,2137,2676,2679,2690,2694,2700,2983,2990,2994,2997,3026,3030,3044,3048,3079],[540,541,542,543,547],"p",{},"The ",[544,545,546],"code",{},"evlog\u002Fworkers"," adapter instruments Cloudflare Workers and Durable Objects with request-scoped loggers carrying Cloudflare-specific context.",[540,549,550,551,557,558,561,562,565],{},"Use ",[552,553,554],"strong",{},[544,555,556],{},"withEvlog"," to get the same middleware pipeline as every other framework integration — route filtering, redaction, enrich, tail sampling, plugins, drains, and automatic emit. Reach for ",[544,559,560],{},"defineWorkerFetch"," or ",[544,563,564],{},"createWorkersLogger"," when you'd rather own the emit yourself.",[567,568,571,574,599],"prompt",{":actions":569,"description":570,"icon":288},"[\"copy\",\"cursor\",\"claude\"]","Set up evlog in my Cloudflare Worker",[540,572,573],{},"Set up evlog in my Cloudflare Worker.",[575,576,577,581,584,587,593,596],"ul",{},[578,579,580],"li",{},"Install evlog: pnpm add evlog",[578,582,583],{},"Import initWorkersLogger and withEvlog from 'evlog\u002Fworkers'",[578,585,586],{},"Call initWorkersLogger({ env: { service: 'my-worker' } }) at the top level",[578,588,589,590,592],{},"Wrap the fetch handler with ",[552,591,556],{}," (recommended) — it emits the wide event for you and accepts include\u002Fexclude, routes, redact, enrich, keep, plugins and drain",[578,594,595],{},"Use log.set() to accumulate context throughout the request",[578,597,598],{},"Only use defineWorkerFetch or createWorkersLogger if you want to call log.emit() yourself",[540,600,601,602,608,609],{},"Docs: ",[603,604,605],"a",{"href":605,"rel":606},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers",[607],"nofollow","\nAdapters: ",[603,610,611],{"href":611,"rel":612},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[607],[614,615,25],"h2",{"id":616},"quick-start",[618,619,621],"h3",{"id":620},"_1-install","1. Install",[623,624,625,650,664,678],"code-group",{},[626,627,633],"pre",{"className":628,"code":629,"filename":630,"language":631,"meta":632,"style":632},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[544,634,635],{"__ignoreMap":632},[636,637,640,643,647],"span",{"class":638,"line":639},"line",1,[636,641,630],{"class":642},"sBMFI",[636,644,646],{"class":645},"sfazB"," add",[636,648,649],{"class":645}," evlog\n",[626,651,654],{"className":628,"code":652,"filename":653,"language":631,"meta":632,"style":632},"bun add evlog\n","bun",[544,655,656],{"__ignoreMap":632},[636,657,658,660,662],{"class":638,"line":639},[636,659,653],{"class":642},[636,661,646],{"class":645},[636,663,649],{"class":645},[626,665,668],{"className":628,"code":666,"filename":667,"language":631,"meta":632,"style":632},"yarn add evlog\n","yarn",[544,669,670],{"__ignoreMap":632},[636,671,672,674,676],{"class":638,"line":639},[636,673,667],{"class":642},[636,675,646],{"class":645},[636,677,649],{"class":645},[626,679,682],{"className":628,"code":680,"filename":681,"language":631,"meta":632,"style":632},"npm install evlog\n","npm",[544,683,684],{"__ignoreMap":632},[636,685,686,688,691],{"class":638,"line":639},[636,687,681],{"class":642},[636,689,690],{"class":645}," install",[636,692,649],{"class":645},[618,694,696],{"id":695},"_2-wrap-your-fetch-handler","2. Wrap your fetch handler",[626,698,703],{"className":699,"code":700,"filename":701,"language":702,"meta":632,"style":632},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initWorkersLogger, withEvlog } from 'evlog\u002Fworkers'\n\ninitWorkersLogger({\n  env: { service: 'my-worker' },\n})\n\nexport default withEvlog(async (request, _env, _ctx, log) => {\n  log.set({ action: 'handle_request' })\n\n  \u002F\u002F ... your handler logic\n\n  return Response.json({ ok: true })\n})\n","src\u002Fworker.ts","typescript",[544,704,705,739,746,759,787,796,801,849,882,887,894,899,930],{"__ignoreMap":632},[636,706,707,711,715,719,722,725,728,731,734,736],{"class":638,"line":639},[636,708,710],{"class":709},"s7zQu","import",[636,712,714],{"class":713},"sMK4o"," {",[636,716,718],{"class":717},"sTEyZ"," initWorkersLogger",[636,720,721],{"class":713},",",[636,723,724],{"class":717}," withEvlog",[636,726,727],{"class":713}," }",[636,729,730],{"class":709}," from",[636,732,733],{"class":713}," '",[636,735,546],{"class":645},[636,737,738],{"class":713},"'\n",[636,740,742],{"class":638,"line":741},2,[636,743,745],{"emptyLinePlaceholder":744},true,"\n",[636,747,749,753,756],{"class":638,"line":748},3,[636,750,752],{"class":751},"s2Zo4","initWorkersLogger",[636,754,755],{"class":717},"(",[636,757,758],{"class":713},"{\n",[636,760,762,766,769,771,774,776,778,781,784],{"class":638,"line":761},4,[636,763,765],{"class":764},"swJcz","  env",[636,767,768],{"class":713},":",[636,770,714],{"class":713},[636,772,773],{"class":764}," service",[636,775,768],{"class":713},[636,777,733],{"class":713},[636,779,780],{"class":645},"my-worker",[636,782,783],{"class":713},"'",[636,785,786],{"class":713}," },\n",[636,788,790,793],{"class":638,"line":789},5,[636,791,792],{"class":713},"}",[636,794,795],{"class":717},")\n",[636,797,799],{"class":638,"line":798},6,[636,800,745],{"emptyLinePlaceholder":744},[636,802,804,807,810,812,814,818,821,825,827,830,832,835,837,840,843,846],{"class":638,"line":803},7,[636,805,806],{"class":709},"export",[636,808,809],{"class":709}," default",[636,811,724],{"class":751},[636,813,755],{"class":717},[636,815,817],{"class":816},"spNyl","async",[636,819,820],{"class":713}," (",[636,822,824],{"class":823},"sHdIc","request",[636,826,721],{"class":713},[636,828,829],{"class":823}," _env",[636,831,721],{"class":713},[636,833,834],{"class":823}," _ctx",[636,836,721],{"class":713},[636,838,839],{"class":823}," log",[636,841,842],{"class":713},")",[636,844,845],{"class":816}," =>",[636,847,848],{"class":713}," {\n",[636,850,852,855,858,861,863,866,869,871,873,876,878,880],{"class":638,"line":851},8,[636,853,854],{"class":717},"  log",[636,856,857],{"class":713},".",[636,859,860],{"class":751},"set",[636,862,755],{"class":764},[636,864,865],{"class":713},"{",[636,867,868],{"class":764}," action",[636,870,768],{"class":713},[636,872,733],{"class":713},[636,874,875],{"class":645},"handle_request",[636,877,783],{"class":713},[636,879,727],{"class":713},[636,881,795],{"class":764},[636,883,885],{"class":638,"line":884},9,[636,886,745],{"emptyLinePlaceholder":744},[636,888,890],{"class":638,"line":889},10,[636,891,893],{"class":892},"sHwdD","  \u002F\u002F ... your handler logic\n",[636,895,897],{"class":638,"line":896},11,[636,898,745],{"emptyLinePlaceholder":744},[636,900,902,905,908,910,913,915,917,920,922,926,928],{"class":638,"line":901},12,[636,903,904],{"class":709},"  return",[636,906,907],{"class":717}," Response",[636,909,857],{"class":713},[636,911,912],{"class":751},"json",[636,914,755],{"class":764},[636,916,865],{"class":713},[636,918,919],{"class":764}," ok",[636,921,768],{"class":713},[636,923,925],{"class":924},"sfNiH"," true",[636,927,727],{"class":713},[636,929,795],{"class":764},[636,931,933,935],{"class":638,"line":932},13,[636,934,792],{"class":713},[636,936,795],{"class":717},[540,938,939,941,942,945,946,949,950,955,956,959],{},[544,940,556],{}," emits one wide event per request when the handler returns — no manual ",[544,943,944],{},"log.emit()",". It reads ",[544,947,948],{},"ExecutionContext"," off the third argument, so async ",[552,951,952],{},[544,953,954],{},"drain"," calls (PostHog, Axiom, …) are registered with ",[544,957,958],{},"waitUntil"," and stay alive after the response is returned. Streaming responses defer the emit until the body completes.",[540,961,962,965,966,969,970,973,974,977,978,977,981,977,983,986,987,990],{},[544,963,964],{},"requestId"," comes from ",[544,967,968],{},"x-request-id"," when the caller sends one, falling back to ",[544,971,972],{},"cf-ray",". ",[544,975,976],{},"method",", ",[544,979,980],{},"path",[544,982,972],{},[544,984,985],{},"traceparent"," and the safe subset of ",[544,988,989],{},"request.cf"," are captured automatically.",[618,992,336],{"id":993},"options",[540,995,996,998],{},[544,997,556],{}," accepts the same options as every other framework integration:",[626,1000,1002],{"className":699,"code":1001,"filename":701,"language":702,"meta":632,"style":632},"import { initWorkersLogger, withEvlog } from 'evlog\u002Fworkers'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitWorkersLogger({ env: { service: 'my-worker' } })\n\nexport default withEvlog(\n  async (request, env, ctx, log) => {\n    log.set({ route: 'checkout' })\n    return Response.json({ ok: true })\n  },\n  {\n    drain: createAxiomDrain(),\n    exclude: ['\u002Fhealth'],\n    routes: { '\u002Fapi\u002F**': { service: 'api' } },\n    redact: true,\n    enrich: (ctx) => {\n      ctx.event.colo = ctx.event.colo ?? 'unknown'\n    },\n    keep: (ctx) => {\n      if (ctx.duration > 1000) ctx.shouldKeep = true\n    },\n  },\n)\n",[544,1003,1004,1026,1046,1050,1081,1085,1096,1124,1153,1178,1183,1188,1203,1225,1261,1273,1292,1331,1337,1355,1392,1397,1402],{"__ignoreMap":632},[636,1005,1006,1008,1010,1012,1014,1016,1018,1020,1022,1024],{"class":638,"line":639},[636,1007,710],{"class":709},[636,1009,714],{"class":713},[636,1011,718],{"class":717},[636,1013,721],{"class":713},[636,1015,724],{"class":717},[636,1017,727],{"class":713},[636,1019,730],{"class":709},[636,1021,733],{"class":713},[636,1023,546],{"class":645},[636,1025,738],{"class":713},[636,1027,1028,1030,1032,1035,1037,1039,1041,1044],{"class":638,"line":741},[636,1029,710],{"class":709},[636,1031,714],{"class":713},[636,1033,1034],{"class":717}," createAxiomDrain",[636,1036,727],{"class":713},[636,1038,730],{"class":709},[636,1040,733],{"class":713},[636,1042,1043],{"class":645},"evlog\u002Faxiom",[636,1045,738],{"class":713},[636,1047,1048],{"class":638,"line":748},[636,1049,745],{"emptyLinePlaceholder":744},[636,1051,1052,1054,1056,1058,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079],{"class":638,"line":761},[636,1053,752],{"class":751},[636,1055,755],{"class":717},[636,1057,865],{"class":713},[636,1059,1060],{"class":764}," env",[636,1062,768],{"class":713},[636,1064,714],{"class":713},[636,1066,773],{"class":764},[636,1068,768],{"class":713},[636,1070,733],{"class":713},[636,1072,780],{"class":645},[636,1074,783],{"class":713},[636,1076,727],{"class":713},[636,1078,727],{"class":713},[636,1080,795],{"class":717},[636,1082,1083],{"class":638,"line":789},[636,1084,745],{"emptyLinePlaceholder":744},[636,1086,1087,1089,1091,1093],{"class":638,"line":798},[636,1088,806],{"class":709},[636,1090,809],{"class":709},[636,1092,724],{"class":751},[636,1094,1095],{"class":717},"(\n",[636,1097,1098,1101,1103,1105,1107,1109,1111,1114,1116,1118,1120,1122],{"class":638,"line":803},[636,1099,1100],{"class":816},"  async",[636,1102,820],{"class":713},[636,1104,824],{"class":823},[636,1106,721],{"class":713},[636,1108,1060],{"class":823},[636,1110,721],{"class":713},[636,1112,1113],{"class":823}," ctx",[636,1115,721],{"class":713},[636,1117,839],{"class":823},[636,1119,842],{"class":713},[636,1121,845],{"class":816},[636,1123,848],{"class":713},[636,1125,1126,1129,1131,1133,1135,1137,1140,1142,1144,1147,1149,1151],{"class":638,"line":851},[636,1127,1128],{"class":717},"    log",[636,1130,857],{"class":713},[636,1132,860],{"class":751},[636,1134,755],{"class":764},[636,1136,865],{"class":713},[636,1138,1139],{"class":764}," route",[636,1141,768],{"class":713},[636,1143,733],{"class":713},[636,1145,1146],{"class":645},"checkout",[636,1148,783],{"class":713},[636,1150,727],{"class":713},[636,1152,795],{"class":764},[636,1154,1155,1158,1160,1162,1164,1166,1168,1170,1172,1174,1176],{"class":638,"line":884},[636,1156,1157],{"class":709},"    return",[636,1159,907],{"class":717},[636,1161,857],{"class":713},[636,1163,912],{"class":751},[636,1165,755],{"class":764},[636,1167,865],{"class":713},[636,1169,919],{"class":764},[636,1171,768],{"class":713},[636,1173,925],{"class":924},[636,1175,727],{"class":713},[636,1177,795],{"class":764},[636,1179,1180],{"class":638,"line":889},[636,1181,1182],{"class":713},"  },\n",[636,1184,1185],{"class":638,"line":896},[636,1186,1187],{"class":713},"  {\n",[636,1189,1190,1193,1195,1197,1200],{"class":638,"line":901},[636,1191,1192],{"class":764},"    drain",[636,1194,768],{"class":713},[636,1196,1034],{"class":751},[636,1198,1199],{"class":717},"()",[636,1201,1202],{"class":713},",\n",[636,1204,1205,1208,1210,1213,1215,1218,1220,1223],{"class":638,"line":932},[636,1206,1207],{"class":764},"    exclude",[636,1209,768],{"class":713},[636,1211,1212],{"class":717}," [",[636,1214,783],{"class":713},[636,1216,1217],{"class":645},"\u002Fhealth",[636,1219,783],{"class":713},[636,1221,1222],{"class":717},"]",[636,1224,1202],{"class":713},[636,1226,1228,1231,1233,1235,1237,1240,1242,1244,1246,1248,1250,1252,1255,1257,1259],{"class":638,"line":1227},14,[636,1229,1230],{"class":764},"    routes",[636,1232,768],{"class":713},[636,1234,714],{"class":713},[636,1236,733],{"class":713},[636,1238,1239],{"class":764},"\u002Fapi\u002F**",[636,1241,783],{"class":713},[636,1243,768],{"class":713},[636,1245,714],{"class":713},[636,1247,773],{"class":764},[636,1249,768],{"class":713},[636,1251,733],{"class":713},[636,1253,1254],{"class":645},"api",[636,1256,783],{"class":713},[636,1258,727],{"class":713},[636,1260,786],{"class":713},[636,1262,1264,1267,1269,1271],{"class":638,"line":1263},15,[636,1265,1266],{"class":764},"    redact",[636,1268,768],{"class":713},[636,1270,925],{"class":924},[636,1272,1202],{"class":713},[636,1274,1276,1279,1281,1283,1286,1288,1290],{"class":638,"line":1275},16,[636,1277,1278],{"class":751},"    enrich",[636,1280,768],{"class":713},[636,1282,820],{"class":713},[636,1284,1285],{"class":823},"ctx",[636,1287,842],{"class":713},[636,1289,845],{"class":816},[636,1291,848],{"class":713},[636,1293,1295,1298,1300,1303,1305,1308,1311,1313,1315,1317,1319,1321,1324,1326,1329],{"class":638,"line":1294},17,[636,1296,1297],{"class":717},"      ctx",[636,1299,857],{"class":713},[636,1301,1302],{"class":717},"event",[636,1304,857],{"class":713},[636,1306,1307],{"class":717},"colo",[636,1309,1310],{"class":713}," =",[636,1312,1113],{"class":717},[636,1314,857],{"class":713},[636,1316,1302],{"class":717},[636,1318,857],{"class":713},[636,1320,1307],{"class":717},[636,1322,1323],{"class":713}," ??",[636,1325,733],{"class":713},[636,1327,1328],{"class":645},"unknown",[636,1330,738],{"class":713},[636,1332,1334],{"class":638,"line":1333},18,[636,1335,1336],{"class":713},"    },\n",[636,1338,1340,1343,1345,1347,1349,1351,1353],{"class":638,"line":1339},19,[636,1341,1342],{"class":751},"    keep",[636,1344,768],{"class":713},[636,1346,820],{"class":713},[636,1348,1285],{"class":823},[636,1350,842],{"class":713},[636,1352,845],{"class":816},[636,1354,848],{"class":713},[636,1356,1358,1361,1363,1365,1367,1370,1373,1377,1380,1382,1384,1387,1389],{"class":638,"line":1357},20,[636,1359,1360],{"class":709},"      if",[636,1362,820],{"class":764},[636,1364,1285],{"class":717},[636,1366,857],{"class":713},[636,1368,1369],{"class":717},"duration",[636,1371,1372],{"class":713}," >",[636,1374,1376],{"class":1375},"sbssI"," 1000",[636,1378,1379],{"class":764},") ",[636,1381,1285],{"class":717},[636,1383,857],{"class":713},[636,1385,1386],{"class":717},"shouldKeep",[636,1388,1310],{"class":713},[636,1390,1391],{"class":924}," true\n",[636,1393,1395],{"class":638,"line":1394},21,[636,1396,1336],{"class":713},[636,1398,1400],{"class":638,"line":1399},22,[636,1401,1182],{"class":713},[636,1403,1405],{"class":638,"line":1404},23,[636,1406,795],{"class":717},[618,1408,1410],{"id":1409},"emitting-manually","Emitting manually",[540,1412,1413,1414,1416,1417,1419,1420,1422],{},"Prefer to own the emit? ",[544,1415,560],{}," wires ",[544,1418,948],{}," for you but leaves ",[544,1421,944],{}," to you:",[626,1424,1426],{"className":699,"code":1425,"filename":701,"language":702,"meta":632,"style":632},"import { defineWorkerFetch, initWorkersLogger } from 'evlog\u002Fworkers'\n\ninitWorkersLogger({ env: { service: 'my-worker' } })\n\nexport default defineWorkerFetch(async (request, _env, _ctx, log) => {\n  log.set({ action: 'handle_request' })\n  log.emit()\n  return Response.json({ ok: true })\n})\n",[544,1427,1428,1451,1455,1485,1489,1523,1549,1561,1585],{"__ignoreMap":632},[636,1429,1430,1432,1434,1437,1439,1441,1443,1445,1447,1449],{"class":638,"line":639},[636,1431,710],{"class":709},[636,1433,714],{"class":713},[636,1435,1436],{"class":717}," defineWorkerFetch",[636,1438,721],{"class":713},[636,1440,718],{"class":717},[636,1442,727],{"class":713},[636,1444,730],{"class":709},[636,1446,733],{"class":713},[636,1448,546],{"class":645},[636,1450,738],{"class":713},[636,1452,1453],{"class":638,"line":741},[636,1454,745],{"emptyLinePlaceholder":744},[636,1456,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483],{"class":638,"line":748},[636,1458,752],{"class":751},[636,1460,755],{"class":717},[636,1462,865],{"class":713},[636,1464,1060],{"class":764},[636,1466,768],{"class":713},[636,1468,714],{"class":713},[636,1470,773],{"class":764},[636,1472,768],{"class":713},[636,1474,733],{"class":713},[636,1476,780],{"class":645},[636,1478,783],{"class":713},[636,1480,727],{"class":713},[636,1482,727],{"class":713},[636,1484,795],{"class":717},[636,1486,1487],{"class":638,"line":761},[636,1488,745],{"emptyLinePlaceholder":744},[636,1490,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521],{"class":638,"line":789},[636,1492,806],{"class":709},[636,1494,809],{"class":709},[636,1496,1436],{"class":751},[636,1498,755],{"class":717},[636,1500,817],{"class":816},[636,1502,820],{"class":713},[636,1504,824],{"class":823},[636,1506,721],{"class":713},[636,1508,829],{"class":823},[636,1510,721],{"class":713},[636,1512,834],{"class":823},[636,1514,721],{"class":713},[636,1516,839],{"class":823},[636,1518,842],{"class":713},[636,1520,845],{"class":816},[636,1522,848],{"class":713},[636,1524,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547],{"class":638,"line":798},[636,1526,854],{"class":717},[636,1528,857],{"class":713},[636,1530,860],{"class":751},[636,1532,755],{"class":764},[636,1534,865],{"class":713},[636,1536,868],{"class":764},[636,1538,768],{"class":713},[636,1540,733],{"class":713},[636,1542,875],{"class":645},[636,1544,783],{"class":713},[636,1546,727],{"class":713},[636,1548,795],{"class":764},[636,1550,1551,1553,1555,1558],{"class":638,"line":803},[636,1552,854],{"class":717},[636,1554,857],{"class":713},[636,1556,1557],{"class":751},"emit",[636,1559,1560],{"class":764},"()\n",[636,1562,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583],{"class":638,"line":851},[636,1564,904],{"class":709},[636,1566,907],{"class":717},[636,1568,857],{"class":713},[636,1570,912],{"class":751},[636,1572,755],{"class":764},[636,1574,865],{"class":713},[636,1576,919],{"class":764},[636,1578,768],{"class":713},[636,1580,925],{"class":924},[636,1582,727],{"class":713},[636,1584,795],{"class":764},[636,1586,1587,1589],{"class":638,"line":884},[636,1588,792],{"class":713},[636,1590,795],{"class":717},[1592,1593,1595,1597,1598,1600,1601,1604,1605,977,1608,977,1611,977,1614,977,1617,1597,1620,1623,1624,1627,1628,1630],"callout",{"color":1594,"icon":13},"info",[544,1596,560],{}," and ",[544,1599,564],{}," are the low-level path: they create the logger and leave the lifecycle to you, so ",[544,1602,1603],{},"include"," \u002F ",[544,1606,1607],{},"exclude",[544,1609,1610],{},"routes",[544,1612,1613],{},"redact",[544,1615,1616],{},"enrich",[544,1618,1619],{},"keep",[544,1621,1622],{},"plugins"," do ",[552,1625,1626],{},"not"," apply. Use ",[544,1629,556],{}," to get them.",[614,1632,46],{"id":1633},"wide-events",[540,1635,1636],{},"Build up context progressively, then emit at the end:",[626,1638,1640],{"className":699,"code":1639,"filename":701,"language":702,"meta":632,"style":632},"import { defineWorkerFetch, initWorkersLogger } from 'evlog\u002Fworkers'\n\ninitWorkersLogger({\n  env: { service: 'my-worker' },\n})\n\nexport default defineWorkerFetch(async (request, env, _ctx, log) => {\n  const url = new URL(request.url)\n\n  log.set({ route: url.pathname })\n\n  const user = await env.DB.prepare('SELECT * FROM users WHERE id = ?').bind(url.searchParams.get('userId')).first()\n  log.set({ user: { id: user.id, plan: user.plan } })\n\n  const orders = await env.DB.prepare('SELECT COUNT(*) as count FROM orders WHERE user_id = ?').bind(user.id).first()\n  log.set({ orders: { count: orders.count } })\n\n  log.emit()\n  return Response.json({ user, orders })\n})\n",[544,1641,1642,1664,1668,1676,1696,1702,1706,1740,1767,1771,1798,1802,1875,1925,1929,1982,2018,2022,2032,2056],{"__ignoreMap":632},[636,1643,1644,1646,1648,1650,1652,1654,1656,1658,1660,1662],{"class":638,"line":639},[636,1645,710],{"class":709},[636,1647,714],{"class":713},[636,1649,1436],{"class":717},[636,1651,721],{"class":713},[636,1653,718],{"class":717},[636,1655,727],{"class":713},[636,1657,730],{"class":709},[636,1659,733],{"class":713},[636,1661,546],{"class":645},[636,1663,738],{"class":713},[636,1665,1666],{"class":638,"line":741},[636,1667,745],{"emptyLinePlaceholder":744},[636,1669,1670,1672,1674],{"class":638,"line":748},[636,1671,752],{"class":751},[636,1673,755],{"class":717},[636,1675,758],{"class":713},[636,1677,1678,1680,1682,1684,1686,1688,1690,1692,1694],{"class":638,"line":761},[636,1679,765],{"class":764},[636,1681,768],{"class":713},[636,1683,714],{"class":713},[636,1685,773],{"class":764},[636,1687,768],{"class":713},[636,1689,733],{"class":713},[636,1691,780],{"class":645},[636,1693,783],{"class":713},[636,1695,786],{"class":713},[636,1697,1698,1700],{"class":638,"line":789},[636,1699,792],{"class":713},[636,1701,795],{"class":717},[636,1703,1704],{"class":638,"line":798},[636,1705,745],{"emptyLinePlaceholder":744},[636,1707,1708,1710,1712,1714,1716,1718,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738],{"class":638,"line":803},[636,1709,806],{"class":709},[636,1711,809],{"class":709},[636,1713,1436],{"class":751},[636,1715,755],{"class":717},[636,1717,817],{"class":816},[636,1719,820],{"class":713},[636,1721,824],{"class":823},[636,1723,721],{"class":713},[636,1725,1060],{"class":823},[636,1727,721],{"class":713},[636,1729,834],{"class":823},[636,1731,721],{"class":713},[636,1733,839],{"class":823},[636,1735,842],{"class":713},[636,1737,845],{"class":816},[636,1739,848],{"class":713},[636,1741,1742,1745,1748,1750,1753,1756,1758,1760,1762,1765],{"class":638,"line":851},[636,1743,1744],{"class":816},"  const",[636,1746,1747],{"class":717}," url",[636,1749,1310],{"class":713},[636,1751,1752],{"class":713}," new",[636,1754,1755],{"class":751}," URL",[636,1757,755],{"class":764},[636,1759,824],{"class":717},[636,1761,857],{"class":713},[636,1763,1764],{"class":717},"url",[636,1766,795],{"class":764},[636,1768,1769],{"class":638,"line":884},[636,1770,745],{"emptyLinePlaceholder":744},[636,1772,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1794,1796],{"class":638,"line":889},[636,1774,854],{"class":717},[636,1776,857],{"class":713},[636,1778,860],{"class":751},[636,1780,755],{"class":764},[636,1782,865],{"class":713},[636,1784,1139],{"class":764},[636,1786,768],{"class":713},[636,1788,1747],{"class":717},[636,1790,857],{"class":713},[636,1792,1793],{"class":717},"pathname",[636,1795,727],{"class":713},[636,1797,795],{"class":764},[636,1799,1800],{"class":638,"line":896},[636,1801,745],{"emptyLinePlaceholder":744},[636,1803,1804,1806,1809,1811,1814,1816,1818,1821,1823,1826,1828,1830,1833,1835,1837,1839,1842,1844,1846,1848,1851,1853,1856,1858,1860,1863,1865,1868,1870,1873],{"class":638,"line":901},[636,1805,1744],{"class":816},[636,1807,1808],{"class":717}," user",[636,1810,1310],{"class":713},[636,1812,1813],{"class":709}," await",[636,1815,1060],{"class":717},[636,1817,857],{"class":713},[636,1819,1820],{"class":717},"DB",[636,1822,857],{"class":713},[636,1824,1825],{"class":751},"prepare",[636,1827,755],{"class":764},[636,1829,783],{"class":713},[636,1831,1832],{"class":645},"SELECT * FROM users WHERE id = ?",[636,1834,783],{"class":713},[636,1836,842],{"class":764},[636,1838,857],{"class":713},[636,1840,1841],{"class":751},"bind",[636,1843,755],{"class":764},[636,1845,1764],{"class":717},[636,1847,857],{"class":713},[636,1849,1850],{"class":717},"searchParams",[636,1852,857],{"class":713},[636,1854,1855],{"class":751},"get",[636,1857,755],{"class":764},[636,1859,783],{"class":713},[636,1861,1862],{"class":645},"userId",[636,1864,783],{"class":713},[636,1866,1867],{"class":764},"))",[636,1869,857],{"class":713},[636,1871,1872],{"class":751},"first",[636,1874,1560],{"class":764},[636,1876,1877,1879,1881,1883,1885,1887,1889,1891,1893,1896,1898,1900,1902,1905,1907,1910,1912,1914,1916,1919,1921,1923],{"class":638,"line":932},[636,1878,854],{"class":717},[636,1880,857],{"class":713},[636,1882,860],{"class":751},[636,1884,755],{"class":764},[636,1886,865],{"class":713},[636,1888,1808],{"class":764},[636,1890,768],{"class":713},[636,1892,714],{"class":713},[636,1894,1895],{"class":764}," id",[636,1897,768],{"class":713},[636,1899,1808],{"class":717},[636,1901,857],{"class":713},[636,1903,1904],{"class":717},"id",[636,1906,721],{"class":713},[636,1908,1909],{"class":764}," plan",[636,1911,768],{"class":713},[636,1913,1808],{"class":717},[636,1915,857],{"class":713},[636,1917,1918],{"class":717},"plan",[636,1920,727],{"class":713},[636,1922,727],{"class":713},[636,1924,795],{"class":764},[636,1926,1927],{"class":638,"line":1227},[636,1928,745],{"emptyLinePlaceholder":744},[636,1930,1931,1933,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954,1957,1959,1961,1963,1965,1967,1970,1972,1974,1976,1978,1980],{"class":638,"line":1263},[636,1932,1744],{"class":816},[636,1934,1935],{"class":717}," orders",[636,1937,1310],{"class":713},[636,1939,1813],{"class":709},[636,1941,1060],{"class":717},[636,1943,857],{"class":713},[636,1945,1820],{"class":717},[636,1947,857],{"class":713},[636,1949,1825],{"class":751},[636,1951,755],{"class":764},[636,1953,783],{"class":713},[636,1955,1956],{"class":645},"SELECT COUNT(*) as count FROM orders WHERE user_id = ?",[636,1958,783],{"class":713},[636,1960,842],{"class":764},[636,1962,857],{"class":713},[636,1964,1841],{"class":751},[636,1966,755],{"class":764},[636,1968,1969],{"class":717},"user",[636,1971,857],{"class":713},[636,1973,1904],{"class":717},[636,1975,842],{"class":764},[636,1977,857],{"class":713},[636,1979,1872],{"class":751},[636,1981,1560],{"class":764},[636,1983,1984,1986,1988,1990,1992,1994,1996,1998,2000,2003,2005,2007,2009,2012,2014,2016],{"class":638,"line":1275},[636,1985,854],{"class":717},[636,1987,857],{"class":713},[636,1989,860],{"class":751},[636,1991,755],{"class":764},[636,1993,865],{"class":713},[636,1995,1935],{"class":764},[636,1997,768],{"class":713},[636,1999,714],{"class":713},[636,2001,2002],{"class":764}," count",[636,2004,768],{"class":713},[636,2006,1935],{"class":717},[636,2008,857],{"class":713},[636,2010,2011],{"class":717},"count",[636,2013,727],{"class":713},[636,2015,727],{"class":713},[636,2017,795],{"class":764},[636,2019,2020],{"class":638,"line":1294},[636,2021,745],{"emptyLinePlaceholder":744},[636,2023,2024,2026,2028,2030],{"class":638,"line":1333},[636,2025,854],{"class":717},[636,2027,857],{"class":713},[636,2029,1557],{"class":751},[636,2031,1560],{"class":764},[636,2033,2034,2036,2038,2040,2042,2044,2046,2048,2050,2052,2054],{"class":638,"line":1339},[636,2035,904],{"class":709},[636,2037,907],{"class":717},[636,2039,857],{"class":713},[636,2041,912],{"class":751},[636,2043,755],{"class":764},[636,2045,865],{"class":713},[636,2047,1808],{"class":717},[636,2049,721],{"class":713},[636,2051,1935],{"class":717},[636,2053,727],{"class":713},[636,2055,795],{"class":764},[636,2057,2058,2060],{"class":638,"line":1357},[636,2059,792],{"class":713},[636,2061,795],{"class":717},[626,2063,2066],{"className":628,"code":2064,"filename":2065,"language":631,"meta":632,"style":632},"14:58:15 INFO [my-worker] GET \u002Fapi\u002Fusers 200 in 12ms\n  ├─ orders: count=5\n  ├─ user: id=usr_123 plan=pro\n  ├─ route: \u002Fapi\u002Fusers\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[544,2067,2068,2079,2093,2106,2116],{"__ignoreMap":632},[636,2069,2070,2073,2076],{"class":638,"line":639},[636,2071,2072],{"class":642},"14:58:15",[636,2074,2075],{"class":645}," INFO",[636,2077,2078],{"class":717}," [my-worker] GET \u002Fapi\u002Fusers 200 in 12ms\n",[636,2080,2081,2084,2087,2090],{"class":638,"line":741},[636,2082,2083],{"class":642},"  ├─",[636,2085,2086],{"class":645}," orders:",[636,2088,2089],{"class":645}," count=",[636,2091,2092],{"class":1375},"5\n",[636,2094,2095,2097,2100,2103],{"class":638,"line":748},[636,2096,2083],{"class":642},[636,2098,2099],{"class":645}," user:",[636,2101,2102],{"class":645}," id=usr_123",[636,2104,2105],{"class":645}," plan=pro\n",[636,2107,2108,2110,2113],{"class":638,"line":761},[636,2109,2083],{"class":642},[636,2111,2112],{"class":645}," route:",[636,2114,2115],{"class":645}," \u002Fapi\u002Fusers\n",[636,2117,2118,2121,2124],{"class":638,"line":789},[636,2119,2120],{"class":642},"  └─",[636,2122,2123],{"class":645}," requestId:",[636,2125,2126],{"class":645}," 4a8ff3a8-...\n",[614,2128,2130],{"id":2129},"error-handling","Error Handling",[540,2132,550,2133,2136],{},[544,2134,2135],{},"createError"," for structured errors and handle them with try\u002Fcatch:",[2138,2139,2140],"code-collapse",{},[626,2141,2143],{"className":699,"code":2142,"filename":701,"language":702,"meta":632,"style":632},"import { createError, parseError } from 'evlog'\nimport { defineWorkerFetch, initWorkersLogger } from 'evlog\u002Fworkers'\n\ninitWorkersLogger({ env: { service: 'my-worker' } })\n\nexport default defineWorkerFetch(async (request, env, _ctx, log) => {\n  try {\n    const body = await request.json()\n    log.set({ payment: { amount: body.amount } })\n\n    if (body.amount \u003C= 0) {\n      throw createError({\n        status: 400,\n        message: 'Invalid payment amount',\n        why: 'The amount must be a positive number',\n        fix: 'Pass a positive integer in cents',\n      })\n    }\n\n    log.emit()\n    return Response.json({ success: true })\n  } catch (error) {\n    log.error(error instanceof Error ? error : new Error(String(error)))\n    log.emit()\n\n    const parsed = parseError(error)\n    return Response.json({\n      message: parsed.message,\n      why: parsed.why,\n      fix: parsed.fix,\n    }, { status: parsed.status })\n  }\n})\n",[544,2144,2145,2170,2192,2196,2226,2230,2264,2271,2292,2329,2333,2357,2368,2380,2396,2412,2428,2435,2440,2444,2454,2479,2496,2539,2550,2555,2573,2588,2605,2622,2639,2663,2669],{"__ignoreMap":632},[636,2146,2147,2149,2151,2154,2156,2159,2161,2163,2165,2168],{"class":638,"line":639},[636,2148,710],{"class":709},[636,2150,714],{"class":713},[636,2152,2153],{"class":717}," createError",[636,2155,721],{"class":713},[636,2157,2158],{"class":717}," parseError",[636,2160,727],{"class":713},[636,2162,730],{"class":709},[636,2164,733],{"class":713},[636,2166,2167],{"class":645},"evlog",[636,2169,738],{"class":713},[636,2171,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190],{"class":638,"line":741},[636,2173,710],{"class":709},[636,2175,714],{"class":713},[636,2177,1436],{"class":717},[636,2179,721],{"class":713},[636,2181,718],{"class":717},[636,2183,727],{"class":713},[636,2185,730],{"class":709},[636,2187,733],{"class":713},[636,2189,546],{"class":645},[636,2191,738],{"class":713},[636,2193,2194],{"class":638,"line":748},[636,2195,745],{"emptyLinePlaceholder":744},[636,2197,2198,2200,2202,2204,2206,2208,2210,2212,2214,2216,2218,2220,2222,2224],{"class":638,"line":761},[636,2199,752],{"class":751},[636,2201,755],{"class":717},[636,2203,865],{"class":713},[636,2205,1060],{"class":764},[636,2207,768],{"class":713},[636,2209,714],{"class":713},[636,2211,773],{"class":764},[636,2213,768],{"class":713},[636,2215,733],{"class":713},[636,2217,780],{"class":645},[636,2219,783],{"class":713},[636,2221,727],{"class":713},[636,2223,727],{"class":713},[636,2225,795],{"class":717},[636,2227,2228],{"class":638,"line":789},[636,2229,745],{"emptyLinePlaceholder":744},[636,2231,2232,2234,2236,2238,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262],{"class":638,"line":798},[636,2233,806],{"class":709},[636,2235,809],{"class":709},[636,2237,1436],{"class":751},[636,2239,755],{"class":717},[636,2241,817],{"class":816},[636,2243,820],{"class":713},[636,2245,824],{"class":823},[636,2247,721],{"class":713},[636,2249,1060],{"class":823},[636,2251,721],{"class":713},[636,2253,834],{"class":823},[636,2255,721],{"class":713},[636,2257,839],{"class":823},[636,2259,842],{"class":713},[636,2261,845],{"class":816},[636,2263,848],{"class":713},[636,2265,2266,2269],{"class":638,"line":803},[636,2267,2268],{"class":709},"  try",[636,2270,848],{"class":713},[636,2272,2273,2276,2279,2281,2283,2286,2288,2290],{"class":638,"line":851},[636,2274,2275],{"class":816},"    const",[636,2277,2278],{"class":717}," body",[636,2280,1310],{"class":713},[636,2282,1813],{"class":709},[636,2284,2285],{"class":717}," request",[636,2287,857],{"class":713},[636,2289,912],{"class":751},[636,2291,1560],{"class":764},[636,2293,2294,2296,2298,2300,2302,2304,2307,2309,2311,2314,2316,2318,2320,2323,2325,2327],{"class":638,"line":884},[636,2295,1128],{"class":717},[636,2297,857],{"class":713},[636,2299,860],{"class":751},[636,2301,755],{"class":764},[636,2303,865],{"class":713},[636,2305,2306],{"class":764}," payment",[636,2308,768],{"class":713},[636,2310,714],{"class":713},[636,2312,2313],{"class":764}," amount",[636,2315,768],{"class":713},[636,2317,2278],{"class":717},[636,2319,857],{"class":713},[636,2321,2322],{"class":717},"amount",[636,2324,727],{"class":713},[636,2326,727],{"class":713},[636,2328,795],{"class":764},[636,2330,2331],{"class":638,"line":889},[636,2332,745],{"emptyLinePlaceholder":744},[636,2334,2335,2338,2340,2343,2345,2347,2350,2353,2355],{"class":638,"line":896},[636,2336,2337],{"class":709},"    if",[636,2339,820],{"class":764},[636,2341,2342],{"class":717},"body",[636,2344,857],{"class":713},[636,2346,2322],{"class":717},[636,2348,2349],{"class":713}," \u003C=",[636,2351,2352],{"class":1375}," 0",[636,2354,1379],{"class":764},[636,2356,758],{"class":713},[636,2358,2359,2362,2364,2366],{"class":638,"line":901},[636,2360,2361],{"class":709},"      throw",[636,2363,2153],{"class":751},[636,2365,755],{"class":764},[636,2367,758],{"class":713},[636,2369,2370,2373,2375,2378],{"class":638,"line":932},[636,2371,2372],{"class":764},"        status",[636,2374,768],{"class":713},[636,2376,2377],{"class":1375}," 400",[636,2379,1202],{"class":713},[636,2381,2382,2385,2387,2389,2392,2394],{"class":638,"line":1227},[636,2383,2384],{"class":764},"        message",[636,2386,768],{"class":713},[636,2388,733],{"class":713},[636,2390,2391],{"class":645},"Invalid payment amount",[636,2393,783],{"class":713},[636,2395,1202],{"class":713},[636,2397,2398,2401,2403,2405,2408,2410],{"class":638,"line":1263},[636,2399,2400],{"class":764},"        why",[636,2402,768],{"class":713},[636,2404,733],{"class":713},[636,2406,2407],{"class":645},"The amount must be a positive number",[636,2409,783],{"class":713},[636,2411,1202],{"class":713},[636,2413,2414,2417,2419,2421,2424,2426],{"class":638,"line":1275},[636,2415,2416],{"class":764},"        fix",[636,2418,768],{"class":713},[636,2420,733],{"class":713},[636,2422,2423],{"class":645},"Pass a positive integer in cents",[636,2425,783],{"class":713},[636,2427,1202],{"class":713},[636,2429,2430,2433],{"class":638,"line":1294},[636,2431,2432],{"class":713},"      }",[636,2434,795],{"class":764},[636,2436,2437],{"class":638,"line":1333},[636,2438,2439],{"class":713},"    }\n",[636,2441,2442],{"class":638,"line":1339},[636,2443,745],{"emptyLinePlaceholder":744},[636,2445,2446,2448,2450,2452],{"class":638,"line":1357},[636,2447,1128],{"class":717},[636,2449,857],{"class":713},[636,2451,1557],{"class":751},[636,2453,1560],{"class":764},[636,2455,2456,2458,2460,2462,2464,2466,2468,2471,2473,2475,2477],{"class":638,"line":1394},[636,2457,1157],{"class":709},[636,2459,907],{"class":717},[636,2461,857],{"class":713},[636,2463,912],{"class":751},[636,2465,755],{"class":764},[636,2467,865],{"class":713},[636,2469,2470],{"class":764}," success",[636,2472,768],{"class":713},[636,2474,925],{"class":924},[636,2476,727],{"class":713},[636,2478,795],{"class":764},[636,2480,2481,2484,2487,2489,2492,2494],{"class":638,"line":1399},[636,2482,2483],{"class":713},"  }",[636,2485,2486],{"class":709}," catch",[636,2488,820],{"class":764},[636,2490,2491],{"class":717},"error",[636,2493,1379],{"class":764},[636,2495,758],{"class":713},[636,2497,2498,2500,2502,2504,2506,2508,2511,2514,2517,2520,2523,2525,2527,2529,2532,2534,2536],{"class":638,"line":1404},[636,2499,1128],{"class":717},[636,2501,857],{"class":713},[636,2503,2491],{"class":751},[636,2505,755],{"class":764},[636,2507,2491],{"class":717},[636,2509,2510],{"class":713}," instanceof",[636,2512,2513],{"class":642}," Error",[636,2515,2516],{"class":713}," ?",[636,2518,2519],{"class":717}," error",[636,2521,2522],{"class":713}," :",[636,2524,1752],{"class":713},[636,2526,2513],{"class":751},[636,2528,755],{"class":764},[636,2530,2531],{"class":751},"String",[636,2533,755],{"class":764},[636,2535,2491],{"class":717},[636,2537,2538],{"class":764},")))\n",[636,2540,2542,2544,2546,2548],{"class":638,"line":2541},24,[636,2543,1128],{"class":717},[636,2545,857],{"class":713},[636,2547,1557],{"class":751},[636,2549,1560],{"class":764},[636,2551,2553],{"class":638,"line":2552},25,[636,2554,745],{"emptyLinePlaceholder":744},[636,2556,2558,2560,2563,2565,2567,2569,2571],{"class":638,"line":2557},26,[636,2559,2275],{"class":816},[636,2561,2562],{"class":717}," parsed",[636,2564,1310],{"class":713},[636,2566,2158],{"class":751},[636,2568,755],{"class":764},[636,2570,2491],{"class":717},[636,2572,795],{"class":764},[636,2574,2576,2578,2580,2582,2584,2586],{"class":638,"line":2575},27,[636,2577,1157],{"class":709},[636,2579,907],{"class":717},[636,2581,857],{"class":713},[636,2583,912],{"class":751},[636,2585,755],{"class":764},[636,2587,758],{"class":713},[636,2589,2591,2594,2596,2598,2600,2603],{"class":638,"line":2590},28,[636,2592,2593],{"class":764},"      message",[636,2595,768],{"class":713},[636,2597,2562],{"class":717},[636,2599,857],{"class":713},[636,2601,2602],{"class":717},"message",[636,2604,1202],{"class":713},[636,2606,2608,2611,2613,2615,2617,2620],{"class":638,"line":2607},29,[636,2609,2610],{"class":764},"      why",[636,2612,768],{"class":713},[636,2614,2562],{"class":717},[636,2616,857],{"class":713},[636,2618,2619],{"class":717},"why",[636,2621,1202],{"class":713},[636,2623,2625,2628,2630,2632,2634,2637],{"class":638,"line":2624},30,[636,2626,2627],{"class":764},"      fix",[636,2629,768],{"class":713},[636,2631,2562],{"class":717},[636,2633,857],{"class":713},[636,2635,2636],{"class":717},"fix",[636,2638,1202],{"class":713},[636,2640,2642,2645,2647,2650,2652,2654,2656,2659,2661],{"class":638,"line":2641},31,[636,2643,2644],{"class":713},"    },",[636,2646,714],{"class":713},[636,2648,2649],{"class":764}," status",[636,2651,768],{"class":713},[636,2653,2562],{"class":717},[636,2655,857],{"class":713},[636,2657,2658],{"class":717},"status",[636,2660,727],{"class":713},[636,2662,795],{"class":764},[636,2664,2666],{"class":638,"line":2665},32,[636,2667,2668],{"class":713},"  }\n",[636,2670,2672,2674],{"class":638,"line":2671},33,[636,2673,792],{"class":713},[636,2675,795],{"class":717},[614,2677,504],{"id":2678},"configuration",[540,2680,2681,2682,2685,2686,2689],{},"See the ",[603,2683,2684],{"href":505},"Configuration reference"," for all available options (",[544,2687,2688],{},"initLogger",", middleware options, sampling, silent mode, etc.).",[614,2691,2693],{"id":2692},"drain-enrichers","Drain & Enrichers",[540,2695,2696,2697,2699],{},"Configure drain and enrichers via ",[544,2698,752],{}," options:",[626,2701,2703],{"className":699,"code":2702,"filename":701,"language":702,"meta":632,"style":632},"import { initWorkersLogger, createWorkersLogger } from 'evlog\u002Fworkers'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createUserAgentEnricher } from 'evlog\u002Fenrichers'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\nimport type { DrainContext } from 'evlog'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n})\nconst drain = pipeline(createAxiomDrain())\nconst userAgent = createUserAgentEnricher()\n\ninitWorkersLogger({\n  env: { service: 'my-worker' },\n  drain,\n  enrich: (ctx) => {\n    userAgent(ctx)\n  },\n})\n",[544,2704,2705,2728,2746,2766,2786,2808,2812,2838,2867,2873,2893,2906,2910,2918,2938,2945,2962,2973,2977],{"__ignoreMap":632},[636,2706,2707,2709,2711,2713,2715,2718,2720,2722,2724,2726],{"class":638,"line":639},[636,2708,710],{"class":709},[636,2710,714],{"class":713},[636,2712,718],{"class":717},[636,2714,721],{"class":713},[636,2716,2717],{"class":717}," createWorkersLogger",[636,2719,727],{"class":713},[636,2721,730],{"class":709},[636,2723,733],{"class":713},[636,2725,546],{"class":645},[636,2727,738],{"class":713},[636,2729,2730,2732,2734,2736,2738,2740,2742,2744],{"class":638,"line":741},[636,2731,710],{"class":709},[636,2733,714],{"class":713},[636,2735,1034],{"class":717},[636,2737,727],{"class":713},[636,2739,730],{"class":709},[636,2741,733],{"class":713},[636,2743,1043],{"class":645},[636,2745,738],{"class":713},[636,2747,2748,2750,2752,2755,2757,2759,2761,2764],{"class":638,"line":748},[636,2749,710],{"class":709},[636,2751,714],{"class":713},[636,2753,2754],{"class":717}," createUserAgentEnricher",[636,2756,727],{"class":713},[636,2758,730],{"class":709},[636,2760,733],{"class":713},[636,2762,2763],{"class":645},"evlog\u002Fenrichers",[636,2765,738],{"class":713},[636,2767,2768,2770,2772,2775,2777,2779,2781,2784],{"class":638,"line":761},[636,2769,710],{"class":709},[636,2771,714],{"class":713},[636,2773,2774],{"class":717}," createDrainPipeline",[636,2776,727],{"class":713},[636,2778,730],{"class":709},[636,2780,733],{"class":713},[636,2782,2783],{"class":645},"evlog\u002Fpipeline",[636,2785,738],{"class":713},[636,2787,2788,2790,2793,2795,2798,2800,2802,2804,2806],{"class":638,"line":789},[636,2789,710],{"class":709},[636,2791,2792],{"class":709}," type",[636,2794,714],{"class":713},[636,2796,2797],{"class":717}," DrainContext",[636,2799,727],{"class":713},[636,2801,730],{"class":709},[636,2803,733],{"class":713},[636,2805,2167],{"class":645},[636,2807,738],{"class":713},[636,2809,2810],{"class":638,"line":798},[636,2811,745],{"emptyLinePlaceholder":744},[636,2813,2814,2817,2820,2823,2825,2828,2831,2834,2836],{"class":638,"line":803},[636,2815,2816],{"class":816},"const",[636,2818,2819],{"class":717}," pipeline ",[636,2821,2822],{"class":713},"=",[636,2824,2774],{"class":751},[636,2826,2827],{"class":713},"\u003C",[636,2829,2830],{"class":642},"DrainContext",[636,2832,2833],{"class":713},">",[636,2835,755],{"class":717},[636,2837,758],{"class":713},[636,2839,2840,2843,2845,2847,2850,2852,2855,2857,2860,2862,2865],{"class":638,"line":851},[636,2841,2842],{"class":764},"  batch",[636,2844,768],{"class":713},[636,2846,714],{"class":713},[636,2848,2849],{"class":764}," size",[636,2851,768],{"class":713},[636,2853,2854],{"class":1375}," 50",[636,2856,721],{"class":713},[636,2858,2859],{"class":764}," intervalMs",[636,2861,768],{"class":713},[636,2863,2864],{"class":1375}," 5000",[636,2866,786],{"class":713},[636,2868,2869,2871],{"class":638,"line":884},[636,2870,792],{"class":713},[636,2872,795],{"class":717},[636,2874,2875,2877,2880,2882,2885,2887,2890],{"class":638,"line":889},[636,2876,2816],{"class":816},[636,2878,2879],{"class":717}," drain ",[636,2881,2822],{"class":713},[636,2883,2884],{"class":751}," pipeline",[636,2886,755],{"class":717},[636,2888,2889],{"class":751},"createAxiomDrain",[636,2891,2892],{"class":717},"())\n",[636,2894,2895,2897,2900,2902,2904],{"class":638,"line":896},[636,2896,2816],{"class":816},[636,2898,2899],{"class":717}," userAgent ",[636,2901,2822],{"class":713},[636,2903,2754],{"class":751},[636,2905,1560],{"class":717},[636,2907,2908],{"class":638,"line":901},[636,2909,745],{"emptyLinePlaceholder":744},[636,2911,2912,2914,2916],{"class":638,"line":932},[636,2913,752],{"class":751},[636,2915,755],{"class":717},[636,2917,758],{"class":713},[636,2919,2920,2922,2924,2926,2928,2930,2932,2934,2936],{"class":638,"line":1227},[636,2921,765],{"class":764},[636,2923,768],{"class":713},[636,2925,714],{"class":713},[636,2927,773],{"class":764},[636,2929,768],{"class":713},[636,2931,733],{"class":713},[636,2933,780],{"class":645},[636,2935,783],{"class":713},[636,2937,786],{"class":713},[636,2939,2940,2943],{"class":638,"line":1263},[636,2941,2942],{"class":717},"  drain",[636,2944,1202],{"class":713},[636,2946,2947,2950,2952,2954,2956,2958,2960],{"class":638,"line":1275},[636,2948,2949],{"class":751},"  enrich",[636,2951,768],{"class":713},[636,2953,820],{"class":713},[636,2955,1285],{"class":823},[636,2957,842],{"class":713},[636,2959,845],{"class":816},[636,2961,848],{"class":713},[636,2963,2964,2967,2969,2971],{"class":638,"line":1294},[636,2965,2966],{"class":751},"    userAgent",[636,2968,755],{"class":764},[636,2970,1285],{"class":717},[636,2972,795],{"class":764},[636,2974,2975],{"class":638,"line":1333},[636,2976,1182],{"class":713},[636,2978,2979,2981],{"class":638,"line":1339},[636,2980,792],{"class":713},[636,2982,795],{"class":717},[1592,2984,2681,2985,1597,2987,2989],{"color":1594,"icon":13},[603,2986,138],{"href":143},[603,2988,431],{"href":432}," docs for all available drain adapters and enrichers.",[614,2991,2993],{"id":2992},"wrangler-configuration","Wrangler Configuration",[540,2995,2996],{},"Disable Cloudflare's default invocation logs to avoid duplicates when using evlog:",[626,2998,3003],{"className":2999,"code":3000,"filename":3001,"language":3002,"meta":632,"style":632},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[observability]\nenabled = false\n","wrangler.toml","toml",[544,3004,3005,3016],{"__ignoreMap":632},[636,3006,3007,3010,3013],{"class":638,"line":639},[636,3008,3009],{"class":713},"[",[636,3011,3012],{"class":642},"observability",[636,3014,3015],{"class":713},"]\n",[636,3017,3018,3021,3023],{"class":638,"line":741},[636,3019,3020],{"class":717},"enabled ",[636,3022,2822],{"class":713},[636,3024,3025],{"class":924}," false\n",[614,3027,3029],{"id":3028},"run-locally","Run Locally",[626,3031,3034],{"className":628,"code":3032,"filename":3033,"language":631,"meta":632,"style":632},"wrangler dev\n","Terminal",[544,3035,3036],{"__ignoreMap":632},[636,3037,3038,3041],{"class":638,"line":639},[636,3039,3040],{"class":642},"wrangler",[636,3042,3043],{"class":645}," dev\n",[614,3045,3047],{"id":3046},"next-steps","Next Steps",[575,3049,3050,3055,3060,3065],{},[578,3051,3052,3054],{},[603,3053,46],{"href":47},": Design comprehensive events with context layering",[578,3056,3057,3059],{},[603,3058,138],{"href":143},": Send logs to Axiom, Sentry, PostHog, and more",[578,3061,3062,3064],{},[603,3063,61],{"href":62},": Control log volume with head and tail sampling",[578,3066,3067,3069,3070,977,3072,3074,3075,3078],{},[603,3068,51],{"href":52},": Throw errors with ",[544,3071,2619],{},[544,3073,2636],{},", and ",[544,3076,3077],{},"link"," fields",[3080,3081,3082],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":632,"searchDepth":741,"depth":741,"links":3084},[3085,3091,3092,3093,3094,3095,3096,3097],{"id":616,"depth":741,"text":25,"children":3086},[3087,3088,3089,3090],{"id":620,"depth":748,"text":621},{"id":695,"depth":748,"text":696},{"id":993,"depth":748,"text":336},{"id":1409,"depth":748,"text":1410},{"id":1633,"depth":741,"text":46},{"id":2129,"depth":741,"text":2130},{"id":2678,"depth":741,"text":504},{"id":2692,"depth":741,"text":2693},{"id":2992,"depth":741,"text":2993},{"id":3028,"depth":741,"text":3029},{"id":3046,"depth":741,"text":3047},"Wide events, structured errors, and logging in Cloudflare Workers and Durable Objects.","md",null,{},{"title":285,"icon":288},{"title":285,"description":3098},"WhCm-42XY1PotR-dnN0wg3jxFa6xlaABM3gQdunmmwQ",[3106,3108],{"title":280,"path":281,"stem":282,"description":3107,"icon":283,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in React Router applications.",{"title":290,"path":291,"stem":292,"description":3109,"icon":74,"children":-1},"Use evlog in standalone TypeScript scripts, CLI tools, queues, cron jobs, and any TypeScript process.",1786743659313]