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