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