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