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