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