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