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