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