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