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