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