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