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