[{"data":1,"prerenderedAt":2441},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-cloudflare-workers":464,"-integrate-frameworks-cloudflare-workers-surround":2436},[4,30,80,245,379,434],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,369,374],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":284,"icon":315,"path":349,"stem":350,"children":351,"page":29},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F4.telemetry",[352,355,360,365],{"title":36,"path":353,"stem":354,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","4.use-cases\u002F4.telemetry\u002F01.overview",{"title":356,"path":357,"stem":358,"icon":359},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","4.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":361,"path":362,"stem":363,"icon":364},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","4.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":366,"path":367,"stem":368,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","4.use-cases\u002F4.telemetry\u002F04.reference",{"title":370,"path":371,"stem":372,"icon":373},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":375,"path":376,"stem":377,"icon":378},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":380,"path":381,"stem":382,"children":383,"page":29},"Extend","\u002Fextend","5.extend",[384,388,393,398,403,407,411,415,419,424,429],{"title":36,"path":385,"stem":386,"icon":387},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":389,"path":390,"stem":391,"icon":392},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":394,"path":395,"stem":396,"icon":397},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":399,"path":400,"stem":401,"icon":402},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":404,"stem":405,"icon":406},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":408,"path":409,"stem":410,"icon":387},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":412,"path":413,"stem":414,"icon":373},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":416,"path":417,"stem":418,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":420,"path":421,"stem":422,"icon":423},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":425,"path":426,"stem":427,"icon":428},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":430,"path":431,"stem":432,"icon":433},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":366,"path":435,"stem":436,"children":437,"page":29},"\u002Freference","6.reference",[438,443,446,451,455,460],{"title":439,"path":440,"stem":441,"icon":442},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":444,"stem":445,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":447,"path":448,"stem":449,"icon":450},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":452,"path":453,"stem":454,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":456,"path":457,"stem":458,"icon":459},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":461,"path":462,"stem":463,"icon":373},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":465,"title":222,"body":466,"description":2429,"extension":2430,"links":2431,"meta":2432,"navigation":2433,"path":223,"seo":2434,"stem":224,"__hash__":2435},"docs\u002F3.integrate\u002Fframeworks\u002F12.cloudflare-workers.md",{"type":467,"value":468,"toc":2416},"minimark",[469,482,531,535,540,611,615,868,899,916,945,948,951,1385,1451,1455,1462,2005,2008,2019,2023,2029,2316,2324,2328,2331,2360,2364,2378,2382,2412],[470,471,472,473,477,478,481],"p",{},"The ",[474,475,476],"code",{},"evlog\u002Fworkers"," adapter provides factory functions for creating request-scoped loggers with Cloudflare-specific context. Unlike framework integrations, Workers require manual ",[474,479,480],{},"log.emit()"," calls since there is no middleware lifecycle to hook into.",[483,484,487,490,517],"prompt",{":actions":485,"description":486,"icon":225},"[\"copy\",\"cursor\",\"claude\"]","Set up evlog in my Cloudflare Worker",[470,488,489],{},"Set up evlog in my Cloudflare Worker.",[491,492,493,497,500,503,511,514],"ul",{},[494,495,496],"li",{},"Install evlog: pnpm add evlog",[494,498,499],{},"Import initWorkersLogger and defineWorkerFetch from 'evlog\u002Fworkers'",[494,501,502],{},"Call initWorkersLogger({ env: { service: 'my-worker' } }) at the top level",[494,504,505,506,510],{},"In the fetch handler, use ",[507,508,509],"strong",{},"defineWorkerFetch"," (recommended) or createWorkersLogger(request, { executionCtx: ctx })",[494,512,513],{},"Use log.set() to accumulate context throughout the request",[494,515,516],{},"Call log.emit() manually before returning the response (no middleware lifecycle)",[470,518,519,520,526,527],{},"Docs: ",[521,522,523],"a",{"href":523,"rel":524},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers",[525],"nofollow","\nAdapters: ",[521,528,529],{"href":529,"rel":530},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[525],[532,533,25],"h2",{"id":534},"quick-start",[536,537,539],"h3",{"id":538},"_1-install","1. Install",[541,542,543,568,582,596],"code-group",{},[544,545,551],"pre",{"className":546,"code":547,"filename":548,"language":549,"meta":550,"style":550},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[474,552,553],{"__ignoreMap":550},[554,555,558,561,565],"span",{"class":556,"line":557},"line",1,[554,559,548],{"class":560},"sBMFI",[554,562,564],{"class":563},"sfazB"," add",[554,566,567],{"class":563}," evlog\n",[544,569,572],{"className":546,"code":570,"filename":571,"language":549,"meta":550,"style":550},"bun add evlog\n","bun",[474,573,574],{"__ignoreMap":550},[554,575,576,578,580],{"class":556,"line":557},[554,577,571],{"class":560},[554,579,564],{"class":563},[554,581,567],{"class":563},[544,583,586],{"className":546,"code":584,"filename":585,"language":549,"meta":550,"style":550},"yarn add evlog\n","yarn",[474,587,588],{"__ignoreMap":550},[554,589,590,592,594],{"class":556,"line":557},[554,591,585],{"class":560},[554,593,564],{"class":563},[554,595,567],{"class":563},[544,597,600],{"className":546,"code":598,"filename":599,"language":549,"meta":550,"style":550},"npm install evlog\n","npm",[474,601,602],{"__ignoreMap":550},[554,603,604,606,609],{"class":556,"line":557},[554,605,599],{"class":560},[554,607,608],{"class":563}," install",[554,610,567],{"class":563},[536,612,614],{"id":613},"_2-initialize-and-create-request-loggers","2. Initialize and create request loggers",[544,616,621],{"className":617,"code":618,"filename":619,"language":620,"meta":550,"style":550},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineWorkerFetch, initWorkersLogger } from 'evlog\u002Fworkers'\n\ninitWorkersLogger({\n  env: { service: 'my-worker' },\n})\n\nexport default defineWorkerFetch(async (request, _env, _ctx, log) => {\n  log.set({ action: 'handle_request' })\n\n  \u002F\u002F ... your handler logic\n\n  log.emit()\n  return Response.json({ ok: true })\n})\n","src\u002Fworker.ts","typescript",[474,622,623,657,664,677,705,714,719,767,800,805,812,817,830,861],{"__ignoreMap":550},[554,624,625,629,633,637,640,643,646,649,652,654],{"class":556,"line":557},[554,626,628],{"class":627},"s7zQu","import",[554,630,632],{"class":631},"sMK4o"," {",[554,634,636],{"class":635},"sTEyZ"," defineWorkerFetch",[554,638,639],{"class":631},",",[554,641,642],{"class":635}," initWorkersLogger",[554,644,645],{"class":631}," }",[554,647,648],{"class":627}," from",[554,650,651],{"class":631}," '",[554,653,476],{"class":563},[554,655,656],{"class":631},"'\n",[554,658,660],{"class":556,"line":659},2,[554,661,663],{"emptyLinePlaceholder":662},true,"\n",[554,665,667,671,674],{"class":556,"line":666},3,[554,668,670],{"class":669},"s2Zo4","initWorkersLogger",[554,672,673],{"class":635},"(",[554,675,676],{"class":631},"{\n",[554,678,680,684,687,689,692,694,696,699,702],{"class":556,"line":679},4,[554,681,683],{"class":682},"swJcz","  env",[554,685,686],{"class":631},":",[554,688,632],{"class":631},[554,690,691],{"class":682}," service",[554,693,686],{"class":631},[554,695,651],{"class":631},[554,697,698],{"class":563},"my-worker",[554,700,701],{"class":631},"'",[554,703,704],{"class":631}," },\n",[554,706,708,711],{"class":556,"line":707},5,[554,709,710],{"class":631},"}",[554,712,713],{"class":635},")\n",[554,715,717],{"class":556,"line":716},6,[554,718,663],{"emptyLinePlaceholder":662},[554,720,722,725,728,730,732,736,739,743,745,748,750,753,755,758,761,764],{"class":556,"line":721},7,[554,723,724],{"class":627},"export",[554,726,727],{"class":627}," default",[554,729,636],{"class":669},[554,731,673],{"class":635},[554,733,735],{"class":734},"spNyl","async",[554,737,738],{"class":631}," (",[554,740,742],{"class":741},"sHdIc","request",[554,744,639],{"class":631},[554,746,747],{"class":741}," _env",[554,749,639],{"class":631},[554,751,752],{"class":741}," _ctx",[554,754,639],{"class":631},[554,756,757],{"class":741}," log",[554,759,760],{"class":631},")",[554,762,763],{"class":734}," =>",[554,765,766],{"class":631}," {\n",[554,768,770,773,776,779,781,784,787,789,791,794,796,798],{"class":556,"line":769},8,[554,771,772],{"class":635},"  log",[554,774,775],{"class":631},".",[554,777,778],{"class":669},"set",[554,780,673],{"class":682},[554,782,783],{"class":631},"{",[554,785,786],{"class":682}," action",[554,788,686],{"class":631},[554,790,651],{"class":631},[554,792,793],{"class":563},"handle_request",[554,795,701],{"class":631},[554,797,645],{"class":631},[554,799,713],{"class":682},[554,801,803],{"class":556,"line":802},9,[554,804,663],{"emptyLinePlaceholder":662},[554,806,808],{"class":556,"line":807},10,[554,809,811],{"class":810},"sHwdD","  \u002F\u002F ... your handler logic\n",[554,813,815],{"class":556,"line":814},11,[554,816,663],{"emptyLinePlaceholder":662},[554,818,820,822,824,827],{"class":556,"line":819},12,[554,821,772],{"class":635},[554,823,775],{"class":631},[554,825,826],{"class":669},"emit",[554,828,829],{"class":682},"()\n",[554,831,833,836,839,841,844,846,848,851,853,857,859],{"class":556,"line":832},13,[554,834,835],{"class":627},"  return",[554,837,838],{"class":635}," Response",[554,840,775],{"class":631},[554,842,843],{"class":669},"json",[554,845,673],{"class":682},[554,847,783],{"class":631},[554,849,850],{"class":682}," ok",[554,852,686],{"class":631},[554,854,856],{"class":855},"sfNiH"," true",[554,858,645],{"class":631},[554,860,713],{"class":682},[554,862,864,866],{"class":556,"line":863},14,[554,865,710],{"class":631},[554,867,713],{"class":635},[470,869,870,872,873,876,877,880,881,886,887,890,891,894,895,898],{},[474,871,509],{}," passes ",[474,874,875],{},"ExecutionContext"," into ",[474,878,879],{},"createWorkersLogger"," for you, so async ",[507,882,883],{},[474,884,885],{},"drain"," calls (PostHog, Axiom, …) stay alive via ",[474,888,889],{},"waitUntil"," after the response is returned. Use raw ",[474,892,893],{},"export default { fetch }"," + ",[474,896,897],{},"createWorkersLogger(request, { executionCtx: ctx })"," only if you prefer not to use the wrapper.",[470,900,901,903,904,907,908,911,912,915],{},[474,902,879],{}," still auto-extracts ",[474,905,906],{},"method",", ",[474,909,910],{},"path",", and ",[474,913,914],{},"cf-ray"," from the request.",[917,918,920,921,923,924,928,929,931,932,934,935,938,939,942,943,775],"callout",{"color":919,"icon":13},"info","You must call ",[474,922,480],{}," manually before returning a response. Workers don't have a request lifecycle hook to auto-emit. With ",[507,925,926],{},[474,927,509],{},", async ",[474,930,885],{}," work is tied to ",[474,933,889],{}," automatically; with a raw ",[474,936,937],{},"{ fetch }"," handler, pass ",[474,940,941],{},"{ executionCtx: ctx }"," to ",[474,944,879],{},[532,946,46],{"id":947},"wide-events",[470,949,950],{},"Build up context progressively, then emit at the end:",[544,952,954],{"className":617,"code":953,"filename":619,"language":620,"meta":550,"style":550},"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",[474,955,956,978,982,990,1010,1016,1020,1055,1083,1087,1115,1119,1192,1242,1246,1300,1337,1342,1353,1378],{"__ignoreMap":550},[554,957,958,960,962,964,966,968,970,972,974,976],{"class":556,"line":557},[554,959,628],{"class":627},[554,961,632],{"class":631},[554,963,636],{"class":635},[554,965,639],{"class":631},[554,967,642],{"class":635},[554,969,645],{"class":631},[554,971,648],{"class":627},[554,973,651],{"class":631},[554,975,476],{"class":563},[554,977,656],{"class":631},[554,979,980],{"class":556,"line":659},[554,981,663],{"emptyLinePlaceholder":662},[554,983,984,986,988],{"class":556,"line":666},[554,985,670],{"class":669},[554,987,673],{"class":635},[554,989,676],{"class":631},[554,991,992,994,996,998,1000,1002,1004,1006,1008],{"class":556,"line":679},[554,993,683],{"class":682},[554,995,686],{"class":631},[554,997,632],{"class":631},[554,999,691],{"class":682},[554,1001,686],{"class":631},[554,1003,651],{"class":631},[554,1005,698],{"class":563},[554,1007,701],{"class":631},[554,1009,704],{"class":631},[554,1011,1012,1014],{"class":556,"line":707},[554,1013,710],{"class":631},[554,1015,713],{"class":635},[554,1017,1018],{"class":556,"line":716},[554,1019,663],{"emptyLinePlaceholder":662},[554,1021,1022,1024,1026,1028,1030,1032,1034,1036,1038,1041,1043,1045,1047,1049,1051,1053],{"class":556,"line":721},[554,1023,724],{"class":627},[554,1025,727],{"class":627},[554,1027,636],{"class":669},[554,1029,673],{"class":635},[554,1031,735],{"class":734},[554,1033,738],{"class":631},[554,1035,742],{"class":741},[554,1037,639],{"class":631},[554,1039,1040],{"class":741}," env",[554,1042,639],{"class":631},[554,1044,752],{"class":741},[554,1046,639],{"class":631},[554,1048,757],{"class":741},[554,1050,760],{"class":631},[554,1052,763],{"class":734},[554,1054,766],{"class":631},[554,1056,1057,1060,1063,1066,1069,1072,1074,1076,1078,1081],{"class":556,"line":769},[554,1058,1059],{"class":734},"  const",[554,1061,1062],{"class":635}," url",[554,1064,1065],{"class":631}," =",[554,1067,1068],{"class":631}," new",[554,1070,1071],{"class":669}," URL",[554,1073,673],{"class":682},[554,1075,742],{"class":635},[554,1077,775],{"class":631},[554,1079,1080],{"class":635},"url",[554,1082,713],{"class":682},[554,1084,1085],{"class":556,"line":802},[554,1086,663],{"emptyLinePlaceholder":662},[554,1088,1089,1091,1093,1095,1097,1099,1102,1104,1106,1108,1111,1113],{"class":556,"line":807},[554,1090,772],{"class":635},[554,1092,775],{"class":631},[554,1094,778],{"class":669},[554,1096,673],{"class":682},[554,1098,783],{"class":631},[554,1100,1101],{"class":682}," route",[554,1103,686],{"class":631},[554,1105,1062],{"class":635},[554,1107,775],{"class":631},[554,1109,1110],{"class":635},"pathname",[554,1112,645],{"class":631},[554,1114,713],{"class":682},[554,1116,1117],{"class":556,"line":814},[554,1118,663],{"emptyLinePlaceholder":662},[554,1120,1121,1123,1126,1128,1131,1133,1135,1138,1140,1143,1145,1147,1150,1152,1154,1156,1159,1161,1163,1165,1168,1170,1173,1175,1177,1180,1182,1185,1187,1190],{"class":556,"line":819},[554,1122,1059],{"class":734},[554,1124,1125],{"class":635}," user",[554,1127,1065],{"class":631},[554,1129,1130],{"class":627}," await",[554,1132,1040],{"class":635},[554,1134,775],{"class":631},[554,1136,1137],{"class":635},"DB",[554,1139,775],{"class":631},[554,1141,1142],{"class":669},"prepare",[554,1144,673],{"class":682},[554,1146,701],{"class":631},[554,1148,1149],{"class":563},"SELECT * FROM users WHERE id = ?",[554,1151,701],{"class":631},[554,1153,760],{"class":682},[554,1155,775],{"class":631},[554,1157,1158],{"class":669},"bind",[554,1160,673],{"class":682},[554,1162,1080],{"class":635},[554,1164,775],{"class":631},[554,1166,1167],{"class":635},"searchParams",[554,1169,775],{"class":631},[554,1171,1172],{"class":669},"get",[554,1174,673],{"class":682},[554,1176,701],{"class":631},[554,1178,1179],{"class":563},"userId",[554,1181,701],{"class":631},[554,1183,1184],{"class":682},"))",[554,1186,775],{"class":631},[554,1188,1189],{"class":669},"first",[554,1191,829],{"class":682},[554,1193,1194,1196,1198,1200,1202,1204,1206,1208,1210,1213,1215,1217,1219,1222,1224,1227,1229,1231,1233,1236,1238,1240],{"class":556,"line":832},[554,1195,772],{"class":635},[554,1197,775],{"class":631},[554,1199,778],{"class":669},[554,1201,673],{"class":682},[554,1203,783],{"class":631},[554,1205,1125],{"class":682},[554,1207,686],{"class":631},[554,1209,632],{"class":631},[554,1211,1212],{"class":682}," id",[554,1214,686],{"class":631},[554,1216,1125],{"class":635},[554,1218,775],{"class":631},[554,1220,1221],{"class":635},"id",[554,1223,639],{"class":631},[554,1225,1226],{"class":682}," plan",[554,1228,686],{"class":631},[554,1230,1125],{"class":635},[554,1232,775],{"class":631},[554,1234,1235],{"class":635},"plan",[554,1237,645],{"class":631},[554,1239,645],{"class":631},[554,1241,713],{"class":682},[554,1243,1244],{"class":556,"line":863},[554,1245,663],{"emptyLinePlaceholder":662},[554,1247,1249,1251,1254,1256,1258,1260,1262,1264,1266,1268,1270,1272,1275,1277,1279,1281,1283,1285,1288,1290,1292,1294,1296,1298],{"class":556,"line":1248},15,[554,1250,1059],{"class":734},[554,1252,1253],{"class":635}," orders",[554,1255,1065],{"class":631},[554,1257,1130],{"class":627},[554,1259,1040],{"class":635},[554,1261,775],{"class":631},[554,1263,1137],{"class":635},[554,1265,775],{"class":631},[554,1267,1142],{"class":669},[554,1269,673],{"class":682},[554,1271,701],{"class":631},[554,1273,1274],{"class":563},"SELECT COUNT(*) as count FROM orders WHERE user_id = ?",[554,1276,701],{"class":631},[554,1278,760],{"class":682},[554,1280,775],{"class":631},[554,1282,1158],{"class":669},[554,1284,673],{"class":682},[554,1286,1287],{"class":635},"user",[554,1289,775],{"class":631},[554,1291,1221],{"class":635},[554,1293,760],{"class":682},[554,1295,775],{"class":631},[554,1297,1189],{"class":669},[554,1299,829],{"class":682},[554,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1322,1324,1326,1328,1331,1333,1335],{"class":556,"line":1302},16,[554,1304,772],{"class":635},[554,1306,775],{"class":631},[554,1308,778],{"class":669},[554,1310,673],{"class":682},[554,1312,783],{"class":631},[554,1314,1253],{"class":682},[554,1316,686],{"class":631},[554,1318,632],{"class":631},[554,1320,1321],{"class":682}," count",[554,1323,686],{"class":631},[554,1325,1253],{"class":635},[554,1327,775],{"class":631},[554,1329,1330],{"class":635},"count",[554,1332,645],{"class":631},[554,1334,645],{"class":631},[554,1336,713],{"class":682},[554,1338,1340],{"class":556,"line":1339},17,[554,1341,663],{"emptyLinePlaceholder":662},[554,1343,1345,1347,1349,1351],{"class":556,"line":1344},18,[554,1346,772],{"class":635},[554,1348,775],{"class":631},[554,1350,826],{"class":669},[554,1352,829],{"class":682},[554,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1376],{"class":556,"line":1355},19,[554,1357,835],{"class":627},[554,1359,838],{"class":635},[554,1361,775],{"class":631},[554,1363,843],{"class":669},[554,1365,673],{"class":682},[554,1367,783],{"class":631},[554,1369,1125],{"class":635},[554,1371,639],{"class":631},[554,1373,1253],{"class":635},[554,1375,645],{"class":631},[554,1377,713],{"class":682},[554,1379,1381,1383],{"class":556,"line":1380},20,[554,1382,710],{"class":631},[554,1384,713],{"class":635},[544,1386,1389],{"className":546,"code":1387,"filename":1388,"language":549,"meta":550,"style":550},"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",[474,1390,1391,1402,1417,1430,1440],{"__ignoreMap":550},[554,1392,1393,1396,1399],{"class":556,"line":557},[554,1394,1395],{"class":560},"14:58:15",[554,1397,1398],{"class":563}," INFO",[554,1400,1401],{"class":635}," [my-worker] GET \u002Fapi\u002Fusers 200 in 12ms\n",[554,1403,1404,1407,1410,1413],{"class":556,"line":659},[554,1405,1406],{"class":560},"  ├─",[554,1408,1409],{"class":563}," orders:",[554,1411,1412],{"class":563}," count=",[554,1414,1416],{"class":1415},"sbssI","5\n",[554,1418,1419,1421,1424,1427],{"class":556,"line":666},[554,1420,1406],{"class":560},[554,1422,1423],{"class":563}," user:",[554,1425,1426],{"class":563}," id=usr_123",[554,1428,1429],{"class":563}," plan=pro\n",[554,1431,1432,1434,1437],{"class":556,"line":679},[554,1433,1406],{"class":560},[554,1435,1436],{"class":563}," route:",[554,1438,1439],{"class":563}," \u002Fapi\u002Fusers\n",[554,1441,1442,1445,1448],{"class":556,"line":707},[554,1443,1444],{"class":560},"  └─",[554,1446,1447],{"class":563}," requestId:",[554,1449,1450],{"class":563}," 4a8ff3a8-...\n",[532,1452,1454],{"id":1453},"error-handling","Error Handling",[470,1456,1457,1458,1461],{},"Use ",[474,1459,1460],{},"createError"," for structured errors and handle them with try\u002Fcatch:",[544,1463,1465],{"className":617,"code":1464,"filename":619,"language":620,"meta":550,"style":550},"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",[474,1466,1467,1492,1514,1518,1548,1552,1586,1593,1614,1652,1656,1681,1692,1705,1721,1737,1753,1760,1765,1769,1779,1806,1824,1868,1879,1884,1902,1917,1934,1951,1968,1992,1998],{"__ignoreMap":550},[554,1468,1469,1471,1473,1476,1478,1481,1483,1485,1487,1490],{"class":556,"line":557},[554,1470,628],{"class":627},[554,1472,632],{"class":631},[554,1474,1475],{"class":635}," createError",[554,1477,639],{"class":631},[554,1479,1480],{"class":635}," parseError",[554,1482,645],{"class":631},[554,1484,648],{"class":627},[554,1486,651],{"class":631},[554,1488,1489],{"class":563},"evlog",[554,1491,656],{"class":631},[554,1493,1494,1496,1498,1500,1502,1504,1506,1508,1510,1512],{"class":556,"line":659},[554,1495,628],{"class":627},[554,1497,632],{"class":631},[554,1499,636],{"class":635},[554,1501,639],{"class":631},[554,1503,642],{"class":635},[554,1505,645],{"class":631},[554,1507,648],{"class":627},[554,1509,651],{"class":631},[554,1511,476],{"class":563},[554,1513,656],{"class":631},[554,1515,1516],{"class":556,"line":666},[554,1517,663],{"emptyLinePlaceholder":662},[554,1519,1520,1522,1524,1526,1528,1530,1532,1534,1536,1538,1540,1542,1544,1546],{"class":556,"line":679},[554,1521,670],{"class":669},[554,1523,673],{"class":635},[554,1525,783],{"class":631},[554,1527,1040],{"class":682},[554,1529,686],{"class":631},[554,1531,632],{"class":631},[554,1533,691],{"class":682},[554,1535,686],{"class":631},[554,1537,651],{"class":631},[554,1539,698],{"class":563},[554,1541,701],{"class":631},[554,1543,645],{"class":631},[554,1545,645],{"class":631},[554,1547,713],{"class":635},[554,1549,1550],{"class":556,"line":707},[554,1551,663],{"emptyLinePlaceholder":662},[554,1553,1554,1556,1558,1560,1562,1564,1566,1568,1570,1572,1574,1576,1578,1580,1582,1584],{"class":556,"line":716},[554,1555,724],{"class":627},[554,1557,727],{"class":627},[554,1559,636],{"class":669},[554,1561,673],{"class":635},[554,1563,735],{"class":734},[554,1565,738],{"class":631},[554,1567,742],{"class":741},[554,1569,639],{"class":631},[554,1571,1040],{"class":741},[554,1573,639],{"class":631},[554,1575,752],{"class":741},[554,1577,639],{"class":631},[554,1579,757],{"class":741},[554,1581,760],{"class":631},[554,1583,763],{"class":734},[554,1585,766],{"class":631},[554,1587,1588,1591],{"class":556,"line":721},[554,1589,1590],{"class":627},"  try",[554,1592,766],{"class":631},[554,1594,1595,1598,1601,1603,1605,1608,1610,1612],{"class":556,"line":769},[554,1596,1597],{"class":734},"    const",[554,1599,1600],{"class":635}," body",[554,1602,1065],{"class":631},[554,1604,1130],{"class":627},[554,1606,1607],{"class":635}," request",[554,1609,775],{"class":631},[554,1611,843],{"class":669},[554,1613,829],{"class":682},[554,1615,1616,1619,1621,1623,1625,1627,1630,1632,1634,1637,1639,1641,1643,1646,1648,1650],{"class":556,"line":802},[554,1617,1618],{"class":635},"    log",[554,1620,775],{"class":631},[554,1622,778],{"class":669},[554,1624,673],{"class":682},[554,1626,783],{"class":631},[554,1628,1629],{"class":682}," payment",[554,1631,686],{"class":631},[554,1633,632],{"class":631},[554,1635,1636],{"class":682}," amount",[554,1638,686],{"class":631},[554,1640,1600],{"class":635},[554,1642,775],{"class":631},[554,1644,1645],{"class":635},"amount",[554,1647,645],{"class":631},[554,1649,645],{"class":631},[554,1651,713],{"class":682},[554,1653,1654],{"class":556,"line":807},[554,1655,663],{"emptyLinePlaceholder":662},[554,1657,1658,1661,1663,1666,1668,1670,1673,1676,1679],{"class":556,"line":814},[554,1659,1660],{"class":627},"    if",[554,1662,738],{"class":682},[554,1664,1665],{"class":635},"body",[554,1667,775],{"class":631},[554,1669,1645],{"class":635},[554,1671,1672],{"class":631}," \u003C=",[554,1674,1675],{"class":1415}," 0",[554,1677,1678],{"class":682},") ",[554,1680,676],{"class":631},[554,1682,1683,1686,1688,1690],{"class":556,"line":819},[554,1684,1685],{"class":627},"      throw",[554,1687,1475],{"class":669},[554,1689,673],{"class":682},[554,1691,676],{"class":631},[554,1693,1694,1697,1699,1702],{"class":556,"line":832},[554,1695,1696],{"class":682},"        status",[554,1698,686],{"class":631},[554,1700,1701],{"class":1415}," 400",[554,1703,1704],{"class":631},",\n",[554,1706,1707,1710,1712,1714,1717,1719],{"class":556,"line":863},[554,1708,1709],{"class":682},"        message",[554,1711,686],{"class":631},[554,1713,651],{"class":631},[554,1715,1716],{"class":563},"Invalid payment amount",[554,1718,701],{"class":631},[554,1720,1704],{"class":631},[554,1722,1723,1726,1728,1730,1733,1735],{"class":556,"line":1248},[554,1724,1725],{"class":682},"        why",[554,1727,686],{"class":631},[554,1729,651],{"class":631},[554,1731,1732],{"class":563},"The amount must be a positive number",[554,1734,701],{"class":631},[554,1736,1704],{"class":631},[554,1738,1739,1742,1744,1746,1749,1751],{"class":556,"line":1302},[554,1740,1741],{"class":682},"        fix",[554,1743,686],{"class":631},[554,1745,651],{"class":631},[554,1747,1748],{"class":563},"Pass a positive integer in cents",[554,1750,701],{"class":631},[554,1752,1704],{"class":631},[554,1754,1755,1758],{"class":556,"line":1339},[554,1756,1757],{"class":631},"      }",[554,1759,713],{"class":682},[554,1761,1762],{"class":556,"line":1344},[554,1763,1764],{"class":631},"    }\n",[554,1766,1767],{"class":556,"line":1355},[554,1768,663],{"emptyLinePlaceholder":662},[554,1770,1771,1773,1775,1777],{"class":556,"line":1380},[554,1772,1618],{"class":635},[554,1774,775],{"class":631},[554,1776,826],{"class":669},[554,1778,829],{"class":682},[554,1780,1782,1785,1787,1789,1791,1793,1795,1798,1800,1802,1804],{"class":556,"line":1781},21,[554,1783,1784],{"class":627},"    return",[554,1786,838],{"class":635},[554,1788,775],{"class":631},[554,1790,843],{"class":669},[554,1792,673],{"class":682},[554,1794,783],{"class":631},[554,1796,1797],{"class":682}," success",[554,1799,686],{"class":631},[554,1801,856],{"class":855},[554,1803,645],{"class":631},[554,1805,713],{"class":682},[554,1807,1809,1812,1815,1817,1820,1822],{"class":556,"line":1808},22,[554,1810,1811],{"class":631},"  }",[554,1813,1814],{"class":627}," catch",[554,1816,738],{"class":682},[554,1818,1819],{"class":635},"error",[554,1821,1678],{"class":682},[554,1823,676],{"class":631},[554,1825,1827,1829,1831,1833,1835,1837,1840,1843,1846,1849,1852,1854,1856,1858,1861,1863,1865],{"class":556,"line":1826},23,[554,1828,1618],{"class":635},[554,1830,775],{"class":631},[554,1832,1819],{"class":669},[554,1834,673],{"class":682},[554,1836,1819],{"class":635},[554,1838,1839],{"class":631}," instanceof",[554,1841,1842],{"class":560}," Error",[554,1844,1845],{"class":631}," ?",[554,1847,1848],{"class":635}," error",[554,1850,1851],{"class":631}," :",[554,1853,1068],{"class":631},[554,1855,1842],{"class":669},[554,1857,673],{"class":682},[554,1859,1860],{"class":669},"String",[554,1862,673],{"class":682},[554,1864,1819],{"class":635},[554,1866,1867],{"class":682},")))\n",[554,1869,1871,1873,1875,1877],{"class":556,"line":1870},24,[554,1872,1618],{"class":635},[554,1874,775],{"class":631},[554,1876,826],{"class":669},[554,1878,829],{"class":682},[554,1880,1882],{"class":556,"line":1881},25,[554,1883,663],{"emptyLinePlaceholder":662},[554,1885,1887,1889,1892,1894,1896,1898,1900],{"class":556,"line":1886},26,[554,1888,1597],{"class":734},[554,1890,1891],{"class":635}," parsed",[554,1893,1065],{"class":631},[554,1895,1480],{"class":669},[554,1897,673],{"class":682},[554,1899,1819],{"class":635},[554,1901,713],{"class":682},[554,1903,1905,1907,1909,1911,1913,1915],{"class":556,"line":1904},27,[554,1906,1784],{"class":627},[554,1908,838],{"class":635},[554,1910,775],{"class":631},[554,1912,843],{"class":669},[554,1914,673],{"class":682},[554,1916,676],{"class":631},[554,1918,1920,1923,1925,1927,1929,1932],{"class":556,"line":1919},28,[554,1921,1922],{"class":682},"      message",[554,1924,686],{"class":631},[554,1926,1891],{"class":635},[554,1928,775],{"class":631},[554,1930,1931],{"class":635},"message",[554,1933,1704],{"class":631},[554,1935,1937,1940,1942,1944,1946,1949],{"class":556,"line":1936},29,[554,1938,1939],{"class":682},"      why",[554,1941,686],{"class":631},[554,1943,1891],{"class":635},[554,1945,775],{"class":631},[554,1947,1948],{"class":635},"why",[554,1950,1704],{"class":631},[554,1952,1954,1957,1959,1961,1963,1966],{"class":556,"line":1953},30,[554,1955,1956],{"class":682},"      fix",[554,1958,686],{"class":631},[554,1960,1891],{"class":635},[554,1962,775],{"class":631},[554,1964,1965],{"class":635},"fix",[554,1967,1704],{"class":631},[554,1969,1971,1974,1976,1979,1981,1983,1985,1988,1990],{"class":556,"line":1970},31,[554,1972,1973],{"class":631},"    },",[554,1975,632],{"class":631},[554,1977,1978],{"class":682}," status",[554,1980,686],{"class":631},[554,1982,1891],{"class":635},[554,1984,775],{"class":631},[554,1986,1987],{"class":635},"status",[554,1989,645],{"class":631},[554,1991,713],{"class":682},[554,1993,1995],{"class":556,"line":1994},32,[554,1996,1997],{"class":631},"  }\n",[554,1999,2001,2003],{"class":556,"line":2000},33,[554,2002,710],{"class":631},[554,2004,713],{"class":635},[532,2006,439],{"id":2007},"configuration",[470,2009,2010,2011,2014,2015,2018],{},"See the ",[521,2012,2013],{"href":440},"Configuration reference"," for all available options (",[474,2016,2017],{},"initLogger",", middleware options, sampling, silent mode, etc.).",[532,2020,2022],{"id":2021},"drain-enrichers","Drain & Enrichers",[470,2024,2025,2026,2028],{},"Configure drain and enrichers via ",[474,2027,670],{}," options:",[544,2030,2032],{"className":617,"code":2031,"filename":619,"language":620,"meta":550,"style":550},"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",[474,2033,2034,2057,2077,2097,2117,2139,2143,2169,2198,2204,2224,2237,2241,2249,2269,2276,2294,2305,2310],{"__ignoreMap":550},[554,2035,2036,2038,2040,2042,2044,2047,2049,2051,2053,2055],{"class":556,"line":557},[554,2037,628],{"class":627},[554,2039,632],{"class":631},[554,2041,642],{"class":635},[554,2043,639],{"class":631},[554,2045,2046],{"class":635}," createWorkersLogger",[554,2048,645],{"class":631},[554,2050,648],{"class":627},[554,2052,651],{"class":631},[554,2054,476],{"class":563},[554,2056,656],{"class":631},[554,2058,2059,2061,2063,2066,2068,2070,2072,2075],{"class":556,"line":659},[554,2060,628],{"class":627},[554,2062,632],{"class":631},[554,2064,2065],{"class":635}," createAxiomDrain",[554,2067,645],{"class":631},[554,2069,648],{"class":627},[554,2071,651],{"class":631},[554,2073,2074],{"class":563},"evlog\u002Faxiom",[554,2076,656],{"class":631},[554,2078,2079,2081,2083,2086,2088,2090,2092,2095],{"class":556,"line":666},[554,2080,628],{"class":627},[554,2082,632],{"class":631},[554,2084,2085],{"class":635}," createUserAgentEnricher",[554,2087,645],{"class":631},[554,2089,648],{"class":627},[554,2091,651],{"class":631},[554,2093,2094],{"class":563},"evlog\u002Fenrichers",[554,2096,656],{"class":631},[554,2098,2099,2101,2103,2106,2108,2110,2112,2115],{"class":556,"line":679},[554,2100,628],{"class":627},[554,2102,632],{"class":631},[554,2104,2105],{"class":635}," createDrainPipeline",[554,2107,645],{"class":631},[554,2109,648],{"class":627},[554,2111,651],{"class":631},[554,2113,2114],{"class":563},"evlog\u002Fpipeline",[554,2116,656],{"class":631},[554,2118,2119,2121,2124,2126,2129,2131,2133,2135,2137],{"class":556,"line":707},[554,2120,628],{"class":627},[554,2122,2123],{"class":627}," type",[554,2125,632],{"class":631},[554,2127,2128],{"class":635}," DrainContext",[554,2130,645],{"class":631},[554,2132,648],{"class":627},[554,2134,651],{"class":631},[554,2136,1489],{"class":563},[554,2138,656],{"class":631},[554,2140,2141],{"class":556,"line":716},[554,2142,663],{"emptyLinePlaceholder":662},[554,2144,2145,2148,2151,2154,2156,2159,2162,2165,2167],{"class":556,"line":721},[554,2146,2147],{"class":734},"const",[554,2149,2150],{"class":635}," pipeline ",[554,2152,2153],{"class":631},"=",[554,2155,2105],{"class":669},[554,2157,2158],{"class":631},"\u003C",[554,2160,2161],{"class":560},"DrainContext",[554,2163,2164],{"class":631},">",[554,2166,673],{"class":635},[554,2168,676],{"class":631},[554,2170,2171,2174,2176,2178,2181,2183,2186,2188,2191,2193,2196],{"class":556,"line":769},[554,2172,2173],{"class":682},"  batch",[554,2175,686],{"class":631},[554,2177,632],{"class":631},[554,2179,2180],{"class":682}," size",[554,2182,686],{"class":631},[554,2184,2185],{"class":1415}," 50",[554,2187,639],{"class":631},[554,2189,2190],{"class":682}," intervalMs",[554,2192,686],{"class":631},[554,2194,2195],{"class":1415}," 5000",[554,2197,704],{"class":631},[554,2199,2200,2202],{"class":556,"line":802},[554,2201,710],{"class":631},[554,2203,713],{"class":635},[554,2205,2206,2208,2211,2213,2216,2218,2221],{"class":556,"line":807},[554,2207,2147],{"class":734},[554,2209,2210],{"class":635}," drain ",[554,2212,2153],{"class":631},[554,2214,2215],{"class":669}," pipeline",[554,2217,673],{"class":635},[554,2219,2220],{"class":669},"createAxiomDrain",[554,2222,2223],{"class":635},"())\n",[554,2225,2226,2228,2231,2233,2235],{"class":556,"line":814},[554,2227,2147],{"class":734},[554,2229,2230],{"class":635}," userAgent ",[554,2232,2153],{"class":631},[554,2234,2085],{"class":669},[554,2236,829],{"class":635},[554,2238,2239],{"class":556,"line":819},[554,2240,663],{"emptyLinePlaceholder":662},[554,2242,2243,2245,2247],{"class":556,"line":832},[554,2244,670],{"class":669},[554,2246,673],{"class":635},[554,2248,676],{"class":631},[554,2250,2251,2253,2255,2257,2259,2261,2263,2265,2267],{"class":556,"line":863},[554,2252,683],{"class":682},[554,2254,686],{"class":631},[554,2256,632],{"class":631},[554,2258,691],{"class":682},[554,2260,686],{"class":631},[554,2262,651],{"class":631},[554,2264,698],{"class":563},[554,2266,701],{"class":631},[554,2268,704],{"class":631},[554,2270,2271,2274],{"class":556,"line":1248},[554,2272,2273],{"class":635},"  drain",[554,2275,1704],{"class":631},[554,2277,2278,2281,2283,2285,2288,2290,2292],{"class":556,"line":1302},[554,2279,2280],{"class":669},"  enrich",[554,2282,686],{"class":631},[554,2284,738],{"class":631},[554,2286,2287],{"class":741},"ctx",[554,2289,760],{"class":631},[554,2291,763],{"class":734},[554,2293,766],{"class":631},[554,2295,2296,2299,2301,2303],{"class":556,"line":1339},[554,2297,2298],{"class":669},"    userAgent",[554,2300,673],{"class":682},[554,2302,2287],{"class":635},[554,2304,713],{"class":682},[554,2306,2307],{"class":556,"line":1344},[554,2308,2309],{"class":631},"  },\n",[554,2311,2312,2314],{"class":556,"line":1355},[554,2313,710],{"class":631},[554,2315,713],{"class":635},[917,2317,2010,2318,2320,2321,2323],{"color":919,"icon":13},[521,2319,90],{"href":95}," and ",[521,2322,370],{"href":371}," docs for all available drain adapters and enrichers.",[532,2325,2327],{"id":2326},"wrangler-configuration","Wrangler Configuration",[470,2329,2330],{},"Disable Cloudflare's default invocation logs to avoid duplicates when using evlog:",[544,2332,2337],{"className":2333,"code":2334,"filename":2335,"language":2336,"meta":550,"style":550},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[observability]\nenabled = false\n","wrangler.toml","toml",[474,2338,2339,2350],{"__ignoreMap":550},[554,2340,2341,2344,2347],{"class":556,"line":557},[554,2342,2343],{"class":631},"[",[554,2345,2346],{"class":560},"observability",[554,2348,2349],{"class":631},"]\n",[554,2351,2352,2355,2357],{"class":556,"line":659},[554,2353,2354],{"class":635},"enabled ",[554,2356,2153],{"class":631},[554,2358,2359],{"class":855}," false\n",[532,2361,2363],{"id":2362},"run-locally","Run Locally",[544,2365,2368],{"className":546,"code":2366,"filename":2367,"language":549,"meta":550,"style":550},"wrangler dev\n","Terminal",[474,2369,2370],{"__ignoreMap":550},[554,2371,2372,2375],{"class":556,"line":557},[554,2373,2374],{"class":560},"wrangler",[554,2376,2377],{"class":563}," dev\n",[532,2379,2381],{"id":2380},"next-steps","Next Steps",[491,2383,2384,2389,2394,2399],{},[494,2385,2386,2388],{},[521,2387,46],{"href":47},": Design comprehensive events with context layering",[494,2390,2391,2393],{},[521,2392,90],{"href":95},": Send logs to Axiom, Sentry, PostHog, and more",[494,2395,2396,2398],{},[521,2397,61],{"href":62},": Control log volume with head and tail sampling",[494,2400,2401,2403,2404,907,2406,911,2408,2411],{},[521,2402,51],{"href":52},": Throw errors with ",[474,2405,1948],{},[474,2407,1965],{},[474,2409,2410],{},"link"," fields",[2413,2414,2415],"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":550,"searchDepth":659,"depth":659,"links":2417},[2418,2422,2423,2424,2425,2426,2427,2428],{"id":534,"depth":659,"text":25,"children":2419},[2420,2421],{"id":538,"depth":666,"text":539},{"id":613,"depth":666,"text":614},{"id":947,"depth":659,"text":46},{"id":1453,"depth":659,"text":1454},{"id":2007,"depth":659,"text":439},{"id":2021,"depth":659,"text":2022},{"id":2326,"depth":659,"text":2327},{"id":2362,"depth":659,"text":2363},{"id":2380,"depth":659,"text":2381},"Wide events, structured errors, and logging in Cloudflare Workers and Durable Objects.","md",null,{},{"title":222,"icon":225},{"title":222,"description":2429},"nT3HMRNcQzyOuBCyhV376zEpteZj_op0plKbsgpEq1Y",[2437,2439],{"title":217,"path":218,"stem":219,"description":2438,"icon":220,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in React Router applications.",{"title":227,"path":228,"stem":229,"description":2440,"icon":74,"children":-1},"Use evlog in standalone TypeScript scripts, CLI tools, queues, cron jobs, and any TypeScript process.",1784215255955]