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