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