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