[{"data":1,"prerenderedAt":3218},["ShallowReactive",2],{"navigation_docs":3,"-integrate-frameworks-hono":439,"-integrate-frameworks-hono-surround":3213},[4,30,80,245,353,408],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":349,"path":350,"stem":351,"icon":352},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":354,"path":355,"stem":356,"children":357,"page":29},"Extend","\u002Fextend","5.extend",[358,362,367,372,377,381,385,389,393,398,403],{"title":36,"path":359,"stem":360,"icon":361},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":363,"path":364,"stem":365,"icon":366},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":368,"path":369,"stem":370,"icon":371},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":373,"path":374,"stem":375,"icon":376},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":378,"stem":379,"icon":380},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":382,"path":383,"stem":384,"icon":361},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":386,"path":387,"stem":388,"icon":352},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":390,"path":391,"stem":392,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":394,"path":395,"stem":396,"icon":397},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":399,"path":400,"stem":401,"icon":402},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":404,"path":405,"stem":406,"icon":407},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":409,"path":410,"stem":411,"children":412,"page":29},"Reference","\u002Freference","6.reference",[413,418,421,426,430,435],{"title":414,"path":415,"stem":416,"icon":417},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":419,"stem":420,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":422,"path":423,"stem":424,"icon":425},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":427,"path":428,"stem":429,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":431,"path":432,"stem":433,"icon":434},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":436,"path":437,"stem":438,"icon":352},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":440,"title":202,"body":441,"description":3204,"extension":3205,"links":3206,"meta":3209,"navigation":3210,"path":203,"seo":3211,"stem":204,"__hash__":3212},"docs\u002F3.integrate\u002Fframeworks\u002F08.hono.md",{"type":442,"value":443,"toc":3184},"minimark",[444,457,510,514,519,608,612,1005,1029,1037,1040,1043,1372,1375,1439,1466,1470,1489,1723,1730,1948,1969,1972,2038,2041,2051,2055,2058,2225,2229,2236,2424,2435,2439,2445,2549,2553,2564,2707,2711,2717,2721,2875,2879,2886,3068,3077,3081,3123,3131,3141,3145,3151,3180],[445,446,447,448,452,453,456],"p",{},"The ",[449,450,451],"code",{},"evlog\u002Fhono"," middleware auto-creates a request-scoped logger accessible via ",[449,454,455],{},"c.get('log')"," and emits a wide event when the response completes.",[458,459,462,465,496],"prompt",{":actions":460,"description":461,"icon":205},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my Hono app",[445,463,464],{},"Set up evlog in my Hono app.",[466,467,468,472,475,478,481,487,490,493],"ul",{},[469,470,471],"li",{},"Install evlog: pnpm add evlog",[469,473,474],{},"Call initLogger({ env: { service: 'my-api' } }) at startup",[469,476,477],{},"Alternatively, use evlog\u002Fvite plugin in vite.config.ts for auto-init (replaces initLogger)",[469,479,480],{},"Import evlog middleware and EvlogVariables type from 'evlog\u002Fhono'",[469,482,483,484],{},"Add app.use(evlog()) and type the app with Hono",[485,486],"evlog-variables",{},[469,488,489],{},"Access the logger via c.get('log') in route handlers",[469,491,492],{},"Use log.set() to accumulate context throughout the request",[469,494,495],{},"Optionally pass drain, enrich, include, and keep options to evlog()",[445,497,498,499,505,506],{},"Docs: ",[500,501,502],"a",{"href":502,"rel":503},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Fhono",[504],"nofollow","\nAdapters: ",[500,507,508],{"href":508,"rel":509},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Foverview",[504],[511,512,25],"h2",{"id":513},"quick-start",[515,516,518],"h3",{"id":517},"_1-install","1. Install",[520,521,522,553,571,589],"code-group",{},[523,524,530],"pre",{"className":525,"code":526,"filename":527,"language":528,"meta":529,"style":529},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog hono @hono\u002Fnode-server\n","pnpm","bash","",[449,531,532],{"__ignoreMap":529},[533,534,537,540,544,547,550],"span",{"class":535,"line":536},"line",1,[533,538,527],{"class":539},"sBMFI",[533,541,543],{"class":542},"sfazB"," add",[533,545,546],{"class":542}," evlog",[533,548,549],{"class":542}," hono",[533,551,552],{"class":542}," @hono\u002Fnode-server\n",[523,554,557],{"className":525,"code":555,"filename":556,"language":528,"meta":529,"style":529},"bun add evlog hono @hono\u002Fnode-server\n","bun",[449,558,559],{"__ignoreMap":529},[533,560,561,563,565,567,569],{"class":535,"line":536},[533,562,556],{"class":539},[533,564,543],{"class":542},[533,566,546],{"class":542},[533,568,549],{"class":542},[533,570,552],{"class":542},[523,572,575],{"className":525,"code":573,"filename":574,"language":528,"meta":529,"style":529},"yarn add evlog hono @hono\u002Fnode-server\n","yarn",[449,576,577],{"__ignoreMap":529},[533,578,579,581,583,585,587],{"class":535,"line":536},[533,580,574],{"class":539},[533,582,543],{"class":542},[533,584,546],{"class":542},[533,586,549],{"class":542},[533,588,552],{"class":542},[523,590,593],{"className":525,"code":591,"filename":592,"language":528,"meta":529,"style":529},"npm install evlog hono @hono\u002Fnode-server\n","npm",[449,594,595],{"__ignoreMap":529},[533,596,597,599,602,604,606],{"class":535,"line":536},[533,598,592],{"class":539},[533,600,601],{"class":542}," install",[533,603,546],{"class":542},[533,605,549],{"class":542},[533,607,552],{"class":542},[515,609,611],{"id":610},"_2-initialize-and-register-the-middleware","2. Initialize and register the middleware",[523,613,618],{"className":614,"code":615,"filename":616,"language":617,"meta":529,"style":529},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { serve } from '@hono\u002Fnode-server'\nimport { Hono } from 'hono'\nimport { initLogger } from 'evlog'\nimport { evlog, type EvlogVariables } from 'evlog\u002Fhono'\n\ninitLogger({\n  env: { service: 'my-api' },\n})\n\nconst app = new Hono\u003CEvlogVariables>()\n\napp.use(evlog())\n\napp.get('\u002Fhealth', (c) => {\n  c.get('log').set({ route: 'health' })\n  return c.json({ ok: true })\n})\n\nserve({ fetch: app.fetch, port: 3000 })\n","src\u002Findex.ts","typescript",[449,619,620,649,670,691,719,726,739,767,776,781,811,816,835,840,877,924,955,962,967],{"__ignoreMap":529},[533,621,622,626,630,634,637,640,643,646],{"class":535,"line":536},[533,623,625],{"class":624},"s7zQu","import",[533,627,629],{"class":628},"sMK4o"," {",[533,631,633],{"class":632},"sTEyZ"," serve",[533,635,636],{"class":628}," }",[533,638,639],{"class":624}," from",[533,641,642],{"class":628}," '",[533,644,645],{"class":542},"@hono\u002Fnode-server",[533,647,648],{"class":628},"'\n",[533,650,652,654,656,659,661,663,665,668],{"class":535,"line":651},2,[533,653,625],{"class":624},[533,655,629],{"class":628},[533,657,658],{"class":632}," Hono",[533,660,636],{"class":628},[533,662,639],{"class":624},[533,664,642],{"class":628},[533,666,667],{"class":542},"hono",[533,669,648],{"class":628},[533,671,673,675,677,680,682,684,686,689],{"class":535,"line":672},3,[533,674,625],{"class":624},[533,676,629],{"class":628},[533,678,679],{"class":632}," initLogger",[533,681,636],{"class":628},[533,683,639],{"class":624},[533,685,642],{"class":628},[533,687,688],{"class":542},"evlog",[533,690,648],{"class":628},[533,692,694,696,698,700,703,706,709,711,713,715,717],{"class":535,"line":693},4,[533,695,625],{"class":624},[533,697,629],{"class":628},[533,699,546],{"class":632},[533,701,702],{"class":628},",",[533,704,705],{"class":624}," type",[533,707,708],{"class":632}," EvlogVariables",[533,710,636],{"class":628},[533,712,639],{"class":624},[533,714,642],{"class":628},[533,716,451],{"class":542},[533,718,648],{"class":628},[533,720,722],{"class":535,"line":721},5,[533,723,725],{"emptyLinePlaceholder":724},true,"\n",[533,727,729,733,736],{"class":535,"line":728},6,[533,730,732],{"class":731},"s2Zo4","initLogger",[533,734,735],{"class":632},"(",[533,737,738],{"class":628},"{\n",[533,740,742,746,749,751,754,756,758,761,764],{"class":535,"line":741},7,[533,743,745],{"class":744},"swJcz","  env",[533,747,748],{"class":628},":",[533,750,629],{"class":628},[533,752,753],{"class":744}," service",[533,755,748],{"class":628},[533,757,642],{"class":628},[533,759,760],{"class":542},"my-api",[533,762,763],{"class":628},"'",[533,765,766],{"class":628}," },\n",[533,768,770,773],{"class":535,"line":769},8,[533,771,772],{"class":628},"}",[533,774,775],{"class":632},")\n",[533,777,779],{"class":535,"line":778},9,[533,780,725],{"emptyLinePlaceholder":724},[533,782,784,788,791,794,797,799,802,805,808],{"class":535,"line":783},10,[533,785,787],{"class":786},"spNyl","const",[533,789,790],{"class":632}," app ",[533,792,793],{"class":628},"=",[533,795,796],{"class":628}," new",[533,798,658],{"class":731},[533,800,801],{"class":628},"\u003C",[533,803,804],{"class":539},"EvlogVariables",[533,806,807],{"class":628},">",[533,809,810],{"class":632},"()\n",[533,812,814],{"class":535,"line":813},11,[533,815,725],{"emptyLinePlaceholder":724},[533,817,819,822,825,828,830,832],{"class":535,"line":818},12,[533,820,821],{"class":632},"app",[533,823,824],{"class":628},".",[533,826,827],{"class":731},"use",[533,829,735],{"class":632},[533,831,688],{"class":731},[533,833,834],{"class":632},"())\n",[533,836,838],{"class":535,"line":837},13,[533,839,725],{"emptyLinePlaceholder":724},[533,841,843,845,847,850,852,854,857,859,861,864,868,871,874],{"class":535,"line":842},14,[533,844,821],{"class":632},[533,846,824],{"class":628},[533,848,849],{"class":731},"get",[533,851,735],{"class":632},[533,853,763],{"class":628},[533,855,856],{"class":542},"\u002Fhealth",[533,858,763],{"class":628},[533,860,702],{"class":628},[533,862,863],{"class":628}," (",[533,865,867],{"class":866},"sHdIc","c",[533,869,870],{"class":628},")",[533,872,873],{"class":786}," =>",[533,875,876],{"class":628}," {\n",[533,878,880,883,885,887,889,891,894,896,898,900,903,905,908,911,913,915,918,920,922],{"class":535,"line":879},15,[533,881,882],{"class":632},"  c",[533,884,824],{"class":628},[533,886,849],{"class":731},[533,888,735],{"class":744},[533,890,763],{"class":628},[533,892,893],{"class":542},"log",[533,895,763],{"class":628},[533,897,870],{"class":744},[533,899,824],{"class":628},[533,901,902],{"class":731},"set",[533,904,735],{"class":744},[533,906,907],{"class":628},"{",[533,909,910],{"class":744}," route",[533,912,748],{"class":628},[533,914,642],{"class":628},[533,916,917],{"class":542},"health",[533,919,763],{"class":628},[533,921,636],{"class":628},[533,923,775],{"class":744},[533,925,927,930,933,935,938,940,942,945,947,951,953],{"class":535,"line":926},16,[533,928,929],{"class":624},"  return",[533,931,932],{"class":632}," c",[533,934,824],{"class":628},[533,936,937],{"class":731},"json",[533,939,735],{"class":744},[533,941,907],{"class":628},[533,943,944],{"class":744}," ok",[533,946,748],{"class":628},[533,948,950],{"class":949},"sfNiH"," true",[533,952,636],{"class":628},[533,954,775],{"class":744},[533,956,958,960],{"class":535,"line":957},17,[533,959,772],{"class":628},[533,961,775],{"class":632},[533,963,965],{"class":535,"line":964},18,[533,966,725],{"emptyLinePlaceholder":724},[533,968,970,973,975,977,980,982,985,987,990,992,995,997,1001,1003],{"class":535,"line":969},19,[533,971,972],{"class":731},"serve",[533,974,735],{"class":632},[533,976,907],{"class":628},[533,978,979],{"class":744}," fetch",[533,981,748],{"class":628},[533,983,984],{"class":632}," app",[533,986,824],{"class":628},[533,988,989],{"class":632},"fetch",[533,991,702],{"class":628},[533,993,994],{"class":744}," port",[533,996,748],{"class":628},[533,998,1000],{"class":999},"sbssI"," 3000",[533,1002,636],{"class":628},[533,1004,775],{"class":632},[1006,1007,1009,1013,1014,1020,1021,1024,1025,1028],"callout",{"color":1008,"icon":425},"info",[1010,1011,1012],"strong",{},"Using Vite?"," The ",[500,1015,1016,1019],{"href":423},[449,1017,1018],{},"evlog\u002Fvite"," plugin"," replaces the ",[449,1022,1023],{},"initLogger()"," call with compile-time auto-initialization, strips ",[449,1026,1027],{},"log.debug()"," from production builds, and injects source locations.",[445,1030,447,1031,1033,1034,1036],{},[449,1032,804],{}," type gives you typed access to ",[449,1035,455],{}," across all route handlers.",[511,1038,46],{"id":1039},"wide-events",[445,1041,1042],{},"Build up context progressively through your handler. One request = one wide event:",[523,1044,1046],{"className":614,"code":1045,"filename":616,"language":617,"meta":529,"style":529},"app.get('\u002Fusers\u002F:id', async (c) => {\n  const log = c.get('log')\n  const userId = c.req.param('id')\n\n  log.set({ user: { id: userId } })\n\n  const user = await db.findUser(userId)\n  log.set({ user: { name: user.name, plan: user.plan } })\n\n  const orders = await db.findOrders(userId)\n  log.set({ orders: { count: orders.length, totalRevenue: sum(orders) } })\n\n  return c.json({ user, orders })\n})\n",[449,1047,1048,1080,1107,1139,1143,1176,1180,1206,1256,1260,1284,1338,1342,1366],{"__ignoreMap":529},[533,1049,1050,1052,1054,1056,1058,1060,1063,1065,1067,1070,1072,1074,1076,1078],{"class":535,"line":536},[533,1051,821],{"class":632},[533,1053,824],{"class":628},[533,1055,849],{"class":731},[533,1057,735],{"class":632},[533,1059,763],{"class":628},[533,1061,1062],{"class":542},"\u002Fusers\u002F:id",[533,1064,763],{"class":628},[533,1066,702],{"class":628},[533,1068,1069],{"class":786}," async",[533,1071,863],{"class":628},[533,1073,867],{"class":866},[533,1075,870],{"class":628},[533,1077,873],{"class":786},[533,1079,876],{"class":628},[533,1081,1082,1085,1088,1091,1093,1095,1097,1099,1101,1103,1105],{"class":535,"line":651},[533,1083,1084],{"class":786},"  const",[533,1086,1087],{"class":632}," log",[533,1089,1090],{"class":628}," =",[533,1092,932],{"class":632},[533,1094,824],{"class":628},[533,1096,849],{"class":731},[533,1098,735],{"class":744},[533,1100,763],{"class":628},[533,1102,893],{"class":542},[533,1104,763],{"class":628},[533,1106,775],{"class":744},[533,1108,1109,1111,1114,1116,1118,1120,1123,1125,1128,1130,1132,1135,1137],{"class":535,"line":672},[533,1110,1084],{"class":786},[533,1112,1113],{"class":632}," userId",[533,1115,1090],{"class":628},[533,1117,932],{"class":632},[533,1119,824],{"class":628},[533,1121,1122],{"class":632},"req",[533,1124,824],{"class":628},[533,1126,1127],{"class":731},"param",[533,1129,735],{"class":744},[533,1131,763],{"class":628},[533,1133,1134],{"class":542},"id",[533,1136,763],{"class":628},[533,1138,775],{"class":744},[533,1140,1141],{"class":535,"line":693},[533,1142,725],{"emptyLinePlaceholder":724},[533,1144,1145,1148,1150,1152,1154,1156,1159,1161,1163,1166,1168,1170,1172,1174],{"class":535,"line":721},[533,1146,1147],{"class":632},"  log",[533,1149,824],{"class":628},[533,1151,902],{"class":731},[533,1153,735],{"class":744},[533,1155,907],{"class":628},[533,1157,1158],{"class":744}," user",[533,1160,748],{"class":628},[533,1162,629],{"class":628},[533,1164,1165],{"class":744}," id",[533,1167,748],{"class":628},[533,1169,1113],{"class":632},[533,1171,636],{"class":628},[533,1173,636],{"class":628},[533,1175,775],{"class":744},[533,1177,1178],{"class":535,"line":728},[533,1179,725],{"emptyLinePlaceholder":724},[533,1181,1182,1184,1186,1188,1191,1194,1196,1199,1201,1204],{"class":535,"line":741},[533,1183,1084],{"class":786},[533,1185,1158],{"class":632},[533,1187,1090],{"class":628},[533,1189,1190],{"class":624}," await",[533,1192,1193],{"class":632}," db",[533,1195,824],{"class":628},[533,1197,1198],{"class":731},"findUser",[533,1200,735],{"class":744},[533,1202,1203],{"class":632},"userId",[533,1205,775],{"class":744},[533,1207,1208,1210,1212,1214,1216,1218,1220,1222,1224,1227,1229,1231,1233,1236,1238,1241,1243,1245,1247,1250,1252,1254],{"class":535,"line":769},[533,1209,1147],{"class":632},[533,1211,824],{"class":628},[533,1213,902],{"class":731},[533,1215,735],{"class":744},[533,1217,907],{"class":628},[533,1219,1158],{"class":744},[533,1221,748],{"class":628},[533,1223,629],{"class":628},[533,1225,1226],{"class":744}," name",[533,1228,748],{"class":628},[533,1230,1158],{"class":632},[533,1232,824],{"class":628},[533,1234,1235],{"class":632},"name",[533,1237,702],{"class":628},[533,1239,1240],{"class":744}," plan",[533,1242,748],{"class":628},[533,1244,1158],{"class":632},[533,1246,824],{"class":628},[533,1248,1249],{"class":632},"plan",[533,1251,636],{"class":628},[533,1253,636],{"class":628},[533,1255,775],{"class":744},[533,1257,1258],{"class":535,"line":778},[533,1259,725],{"emptyLinePlaceholder":724},[533,1261,1262,1264,1267,1269,1271,1273,1275,1278,1280,1282],{"class":535,"line":783},[533,1263,1084],{"class":786},[533,1265,1266],{"class":632}," orders",[533,1268,1090],{"class":628},[533,1270,1190],{"class":624},[533,1272,1193],{"class":632},[533,1274,824],{"class":628},[533,1276,1277],{"class":731},"findOrders",[533,1279,735],{"class":744},[533,1281,1203],{"class":632},[533,1283,775],{"class":744},[533,1285,1286,1288,1290,1292,1294,1296,1298,1300,1302,1305,1307,1309,1311,1314,1316,1319,1321,1324,1326,1329,1332,1334,1336],{"class":535,"line":813},[533,1287,1147],{"class":632},[533,1289,824],{"class":628},[533,1291,902],{"class":731},[533,1293,735],{"class":744},[533,1295,907],{"class":628},[533,1297,1266],{"class":744},[533,1299,748],{"class":628},[533,1301,629],{"class":628},[533,1303,1304],{"class":744}," count",[533,1306,748],{"class":628},[533,1308,1266],{"class":632},[533,1310,824],{"class":628},[533,1312,1313],{"class":632},"length",[533,1315,702],{"class":628},[533,1317,1318],{"class":744}," totalRevenue",[533,1320,748],{"class":628},[533,1322,1323],{"class":731}," sum",[533,1325,735],{"class":744},[533,1327,1328],{"class":632},"orders",[533,1330,1331],{"class":744},") ",[533,1333,772],{"class":628},[533,1335,636],{"class":628},[533,1337,775],{"class":744},[533,1339,1340],{"class":535,"line":818},[533,1341,725],{"emptyLinePlaceholder":724},[533,1343,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364],{"class":535,"line":837},[533,1345,929],{"class":624},[533,1347,932],{"class":632},[533,1349,824],{"class":628},[533,1351,937],{"class":731},[533,1353,735],{"class":744},[533,1355,907],{"class":628},[533,1357,1158],{"class":632},[533,1359,702],{"class":628},[533,1361,1266],{"class":632},[533,1363,636],{"class":628},[533,1365,775],{"class":744},[533,1367,1368,1370],{"class":535,"line":842},[533,1369,772],{"class":628},[533,1371,775],{"class":632},[445,1373,1374],{},"All fields are merged into a single wide event emitted when the request completes:",[523,1376,1379],{"className":525,"code":1377,"filename":1378,"language":528,"meta":529,"style":529},"14:58:15 INFO [my-api] GET \u002Fusers\u002Fusr_123 200 in 12ms\n  ├─ orders: count=2 totalRevenue=6298\n  ├─ user: id=usr_123 name=Alice plan=pro\n  └─ requestId: 4a8ff3a8-...\n","Terminal output",[449,1380,1381,1392,1412,1428],{"__ignoreMap":529},[533,1382,1383,1386,1389],{"class":535,"line":536},[533,1384,1385],{"class":539},"14:58:15",[533,1387,1388],{"class":542}," INFO",[533,1390,1391],{"class":632}," [my-api] GET \u002Fusers\u002Fusr_123 200 in 12ms\n",[533,1393,1394,1397,1400,1403,1406,1409],{"class":535,"line":651},[533,1395,1396],{"class":539},"  ├─",[533,1398,1399],{"class":542}," orders:",[533,1401,1402],{"class":542}," count=",[533,1404,1405],{"class":999},"2",[533,1407,1408],{"class":542}," totalRevenue=",[533,1410,1411],{"class":999},"6298\n",[533,1413,1414,1416,1419,1422,1425],{"class":535,"line":672},[533,1415,1396],{"class":539},[533,1417,1418],{"class":542}," user:",[533,1420,1421],{"class":542}," id=usr_123",[533,1423,1424],{"class":542}," name=Alice",[533,1426,1427],{"class":542}," plan=pro\n",[533,1429,1430,1433,1436],{"class":535,"line":693},[533,1431,1432],{"class":539},"  └─",[533,1434,1435],{"class":542}," requestId:",[533,1437,1438],{"class":542}," 4a8ff3a8-...\n",[445,1440,1441,1442,1447,1448,1450,1451,1457,1458,1461,1462,824],{},"Hono does not attach ",[1010,1443,1444],{},[449,1445,1446],{},"log.fork()"," yet (access the logger via ",[449,1449,455],{}," only). If you schedule async work after the response, post-emit ",[1010,1452,1453,1456],{},[449,1454,1455],{},"[evlog]"," warnings"," still help you notice stale ",[449,1459,1460],{},"set()"," calls. See ",[500,1463,1465],{"href":1464},"\u002Flearn\u002Fwide-events#after-emit-sealing-and-background-work","Wide events — After emit",[511,1467,1469],{"id":1468},"error-handling","Error Handling",[445,1471,1472,1473,1476,1477,1480,1481,1484,1485,1488],{},"Use ",[449,1474,1475],{},"createError"," for structured errors with ",[449,1478,1479],{},"why",", ",[449,1482,1483],{},"fix",", and ",[449,1486,1487],{},"link"," fields:",[523,1490,1492],{"className":614,"code":1491,"filename":616,"language":617,"meta":529,"style":529},"import { createError, parseError } from 'evlog'\n\napp.get('\u002Fcheckout', (c) => {\n  const log = c.get('log')\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  throw createError({\n    message: 'Payment failed',\n    status: 402,\n    why: 'Card declined by issuer',\n    fix: 'Try a different payment method',\n    link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n  })\n})\n",[449,1493,1494,1518,1522,1551,1575,1618,1622,1633,1650,1662,1678,1694,1710,1717],{"__ignoreMap":529},[533,1495,1496,1498,1500,1503,1505,1508,1510,1512,1514,1516],{"class":535,"line":536},[533,1497,625],{"class":624},[533,1499,629],{"class":628},[533,1501,1502],{"class":632}," createError",[533,1504,702],{"class":628},[533,1506,1507],{"class":632}," parseError",[533,1509,636],{"class":628},[533,1511,639],{"class":624},[533,1513,642],{"class":628},[533,1515,688],{"class":542},[533,1517,648],{"class":628},[533,1519,1520],{"class":535,"line":651},[533,1521,725],{"emptyLinePlaceholder":724},[533,1523,1524,1526,1528,1530,1532,1534,1537,1539,1541,1543,1545,1547,1549],{"class":535,"line":672},[533,1525,821],{"class":632},[533,1527,824],{"class":628},[533,1529,849],{"class":731},[533,1531,735],{"class":632},[533,1533,763],{"class":628},[533,1535,1536],{"class":542},"\u002Fcheckout",[533,1538,763],{"class":628},[533,1540,702],{"class":628},[533,1542,863],{"class":628},[533,1544,867],{"class":866},[533,1546,870],{"class":628},[533,1548,873],{"class":786},[533,1550,876],{"class":628},[533,1552,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573],{"class":535,"line":693},[533,1554,1084],{"class":786},[533,1556,1087],{"class":632},[533,1558,1090],{"class":628},[533,1560,932],{"class":632},[533,1562,824],{"class":628},[533,1564,849],{"class":731},[533,1566,735],{"class":744},[533,1568,763],{"class":628},[533,1570,893],{"class":542},[533,1572,763],{"class":628},[533,1574,775],{"class":744},[533,1576,1577,1579,1581,1583,1585,1587,1590,1592,1594,1597,1599,1602,1604,1607,1609,1612,1614,1616],{"class":535,"line":721},[533,1578,1147],{"class":632},[533,1580,824],{"class":628},[533,1582,902],{"class":731},[533,1584,735],{"class":744},[533,1586,907],{"class":628},[533,1588,1589],{"class":744}," cart",[533,1591,748],{"class":628},[533,1593,629],{"class":628},[533,1595,1596],{"class":744}," items",[533,1598,748],{"class":628},[533,1600,1601],{"class":999}," 3",[533,1603,702],{"class":628},[533,1605,1606],{"class":744}," total",[533,1608,748],{"class":628},[533,1610,1611],{"class":999}," 9999",[533,1613,636],{"class":628},[533,1615,636],{"class":628},[533,1617,775],{"class":744},[533,1619,1620],{"class":535,"line":728},[533,1621,725],{"emptyLinePlaceholder":724},[533,1623,1624,1627,1629,1631],{"class":535,"line":741},[533,1625,1626],{"class":624},"  throw",[533,1628,1502],{"class":731},[533,1630,735],{"class":744},[533,1632,738],{"class":628},[533,1634,1635,1638,1640,1642,1645,1647],{"class":535,"line":769},[533,1636,1637],{"class":744},"    message",[533,1639,748],{"class":628},[533,1641,642],{"class":628},[533,1643,1644],{"class":542},"Payment failed",[533,1646,763],{"class":628},[533,1648,1649],{"class":628},",\n",[533,1651,1652,1655,1657,1660],{"class":535,"line":778},[533,1653,1654],{"class":744},"    status",[533,1656,748],{"class":628},[533,1658,1659],{"class":999}," 402",[533,1661,1649],{"class":628},[533,1663,1664,1667,1669,1671,1674,1676],{"class":535,"line":783},[533,1665,1666],{"class":744},"    why",[533,1668,748],{"class":628},[533,1670,642],{"class":628},[533,1672,1673],{"class":542},"Card declined by issuer",[533,1675,763],{"class":628},[533,1677,1649],{"class":628},[533,1679,1680,1683,1685,1687,1690,1692],{"class":535,"line":813},[533,1681,1682],{"class":744},"    fix",[533,1684,748],{"class":628},[533,1686,642],{"class":628},[533,1688,1689],{"class":542},"Try a different payment method",[533,1691,763],{"class":628},[533,1693,1649],{"class":628},[533,1695,1696,1699,1701,1703,1706,1708],{"class":535,"line":818},[533,1697,1698],{"class":744},"    link",[533,1700,748],{"class":628},[533,1702,642],{"class":628},[533,1704,1705],{"class":542},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[533,1707,763],{"class":628},[533,1709,1649],{"class":628},[533,1711,1712,1715],{"class":535,"line":837},[533,1713,1714],{"class":628},"  }",[533,1716,775],{"class":744},[533,1718,1719,1721],{"class":535,"line":842},[533,1720,772],{"class":628},[533,1722,775],{"class":632},[445,1724,1725,1726,1729],{},"Handle errors globally with ",[449,1727,1728],{},"app.onError"," to return structured JSON responses:",[523,1731,1733],{"className":614,"code":1732,"filename":616,"language":617,"meta":529,"style":529},"import type { ContentfulStatusCode } from 'hono\u002Futils\u002Fhttp-status'\n\napp.onError((error, c) => {\n  c.get('log').error(error)\n  const parsed = parseError(error)\n\n  return c.json(\n    {\n      message: parsed.message,\n      why: parsed.why,\n      fix: parsed.fix,\n      link: parsed.link,\n    },\n    parsed.status as ContentfulStatusCode,\n  )\n})\n",[449,1734,1735,1757,1761,1787,1815,1832,1836,1849,1854,1870,1885,1900,1915,1920,1937,1942],{"__ignoreMap":529},[533,1736,1737,1739,1741,1743,1746,1748,1750,1752,1755],{"class":535,"line":536},[533,1738,625],{"class":624},[533,1740,705],{"class":624},[533,1742,629],{"class":628},[533,1744,1745],{"class":632}," ContentfulStatusCode",[533,1747,636],{"class":628},[533,1749,639],{"class":624},[533,1751,642],{"class":628},[533,1753,1754],{"class":542},"hono\u002Futils\u002Fhttp-status",[533,1756,648],{"class":628},[533,1758,1759],{"class":535,"line":651},[533,1760,725],{"emptyLinePlaceholder":724},[533,1762,1763,1765,1767,1770,1772,1774,1777,1779,1781,1783,1785],{"class":535,"line":672},[533,1764,821],{"class":632},[533,1766,824],{"class":628},[533,1768,1769],{"class":731},"onError",[533,1771,735],{"class":632},[533,1773,735],{"class":628},[533,1775,1776],{"class":866},"error",[533,1778,702],{"class":628},[533,1780,932],{"class":866},[533,1782,870],{"class":628},[533,1784,873],{"class":786},[533,1786,876],{"class":628},[533,1788,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813],{"class":535,"line":693},[533,1790,882],{"class":632},[533,1792,824],{"class":628},[533,1794,849],{"class":731},[533,1796,735],{"class":744},[533,1798,763],{"class":628},[533,1800,893],{"class":542},[533,1802,763],{"class":628},[533,1804,870],{"class":744},[533,1806,824],{"class":628},[533,1808,1776],{"class":731},[533,1810,735],{"class":744},[533,1812,1776],{"class":632},[533,1814,775],{"class":744},[533,1816,1817,1819,1822,1824,1826,1828,1830],{"class":535,"line":721},[533,1818,1084],{"class":786},[533,1820,1821],{"class":632}," parsed",[533,1823,1090],{"class":628},[533,1825,1507],{"class":731},[533,1827,735],{"class":744},[533,1829,1776],{"class":632},[533,1831,775],{"class":744},[533,1833,1834],{"class":535,"line":728},[533,1835,725],{"emptyLinePlaceholder":724},[533,1837,1838,1840,1842,1844,1846],{"class":535,"line":741},[533,1839,929],{"class":624},[533,1841,932],{"class":632},[533,1843,824],{"class":628},[533,1845,937],{"class":731},[533,1847,1848],{"class":744},"(\n",[533,1850,1851],{"class":535,"line":769},[533,1852,1853],{"class":628},"    {\n",[533,1855,1856,1859,1861,1863,1865,1868],{"class":535,"line":778},[533,1857,1858],{"class":744},"      message",[533,1860,748],{"class":628},[533,1862,1821],{"class":632},[533,1864,824],{"class":628},[533,1866,1867],{"class":632},"message",[533,1869,1649],{"class":628},[533,1871,1872,1875,1877,1879,1881,1883],{"class":535,"line":783},[533,1873,1874],{"class":744},"      why",[533,1876,748],{"class":628},[533,1878,1821],{"class":632},[533,1880,824],{"class":628},[533,1882,1479],{"class":632},[533,1884,1649],{"class":628},[533,1886,1887,1890,1892,1894,1896,1898],{"class":535,"line":813},[533,1888,1889],{"class":744},"      fix",[533,1891,748],{"class":628},[533,1893,1821],{"class":632},[533,1895,824],{"class":628},[533,1897,1483],{"class":632},[533,1899,1649],{"class":628},[533,1901,1902,1905,1907,1909,1911,1913],{"class":535,"line":818},[533,1903,1904],{"class":744},"      link",[533,1906,748],{"class":628},[533,1908,1821],{"class":632},[533,1910,824],{"class":628},[533,1912,1487],{"class":632},[533,1914,1649],{"class":628},[533,1916,1917],{"class":535,"line":837},[533,1918,1919],{"class":628},"    },\n",[533,1921,1922,1925,1927,1930,1933,1935],{"class":535,"line":842},[533,1923,1924],{"class":632},"    parsed",[533,1926,824],{"class":628},[533,1928,1929],{"class":632},"status",[533,1931,1932],{"class":624}," as",[533,1934,1745],{"class":539},[533,1936,1649],{"class":628},[533,1938,1939],{"class":535,"line":879},[533,1940,1941],{"class":744},"  )\n",[533,1943,1944,1946],{"class":535,"line":926},[533,1945,772],{"class":628},[533,1947,775],{"class":632},[445,1949,1950,1953,1954,1956,1957,1960,1961,1964,1965,1968],{},[449,1951,1952],{},"parseError()"," types ",[449,1955,1929],{}," as a ",[449,1958,1959],{},"number",", while Hono’s ",[449,1962,1963],{},"c.json()"," second argument expects ",[449,1966,1967],{},"ContentfulStatusCode",". The cast matches what you already return at runtime and satisfies TypeScript.",[445,1970,1971],{},"The error is captured and logged with both the custom context and structured error fields:",[523,1973,1975],{"className":525,"code":1974,"filename":1378,"language":528,"meta":529,"style":529},"14:58:20 ERROR [my-api] GET \u002Fcheckout 402 in 3ms\n  ├─ error: name=EvlogError message=Payment failed status=402\n  ├─ cart: items=3 total=9999\n  └─ requestId: 880a50ac-...\n",[449,1976,1977,1988,2010,2029],{"__ignoreMap":529},[533,1978,1979,1982,1985],{"class":535,"line":536},[533,1980,1981],{"class":539},"14:58:20",[533,1983,1984],{"class":542}," ERROR",[533,1986,1987],{"class":632}," [my-api] GET \u002Fcheckout 402 in 3ms\n",[533,1989,1990,1992,1995,1998,2001,2004,2007],{"class":535,"line":651},[533,1991,1396],{"class":539},[533,1993,1994],{"class":542}," error:",[533,1996,1997],{"class":542}," name=EvlogError",[533,1999,2000],{"class":542}," message=Payment",[533,2002,2003],{"class":542}," failed",[533,2005,2006],{"class":542}," status=",[533,2008,2009],{"class":999},"402\n",[533,2011,2012,2014,2017,2020,2023,2026],{"class":535,"line":672},[533,2013,1396],{"class":539},[533,2015,2016],{"class":542}," cart:",[533,2018,2019],{"class":542}," items=",[533,2021,2022],{"class":999},"3",[533,2024,2025],{"class":542}," total=",[533,2027,2028],{"class":999},"9999\n",[533,2030,2031,2033,2035],{"class":535,"line":693},[533,2032,1432],{"class":539},[533,2034,1435],{"class":542},[533,2036,2037],{"class":542}," 880a50ac-...\n",[511,2039,414],{"id":2040},"configuration",[445,2042,2043,2044,2047,2048,2050],{},"See the ",[500,2045,2046],{"href":415},"Configuration reference"," for all available options (",[449,2049,732],{},", middleware options, sampling, silent mode, etc.).",[511,2052,2054],{"id":2053},"drain-enrichers","Drain & Enrichers",[445,2056,2057],{},"Configure drain adapters and enrichers directly in the middleware options:",[523,2059,2061],{"className":614,"code":2060,"filename":616,"language":617,"meta":529,"style":529},"import { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createUserAgentEnricher } from 'evlog\u002Fenrichers'\n\nconst userAgent = createUserAgentEnricher()\n\napp.use(evlog({\n  drain: createAxiomDrain(),\n  enrich: (ctx) => {\n    userAgent(ctx)\n    ctx.event.region = process.env.FLY_REGION\n  },\n}))\n",[449,2062,2063,2083,2103,2107,2120,2124,2140,2154,2172,2183,2213,2218],{"__ignoreMap":529},[533,2064,2065,2067,2069,2072,2074,2076,2078,2081],{"class":535,"line":536},[533,2066,625],{"class":624},[533,2068,629],{"class":628},[533,2070,2071],{"class":632}," createAxiomDrain",[533,2073,636],{"class":628},[533,2075,639],{"class":624},[533,2077,642],{"class":628},[533,2079,2080],{"class":542},"evlog\u002Faxiom",[533,2082,648],{"class":628},[533,2084,2085,2087,2089,2092,2094,2096,2098,2101],{"class":535,"line":651},[533,2086,625],{"class":624},[533,2088,629],{"class":628},[533,2090,2091],{"class":632}," createUserAgentEnricher",[533,2093,636],{"class":628},[533,2095,639],{"class":624},[533,2097,642],{"class":628},[533,2099,2100],{"class":542},"evlog\u002Fenrichers",[533,2102,648],{"class":628},[533,2104,2105],{"class":535,"line":672},[533,2106,725],{"emptyLinePlaceholder":724},[533,2108,2109,2111,2114,2116,2118],{"class":535,"line":693},[533,2110,787],{"class":786},[533,2112,2113],{"class":632}," userAgent ",[533,2115,793],{"class":628},[533,2117,2091],{"class":731},[533,2119,810],{"class":632},[533,2121,2122],{"class":535,"line":721},[533,2123,725],{"emptyLinePlaceholder":724},[533,2125,2126,2128,2130,2132,2134,2136,2138],{"class":535,"line":728},[533,2127,821],{"class":632},[533,2129,824],{"class":628},[533,2131,827],{"class":731},[533,2133,735],{"class":632},[533,2135,688],{"class":731},[533,2137,735],{"class":632},[533,2139,738],{"class":628},[533,2141,2142,2145,2147,2149,2152],{"class":535,"line":741},[533,2143,2144],{"class":744},"  drain",[533,2146,748],{"class":628},[533,2148,2071],{"class":731},[533,2150,2151],{"class":632},"()",[533,2153,1649],{"class":628},[533,2155,2156,2159,2161,2163,2166,2168,2170],{"class":535,"line":769},[533,2157,2158],{"class":731},"  enrich",[533,2160,748],{"class":628},[533,2162,863],{"class":628},[533,2164,2165],{"class":866},"ctx",[533,2167,870],{"class":628},[533,2169,873],{"class":786},[533,2171,876],{"class":628},[533,2173,2174,2177,2179,2181],{"class":535,"line":778},[533,2175,2176],{"class":731},"    userAgent",[533,2178,735],{"class":744},[533,2180,2165],{"class":632},[533,2182,775],{"class":744},[533,2184,2185,2188,2190,2193,2195,2198,2200,2203,2205,2208,2210],{"class":535,"line":783},[533,2186,2187],{"class":632},"    ctx",[533,2189,824],{"class":628},[533,2191,2192],{"class":632},"event",[533,2194,824],{"class":628},[533,2196,2197],{"class":632},"region",[533,2199,1090],{"class":628},[533,2201,2202],{"class":632}," process",[533,2204,824],{"class":628},[533,2206,2207],{"class":632},"env",[533,2209,824],{"class":628},[533,2211,2212],{"class":632},"FLY_REGION\n",[533,2214,2215],{"class":535,"line":813},[533,2216,2217],{"class":628},"  },\n",[533,2219,2220,2222],{"class":535,"line":818},[533,2221,772],{"class":628},[533,2223,2224],{"class":632},"))\n",[515,2226,2228],{"id":2227},"pipeline-batching-retry","Pipeline (Batching & Retry)",[445,2230,2231,2232,2235],{},"For production, wrap your adapter with ",[449,2233,2234],{},"createDrainPipeline"," to batch events and retry on failure:",[523,2237,2239],{"className":614,"code":2238,"filename":616,"language":617,"meta":529,"style":529},"import type { DrainContext } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\napp.use(evlog({ drain }))\n",[449,2240,2241,2262,2280,2300,2304,2326,2355,2373,2379,2398,2402],{"__ignoreMap":529},[533,2242,2243,2245,2247,2249,2252,2254,2256,2258,2260],{"class":535,"line":536},[533,2244,625],{"class":624},[533,2246,705],{"class":624},[533,2248,629],{"class":628},[533,2250,2251],{"class":632}," DrainContext",[533,2253,636],{"class":628},[533,2255,639],{"class":624},[533,2257,642],{"class":628},[533,2259,688],{"class":542},[533,2261,648],{"class":628},[533,2263,2264,2266,2268,2270,2272,2274,2276,2278],{"class":535,"line":651},[533,2265,625],{"class":624},[533,2267,629],{"class":628},[533,2269,2071],{"class":632},[533,2271,636],{"class":628},[533,2273,639],{"class":624},[533,2275,642],{"class":628},[533,2277,2080],{"class":542},[533,2279,648],{"class":628},[533,2281,2282,2284,2286,2289,2291,2293,2295,2298],{"class":535,"line":672},[533,2283,625],{"class":624},[533,2285,629],{"class":628},[533,2287,2288],{"class":632}," createDrainPipeline",[533,2290,636],{"class":628},[533,2292,639],{"class":624},[533,2294,642],{"class":628},[533,2296,2297],{"class":542},"evlog\u002Fpipeline",[533,2299,648],{"class":628},[533,2301,2302],{"class":535,"line":693},[533,2303,725],{"emptyLinePlaceholder":724},[533,2305,2306,2308,2311,2313,2315,2317,2320,2322,2324],{"class":535,"line":721},[533,2307,787],{"class":786},[533,2309,2310],{"class":632}," pipeline ",[533,2312,793],{"class":628},[533,2314,2288],{"class":731},[533,2316,801],{"class":628},[533,2318,2319],{"class":539},"DrainContext",[533,2321,807],{"class":628},[533,2323,735],{"class":632},[533,2325,738],{"class":628},[533,2327,2328,2331,2333,2335,2338,2340,2343,2345,2348,2350,2353],{"class":535,"line":728},[533,2329,2330],{"class":744},"  batch",[533,2332,748],{"class":628},[533,2334,629],{"class":628},[533,2336,2337],{"class":744}," size",[533,2339,748],{"class":628},[533,2341,2342],{"class":999}," 50",[533,2344,702],{"class":628},[533,2346,2347],{"class":744}," intervalMs",[533,2349,748],{"class":628},[533,2351,2352],{"class":999}," 5000",[533,2354,766],{"class":628},[533,2356,2357,2360,2362,2364,2367,2369,2371],{"class":535,"line":741},[533,2358,2359],{"class":744},"  retry",[533,2361,748],{"class":628},[533,2363,629],{"class":628},[533,2365,2366],{"class":744}," maxAttempts",[533,2368,748],{"class":628},[533,2370,1601],{"class":999},[533,2372,766],{"class":628},[533,2374,2375,2377],{"class":535,"line":769},[533,2376,772],{"class":628},[533,2378,775],{"class":632},[533,2380,2381,2383,2386,2388,2391,2393,2396],{"class":535,"line":778},[533,2382,787],{"class":786},[533,2384,2385],{"class":632}," drain ",[533,2387,793],{"class":628},[533,2389,2390],{"class":731}," pipeline",[533,2392,735],{"class":632},[533,2394,2395],{"class":731},"createAxiomDrain",[533,2397,834],{"class":632},[533,2399,2400],{"class":535,"line":783},[533,2401,725],{"emptyLinePlaceholder":724},[533,2403,2404,2406,2408,2410,2412,2414,2416,2418,2420,2422],{"class":535,"line":813},[533,2405,821],{"class":632},[533,2407,824],{"class":628},[533,2409,827],{"class":731},[533,2411,735],{"class":632},[533,2413,688],{"class":731},[533,2415,735],{"class":632},[533,2417,907],{"class":628},[533,2419,2385],{"class":632},[533,2421,772],{"class":628},[533,2423,2224],{"class":632},[1006,2425,2426,2427,2430,2431,2434],{"color":1008,"icon":13},"Call ",[449,2428,2429],{},"drain.flush()"," on server shutdown to ensure all buffered events are sent. See the ",[500,2432,2433],{"href":405},"Pipeline docs"," for all options.",[511,2436,2438],{"id":2437},"tail-sampling","Tail Sampling",[445,2440,1472,2441,2444],{},[449,2442,2443],{},"keep"," to force-retain specific events regardless of head sampling:",[523,2446,2448],{"className":614,"code":2447,"filename":616,"language":617,"meta":529,"style":529},"app.use(evlog({\n  drain: createAxiomDrain(),\n  keep: (ctx) => {\n    if (ctx.duration && ctx.duration > 2000) ctx.shouldKeep = true\n  },\n}))\n",[449,2449,2450,2466,2478,2495,2539,2543],{"__ignoreMap":529},[533,2451,2452,2454,2456,2458,2460,2462,2464],{"class":535,"line":536},[533,2453,821],{"class":632},[533,2455,824],{"class":628},[533,2457,827],{"class":731},[533,2459,735],{"class":632},[533,2461,688],{"class":731},[533,2463,735],{"class":632},[533,2465,738],{"class":628},[533,2467,2468,2470,2472,2474,2476],{"class":535,"line":651},[533,2469,2144],{"class":744},[533,2471,748],{"class":628},[533,2473,2071],{"class":731},[533,2475,2151],{"class":632},[533,2477,1649],{"class":628},[533,2479,2480,2483,2485,2487,2489,2491,2493],{"class":535,"line":672},[533,2481,2482],{"class":731},"  keep",[533,2484,748],{"class":628},[533,2486,863],{"class":628},[533,2488,2165],{"class":866},[533,2490,870],{"class":628},[533,2492,873],{"class":786},[533,2494,876],{"class":628},[533,2496,2497,2500,2502,2504,2506,2509,2512,2515,2517,2519,2522,2525,2527,2529,2531,2534,2536],{"class":535,"line":693},[533,2498,2499],{"class":624},"    if",[533,2501,863],{"class":744},[533,2503,2165],{"class":632},[533,2505,824],{"class":628},[533,2507,2508],{"class":632},"duration",[533,2510,2511],{"class":628}," &&",[533,2513,2514],{"class":632}," ctx",[533,2516,824],{"class":628},[533,2518,2508],{"class":632},[533,2520,2521],{"class":628}," >",[533,2523,2524],{"class":999}," 2000",[533,2526,1331],{"class":744},[533,2528,2165],{"class":632},[533,2530,824],{"class":628},[533,2532,2533],{"class":632},"shouldKeep",[533,2535,1090],{"class":628},[533,2537,2538],{"class":949}," true\n",[533,2540,2541],{"class":535,"line":721},[533,2542,2217],{"class":628},[533,2544,2545,2547],{"class":535,"line":728},[533,2546,772],{"class":628},[533,2548,2224],{"class":632},[511,2550,2552],{"id":2551},"route-filtering","Route Filtering",[445,2554,2555,2556,2559,2560,2563],{},"Control which routes are logged with ",[449,2557,2558],{},"include"," and ",[449,2561,2562],{},"exclude"," patterns:",[523,2565,2567],{"className":614,"code":2566,"filename":616,"language":617,"meta":529,"style":529},"app.use(evlog({\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002F_internal\u002F**', '\u002Fhealth'],\n  routes: {\n    '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n    '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n  },\n}))\n",[449,2568,2569,2585,2607,2635,2644,2671,2697,2701],{"__ignoreMap":529},[533,2570,2571,2573,2575,2577,2579,2581,2583],{"class":535,"line":536},[533,2572,821],{"class":632},[533,2574,824],{"class":628},[533,2576,827],{"class":731},[533,2578,735],{"class":632},[533,2580,688],{"class":731},[533,2582,735],{"class":632},[533,2584,738],{"class":628},[533,2586,2587,2590,2592,2595,2597,2600,2602,2605],{"class":535,"line":651},[533,2588,2589],{"class":744},"  include",[533,2591,748],{"class":628},[533,2593,2594],{"class":632}," [",[533,2596,763],{"class":628},[533,2598,2599],{"class":542},"\u002Fapi\u002F**",[533,2601,763],{"class":628},[533,2603,2604],{"class":632},"]",[533,2606,1649],{"class":628},[533,2608,2609,2612,2614,2616,2618,2621,2623,2625,2627,2629,2631,2633],{"class":535,"line":672},[533,2610,2611],{"class":744},"  exclude",[533,2613,748],{"class":628},[533,2615,2594],{"class":632},[533,2617,763],{"class":628},[533,2619,2620],{"class":542},"\u002F_internal\u002F**",[533,2622,763],{"class":628},[533,2624,702],{"class":628},[533,2626,642],{"class":628},[533,2628,856],{"class":542},[533,2630,763],{"class":628},[533,2632,2604],{"class":632},[533,2634,1649],{"class":628},[533,2636,2637,2640,2642],{"class":535,"line":693},[533,2638,2639],{"class":744},"  routes",[533,2641,748],{"class":628},[533,2643,876],{"class":628},[533,2645,2646,2649,2652,2654,2656,2658,2660,2662,2664,2667,2669],{"class":535,"line":721},[533,2647,2648],{"class":628},"    '",[533,2650,2651],{"class":744},"\u002Fapi\u002Fauth\u002F**",[533,2653,763],{"class":628},[533,2655,748],{"class":628},[533,2657,629],{"class":628},[533,2659,753],{"class":744},[533,2661,748],{"class":628},[533,2663,642],{"class":628},[533,2665,2666],{"class":542},"auth-service",[533,2668,763],{"class":628},[533,2670,766],{"class":628},[533,2672,2673,2675,2678,2680,2682,2684,2686,2688,2690,2693,2695],{"class":535,"line":728},[533,2674,2648],{"class":628},[533,2676,2677],{"class":744},"\u002Fapi\u002Fpayment\u002F**",[533,2679,763],{"class":628},[533,2681,748],{"class":628},[533,2683,629],{"class":628},[533,2685,753],{"class":744},[533,2687,748],{"class":628},[533,2689,642],{"class":628},[533,2691,2692],{"class":542},"payment-service",[533,2694,763],{"class":628},[533,2696,766],{"class":628},[533,2698,2699],{"class":535,"line":741},[533,2700,2217],{"class":628},[533,2702,2703,2705],{"class":535,"line":769},[533,2704,772],{"class":628},[533,2706,2224],{"class":632},[511,2708,2710],{"id":2709},"client-side-logging","Client-Side Logging",[445,2712,1472,2713,2716],{},[449,2714,2715],{},"evlog\u002Fhttp"," to send structured logs from any frontend to your Hono server. This works with any client framework (React, Vue, Svelte, vanilla JS).",[515,2718,2720],{"id":2719},"browser-setup","Browser setup",[523,2722,2725],{"className":614,"code":2723,"filename":2724,"language":617,"meta":529,"style":529},"import { initLogger, log } from 'evlog'\nimport { createHttpLogDrain } from 'evlog\u002Fhttp'\n\nconst drain = createHttpLogDrain({\n  drain: { endpoint: '\u002Fv1\u002Fingest' },\n})\ninitLogger({ drain })\n\nlog.info({ action: 'page_view', path: location.pathname })\n","client.ts",[449,2726,2727,2749,2768,2772,2786,2808,2814,2828,2832],{"__ignoreMap":529},[533,2728,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747],{"class":535,"line":536},[533,2730,625],{"class":624},[533,2732,629],{"class":628},[533,2734,679],{"class":632},[533,2736,702],{"class":628},[533,2738,1087],{"class":632},[533,2740,636],{"class":628},[533,2742,639],{"class":624},[533,2744,642],{"class":628},[533,2746,688],{"class":542},[533,2748,648],{"class":628},[533,2750,2751,2753,2755,2758,2760,2762,2764,2766],{"class":535,"line":651},[533,2752,625],{"class":624},[533,2754,629],{"class":628},[533,2756,2757],{"class":632}," createHttpLogDrain",[533,2759,636],{"class":628},[533,2761,639],{"class":624},[533,2763,642],{"class":628},[533,2765,2715],{"class":542},[533,2767,648],{"class":628},[533,2769,2770],{"class":535,"line":672},[533,2771,725],{"emptyLinePlaceholder":724},[533,2773,2774,2776,2778,2780,2782,2784],{"class":535,"line":693},[533,2775,787],{"class":786},[533,2777,2385],{"class":632},[533,2779,793],{"class":628},[533,2781,2757],{"class":731},[533,2783,735],{"class":632},[533,2785,738],{"class":628},[533,2787,2788,2790,2792,2794,2797,2799,2801,2804,2806],{"class":535,"line":721},[533,2789,2144],{"class":744},[533,2791,748],{"class":628},[533,2793,629],{"class":628},[533,2795,2796],{"class":744}," endpoint",[533,2798,748],{"class":628},[533,2800,642],{"class":628},[533,2802,2803],{"class":542},"\u002Fv1\u002Fingest",[533,2805,763],{"class":628},[533,2807,766],{"class":628},[533,2809,2810,2812],{"class":535,"line":728},[533,2811,772],{"class":628},[533,2813,775],{"class":632},[533,2815,2816,2818,2820,2822,2824,2826],{"class":535,"line":741},[533,2817,732],{"class":731},[533,2819,735],{"class":632},[533,2821,907],{"class":628},[533,2823,2385],{"class":632},[533,2825,772],{"class":628},[533,2827,775],{"class":632},[533,2829,2830],{"class":535,"line":769},[533,2831,725],{"emptyLinePlaceholder":724},[533,2833,2834,2836,2838,2840,2842,2844,2847,2849,2851,2854,2856,2858,2861,2863,2866,2868,2871,2873],{"class":535,"line":778},[533,2835,893],{"class":632},[533,2837,824],{"class":628},[533,2839,1008],{"class":731},[533,2841,735],{"class":632},[533,2843,907],{"class":628},[533,2845,2846],{"class":744}," action",[533,2848,748],{"class":628},[533,2850,642],{"class":628},[533,2852,2853],{"class":542},"page_view",[533,2855,763],{"class":628},[533,2857,702],{"class":628},[533,2859,2860],{"class":744}," path",[533,2862,748],{"class":628},[533,2864,2865],{"class":632}," location",[533,2867,824],{"class":628},[533,2869,2870],{"class":632},"pathname ",[533,2872,772],{"class":628},[533,2874,775],{"class":632},[515,2876,2878],{"id":2877},"ingest-endpoint","Ingest endpoint",[445,2880,2881,2882,2885],{},"Add a POST route to receive batched ",[449,2883,2884],{},"DrainContext[]"," from the browser:",[523,2887,2889],{"className":614,"code":2888,"filename":616,"language":617,"meta":529,"style":529},"import type { DrainContext } from 'evlog'\n\napp.post('\u002Fv1\u002Fingest', async (c) => {\n  const batch = await c.req.json\u003CDrainContext[]>()\n  for (const ctx of batch) {\n    console.log('[BROWSER]', JSON.stringify(ctx.event))\n  }\n  return c.body(null, 204)\n})\n",[449,2890,2891,2911,2915,2946,2978,2998,3036,3041,3062],{"__ignoreMap":529},[533,2892,2893,2895,2897,2899,2901,2903,2905,2907,2909],{"class":535,"line":536},[533,2894,625],{"class":624},[533,2896,705],{"class":624},[533,2898,629],{"class":628},[533,2900,2251],{"class":632},[533,2902,636],{"class":628},[533,2904,639],{"class":624},[533,2906,642],{"class":628},[533,2908,688],{"class":542},[533,2910,648],{"class":628},[533,2912,2913],{"class":535,"line":651},[533,2914,725],{"emptyLinePlaceholder":724},[533,2916,2917,2919,2921,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944],{"class":535,"line":672},[533,2918,821],{"class":632},[533,2920,824],{"class":628},[533,2922,2923],{"class":731},"post",[533,2925,735],{"class":632},[533,2927,763],{"class":628},[533,2929,2803],{"class":542},[533,2931,763],{"class":628},[533,2933,702],{"class":628},[533,2935,1069],{"class":786},[533,2937,863],{"class":628},[533,2939,867],{"class":866},[533,2941,870],{"class":628},[533,2943,873],{"class":786},[533,2945,876],{"class":628},[533,2947,2948,2950,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2974,2976],{"class":535,"line":693},[533,2949,1084],{"class":786},[533,2951,2952],{"class":632}," batch",[533,2954,1090],{"class":628},[533,2956,1190],{"class":624},[533,2958,932],{"class":632},[533,2960,824],{"class":628},[533,2962,1122],{"class":632},[533,2964,824],{"class":628},[533,2966,937],{"class":731},[533,2968,801],{"class":628},[533,2970,2319],{"class":539},[533,2972,2973],{"class":744},"[]",[533,2975,807],{"class":628},[533,2977,810],{"class":744},[533,2979,2980,2983,2985,2987,2989,2992,2994,2996],{"class":535,"line":721},[533,2981,2982],{"class":624},"  for",[533,2984,863],{"class":744},[533,2986,787],{"class":786},[533,2988,2514],{"class":632},[533,2990,2991],{"class":628}," of",[533,2993,2952],{"class":632},[533,2995,1331],{"class":744},[533,2997,738],{"class":628},[533,2999,3000,3003,3005,3007,3009,3011,3014,3016,3018,3021,3023,3026,3028,3030,3032,3034],{"class":535,"line":728},[533,3001,3002],{"class":632},"    console",[533,3004,824],{"class":628},[533,3006,893],{"class":731},[533,3008,735],{"class":744},[533,3010,763],{"class":628},[533,3012,3013],{"class":542},"[BROWSER]",[533,3015,763],{"class":628},[533,3017,702],{"class":628},[533,3019,3020],{"class":632}," JSON",[533,3022,824],{"class":628},[533,3024,3025],{"class":731},"stringify",[533,3027,735],{"class":744},[533,3029,2165],{"class":632},[533,3031,824],{"class":628},[533,3033,2192],{"class":632},[533,3035,2224],{"class":744},[533,3037,3038],{"class":535,"line":741},[533,3039,3040],{"class":628},"  }\n",[533,3042,3043,3045,3047,3049,3052,3054,3057,3060],{"class":535,"line":769},[533,3044,929],{"class":624},[533,3046,932],{"class":632},[533,3048,824],{"class":628},[533,3050,3051],{"class":731},"body",[533,3053,735],{"class":744},[533,3055,3056],{"class":628},"null,",[533,3058,3059],{"class":999}," 204",[533,3061,775],{"class":744},[533,3063,3064,3066],{"class":535,"line":778},[533,3065,772],{"class":628},[533,3067,775],{"class":632},[1006,3069,3072,3073,3076],{"color":3070,"icon":3071},"neutral","i-lucide-globe","See the full ",[500,3074,3075],{"href":405},"HTTP drain"," adapter docs for batching, retry, sendBeacon fallback, and authentication options.",[511,3078,3080],{"id":3079},"run-locally","Run Locally",[523,3082,3085],{"className":525,"code":3083,"filename":3084,"language":528,"meta":529,"style":529},"git clone https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\ncd evlog\npnpm install\npnpm run example:hono\n","Terminal",[449,3086,3087,3098,3106,3113],{"__ignoreMap":529},[533,3088,3089,3092,3095],{"class":535,"line":536},[533,3090,3091],{"class":539},"git",[533,3093,3094],{"class":542}," clone",[533,3096,3097],{"class":542}," https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\n",[533,3099,3100,3103],{"class":535,"line":651},[533,3101,3102],{"class":731},"cd",[533,3104,3105],{"class":542}," evlog\n",[533,3107,3108,3110],{"class":535,"line":672},[533,3109,527],{"class":539},[533,3111,3112],{"class":542}," install\n",[533,3114,3115,3117,3120],{"class":535,"line":693},[533,3116,527],{"class":539},[533,3118,3119],{"class":542}," run",[533,3121,3122],{"class":542}," example:hono\n",[445,3124,3125,3126,3130],{},"Open ",[500,3127,3128],{"href":3128,"rel":3129},"http:\u002F\u002Flocalhost:3000",[504]," to explore the interactive test UI.",[3132,3133,3134],"card-group",{},[3135,3136,3140],"card",{"icon":3137,"title":3138,"to":3139},"i-simple-icons-github","Source Code","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fhono","Browse the complete Hono example source on GitHub.",[511,3142,3144],{"id":3143},"next-steps","Next Steps",[445,3146,3147,3148,3150],{},"Deepen your ",[1010,3149,202],{}," integration:",[466,3152,3153,3158,3163,3168],{},[469,3154,3155,3157],{},[500,3156,46],{"href":47},": Design comprehensive events with context layering",[469,3159,3160,3162],{},[500,3161,90],{"href":95},": Send logs to Axiom, Sentry, PostHog, and more",[469,3164,3165,3167],{},[500,3166,61],{"href":62},": Control log volume with head and tail sampling",[469,3169,3170,3172,3173,1480,3175,1484,3177,3179],{},[500,3171,51],{"href":52},": Throw errors with ",[449,3174,1479],{},[449,3176,1483],{},[449,3178,1487],{}," fields",[3181,3182,3183],"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 .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":529,"searchDepth":651,"depth":651,"links":3185},[3186,3190,3191,3192,3193,3196,3197,3198,3202,3203],{"id":513,"depth":651,"text":25,"children":3187},[3188,3189],{"id":517,"depth":672,"text":518},{"id":610,"depth":672,"text":611},{"id":1039,"depth":651,"text":46},{"id":1468,"depth":651,"text":1469},{"id":2040,"depth":651,"text":414},{"id":2053,"depth":651,"text":2054,"children":3194},[3195],{"id":2227,"depth":672,"text":2228},{"id":2437,"depth":651,"text":2438},{"id":2551,"depth":651,"text":2552},{"id":2709,"depth":651,"text":2710,"children":3199},[3200,3201],{"id":2719,"depth":672,"text":2720},{"id":2877,"depth":672,"text":2878},{"id":3079,"depth":651,"text":3080},{"id":3143,"depth":651,"text":3144},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Hono applications.","md",[3207],{"label":3138,"icon":3137,"to":3139,"color":3070,"variant":3208},"subtle",{},{"title":202,"icon":205},{"title":202,"description":3204},"kJIGWQNoKM9xTKU6Mh3q8wJ3Pq0bTRgCUlaCqSjNs6A",[3214,3216],{"title":197,"path":198,"stem":199,"description":3215,"icon":200,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Express applications.",{"title":207,"path":208,"stem":209,"description":3217,"icon":210,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in Fastify applications.",1779694505402]