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